Skip to content

Limits and test numbers ​

Español: Límites y números de prueba.

Two things a new developer account needs to know: which limits apply to it and how they rise, and which numbers to use while you test.

Trust levels ​

An account created through the public sign-up starts at the lowest level and rises with data: days since activation, cumulative amount paid and verification. A public sign-up that has not verified a phone does not rise above the lowest level (POST /v1/phone_verification sends a six-digit SMS code, POST /v1/phone_verification/check redeems it, GET /v1/phone_verification reads the state). A platform operator can raise or lower a level by hand; a manual lowering stops the automatic rise until an operator raises it again.

The starting catalogue, as shipped in core v0.151.0:

LevelNameCalls per secondSimultaneous channelsDaily spend cap (USD)Cap per call (USD)DestinationsTo reach it
0new12102domestic—
1established35505domestic7 days and 50 USD paid
2verified102050010domestic, international30 days, 500 USD paid and verification
3trusted301005,00025domestic, international, premium90 days, 5,000 USD paid and verification

These figures are platform data, not constants: the platform adjusts them as it learns, so treat the table as the starting point. A subaccount carries its own ceilings (max_cps, max_concurrent_channels, daily_spend_cap_usd) and the effective limit is always the lower of its own and its parent's (effective_limits; a value above the parent's is 422 exceeds_parent_limit).

Limits are not the only brake. Request rates per key (429 rate_limited) are in Rate limits & caps, and compliance gates apply to every real call whatever the level — see Errors & compliance.

Test numbers ​

With a dd_test_ key, POST /v1/dial/manual (number) and POST /v1/sms/messages (to, body) answer a deterministic simulated result chosen by the destination:

NumberCall statusSMS status
+13125550100completeddelivered
+13125550101busyundelivered
+13125550102no_answersent
+13125550103failedfailed
  • Any other destination is 422 unknown_test_number.
  • Records are read at GET /v1/sandbox/records (kind=call|sms, limit 1–200), newest first, apart from the real CDR (/v1/reports/cdr and /v1/sms/messages never include them).
  • A simulated call also queues call.answered (answered only) and call.ended to your subscribed endpoints, signed like a real delivery, with livemode: false and environment: "test". SMS has no webhook.
  • Nothing is metered or charged, and the routes that reach a carrier, buy numbers or mint a live credential answer 403 test_environment.

Walk-through: hosted quickstart. Every error code above is in the error index.

Nothing in these docs is legal advice — always confirm compliance posture with your own counsel.