SIMUB

SIMUB activation API

Integrate SIMUB SMS and temporary mail activations with documented authentication, lifecycle, error handling and safe server-side examples.

Authentication and endpoint choice

Protected requests use the API key associated with your verified SIMUB account. Send it only over HTTPS and keep it in a server-side secret store or environment variable; never embed it in client code, a public repository or a screenshot. The SMSHub-compatible handler receives action as a parameter, while SIMUB SMS routes put it in the path. Choose one interface and parse its documented response format.

  • Use /stubs/handler_api.php for an existing SMSHub-style client that sends action, api_key and action-specific parameters.
  • Use /api/sms/{action} when a direct SIMUB SMS route better fits your server application.
  • Use the dedicated /api/mail endpoints for temporary mail; SMS activation identifiers and mail identifiers are separate.

Discover services, countries, prices and balance first

Call getBalance for available funds, getServices or getServicesList for current service codes, and getCountries for supported country codes. Choose getPrices, getPricesV2 or getPricesV3 for the response shape your integration expects. Catalogs, counts and prices are provider snapshots: cache them briefly, display the returned price when relevant and revalidate before purchase. Never invent a code from a visible label.

Core SMS activation lifecycle

A purchase and a status check are different operations. Persist the activation identifier immediately so an application timeout does not lose a reserved number.

  • Select a documented service and country, inspect current price and stock, then call getNumber, getNumberV2 or getNumberV3 once.
  • Parse ACCESS_NUMBER:ID:NUMBER or the documented JSON equivalent and store the activation ID with your internal request reference.
  • Poll getStatus with that ID. STATUS_WAIT_CODE means the request is still waiting; STATUS_OK:CODE contains a received code.
  • Use setStatus only for a transition allowed by the reference: 1 ready, 3 request another SMS, 6 complete or 8 cancel. Do not reuse the number for another service.

Statuses, errors and uncertain requests

SMSHub-compatible actions can return text tokens, while newer routes may return JSON. Correct or rotate a BAD_KEY credential instead of retrying. BAD_SERVICE means an action or service is unsupported. NO_BALANCE requires funding; NO_NUMBERS means no matching offer is currently available; BAD_STATUS marks an invalid transition. After a timeout, reset or server error on getNumber, reconcile through the stored activation or status before purchasing again. A blind retry can create a duplicate reservation.

Temporary mail activation flow

Mail activation has separate routes and JSON responses. Query getPriceRests, getPrices or getRests for services, domains, prices and stock. Call getActivation with documented values and persist the returned mailId. Use getStatus for the lifecycle and getCode for a received code. setStatus and requestRefund must follow the current state and published policy; a refund request does not mean every case qualifies. A temporary mailbox is not a permanent inbox or safe recovery address.

Safe request examples

The placeholders below are intentionally not real credentials. Replace them only inside your protected server environment. The examples use curl with separate encoded parameters so values are not manually concatenated into a URL.

  • Balance: curl --get 'https://api.simub.com/stubs/handler_api.php' --data-urlencode 'api_key=YOUR_API_KEY' --data-urlencode 'action=getBalance'
  • Reserve: curl --get 'https://api.simub.com/stubs/handler_api.php' --data-urlencode 'api_key=YOUR_API_KEY' --data-urlencode 'action=getNumber' --data-urlencode 'service=tg' --data-urlencode 'country=0'
  • Read SMS status: curl --get 'https://api.simub.com/stubs/handler_api.php' --data-urlencode 'api_key=YOUR_API_KEY' --data-urlencode 'action=getStatus' --data-urlencode 'id=ACTIVATION_ID'
  • Read mail status: curl --get 'https://simub.com/api/mail/getStatus' --data-urlencode 'api_key=YOUR_API_KEY' --data-urlencode 'id=MAIL_ACTIVATION_ID'

Reliability, security and responsible use

Set finite timeouts, use bounded exponential backoff for status polling and stop at a terminal state. Redact api_key, phone numbers, addresses and received codes from logs. Validate responses, limit concurrent purchases and alert on repeated authentication or balance errors. Use SIMUB only when you may verify the destination account and its platform permits the flow. Provider stock, networks and filtering change, so neither availability nor code delivery is guaranteed by a response or past statistics.

Frequently asked questions

Where should I store my SIMUB API key?

Store it in a server-side secret manager or protected environment variable. Restrict access, rotate it if exposed, redact it from logs and never send it to untrusted client code.

How often should getStatus be called?

Poll at a moderate interval with bounded backoff and stop on a terminal response. Avoid tight loops: they add load without making the provider or destination network deliver a message faster.

Does a successful number reservation guarantee an SMS code?

No. A reservation confirms that a number was allocated, not that the destination platform will send or accept a message. Delivery depends on external providers, networks and platform rules.

Can I retry getNumber after a timeout?

First determine whether the original request created an activation by consulting your stored IDs, history or status workflow. Retry only when you have ruled out an existing reservation, to avoid duplicate charges.