The Developer REST API is the programmatic interface for sends, RCS operations, billing, webhooks, and campaign controls. All routes are versioned under /v1.

What runs where

Stateless HTTP handlers authenticate API keys, enforce rate limits, perform balance and policy checks, classify messages, place holds, enqueue work, and return structured JSON including billing fields. The gateway responds fast — dispatch happens asynchronously.

Request lifecycle

1

Authenticate

The API key is validated and resolved to a workspace, rate limit bucket, and access scope.
2

Validate and classify

For sends, the message is classified into a billing unit (Basic, Single, Conversation, or MAU) from content shape and channel context.
3

Check balance and hold

The free balance is decremented by the hold amount. If it would go negative, the request returns 402 immediately with balance details and a top-up URL.
4

Enqueue

The dispatch task is queued for background processing. This is fast — providers are called asynchronously.
5

Respond

The API returns message_id, status: queued, and a billing snapshot. No waiting for delivery confirmation.
6

Deliver and webhook

Workers call the provider, record usage events, and fire your developer webhooks as delivery events arrive.

Versioning

Resources are namespaced under /v1. Additive changes (new fields, new routes) may ship without a major version bump. Breaking changes surface as new major versions with a migration window.