We optimise for clarity and speed: you should send a real message and see transparent billing before committing to any long-running vendor processes.

Low friction to first value

Getting to a first working send should take minutes, not weeks.
Email is instant. Add a verified sender domain and send an action-based email with a single API call — no approval queue, no waiting period.
RCS has a sandbox. The Test Agent lets you send real RCS to your own device before your production agent is approved — rich cards, suggestions, and read receipts exactly as customers will see them.
Billing is visible from the first response. Every successful send returns a billing object with the hold amount, unit price, tier position, and remaining balance — no separate call needed.

Errors you can act on

HTTP status codes map to actionable states:
CodeMeaningWhat you get
402Insufficient balanceCurrent balance, required amount, and a direct top-up URL
403Not authorised to sendReason (agent not approved, sender not verified, phone number mismatch)
429Rate limitretry_after hint
Opaque “forbidden” responses that give the client nothing to act on are not acceptable. Every error should tell you exactly what to fix.

One API, multiple channels

The same POST /v1/messages endpoint handles email, RCS, and SMS (coming soon). The billing model, response shape, and webhook event structure are identical across channels — so adding a second channel to an existing integration is a configuration change, not a rewrite.

Billing in every success response

Successful sends return billing metadata inline: holds, prices, tier context, balances. Your integration can display cost, check tier progress, and handle 402 without a separate API call. Continue to Errors and billing and the Billing API.