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 →The log answers "what happened to this one message" — without storing anyone's content.
The log is built for operations and reconciliation, which is why it keeps metadata rather than traffic.
Start with the window around the send, then add the recipient number.
This is the fastest way to isolate a single conversation, including its duplicates.
Use the status filter to separate suppressed from failed, and the provider filter to see whether one channel is behaving differently.
The detail view shows the full status history, raw provider wording and the error code, if any.
A comparison card aggregates your own channels side by side — submit success rate, delivery rate and latency. It is the quickest way to see that one provider account is underperforming before it shows up in customer complaints.
Exports run asynchronously and are truncated at 1,000,000 rows. A truncated export is reported as truncated rather than silently shortened, so check that flag before treating a file as complete.
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 →