API and delivery

Find a message in the log

The log answers "what happened to this one message" — without storing anyone's content.

4 min read · updated 2026-10-13

What the log stores

The log is built for operations and reconciliation, which is why it keeps metadata rather than traffic.

  • Time, destination number, tenant, provider, sender, normalised status, provider message ID and raw error code.
  • The batch or campaign a message belonged to, when there was one.
Scope. Message bodies are never persisted — for compliance, and because the platform does not need them to deliver. Retention is plan-based: 7 days on Free and Growth, 30 on Pro, 90 on Ultra. Past that window records are deleted by a TTL index, so export anything you must keep.

Filter the log

  1. Narrow by time first

    Start with the window around the send, then add the recipient number.

  2. Add the recipient number

    This is the fastest way to isolate a single conversation, including its duplicates.

  3. Add provider or status

    Use the status filter to separate suppressed from failed, and the provider filter to see whether one channel is behaving differently.

  4. Open one message

    The detail view shows the full status history, raw provider wording and the error code, if any.

Channel comparison

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.

Export

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.

Keep reading

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 →

Send a message with the API

One endpoint accepts asynchronously. A success code means the platform took the message — not that a handset received it.

Read this article →

What each message status means

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 →