otp/docs

Errors

Errors return the matching HTTP status and a JSON body with a stable error code and a human-readable message.

Errors return the matching HTTP status and a JSON body with a stable error code and a human-readable message.

error response
{
  "error": "insufficient_balance",
  "message": "Wallet balance 0.20 is below the price 0.65."
}

Codes

StatusErrorMeaning
401unauthorizedMissing, revoked, or expired API key.
400invalid_requestMalformed body or unknown service/country.
402insufficient_balanceYour wallet can't cover the price. Top up and retry.
402price_exceededThe live price rose above your max_price. Re-check /v1/prices.
404out_of_stockNo numbers available for that service + country right now.
404not_foundUnknown activation id.
429rate_limitedRate limit or concurrency cap hit. See X-RateLimit-Reset.
500server_errorTemporary server error — retry with backoff.

Retrying

429 and 5xx are safe to retry with exponential backoff. Never retry a 4xx other than 429 without changing the request — a failed buy charges nothing, so you can safely re-create the activation.

On this page