Create, bind and rotate API keys
A key proves which tenant is calling and which channels it may use. It is shown in full once, and a key with no binding cannot send at all.
Read this article →There are two counters, they are not the same number, and only one of them looks like a bill.
Every path that submits — API, console, bulk, scheduled — draws on one tenant-level budget. Over the limit returns HTTP 429 with code 42900, and the client is expected to back off.
| Plan | Reqs/sec | Channels | Log retention |
|---|---|---|---|
| FREE | 10 | 1 | 7 days |
| GROWTH | 50 | 3 | 7 days |
| PRO | 100 | 10 | 30 days |
| ULTRA | 500 | unlimited | 90 days |
An edge limiter also runs, keyed on client IP and set far above any plan tier. It exists to absorb abnormal traffic rather than to shape normal use.
It returns the same HTTP 429 and the same code 42900, so distinguish it by the message text: the edge limiter's message begins with "edge rate limit exceeded".
The usage endpoint reports both, and they will never be equal.
| Field | What it counts |
|---|---|
| messageCount | How many times you submitted |
| billedSegments | How many billable messages you produced — long messages count as more than one, and only provider-accepted ones count |
| period | Billing period key, UTC yyyyMM |
| plan / qps | Current plan and its submission ceiling; zero or less means unlimited |
A single logical message can bill as several segments once it crosses the encoding limit, and that limit depends on the alphabet used. Non-GSM characters move the whole message to a wider encoding with a smaller per-segment budget.
The platform does not store message bodies, so segments cannot be recomputed after the fact. The segment count returned with each message is the only record — reconcile from it, not from the text.
A key proves which tenant is calling and which channels it may use. It is shown in full once, and a key with no binding cannot send at all.
Read this article →One endpoint accepts asynchronously. A success code means the platform took the message — not that a handset received it.
Read this article →Four states, and one of them does not belong in the same bucket as the others. Reading suppressed as a failure sends you looking in the wrong place.
Read this article →