Skip to main content
Credits are prepaid and cover SMS OTP, WhatsApp OTP, and transactional SMS. One credit has a fixed price; a message costs a number of credits that depends on where it lands, and on which network answers for the number. GET /v1/pricing publishes the table that bills your messages. It needs no API key, and it is the same table the price page and the dashboard read.

Reading a country

Countries are ordered cheapest first. min_credits and max_credits are equal where every number to a country costs the same. Where they differ, the rate depends on the recipient’s network: a Nigerian number on Glo costs 3 credits, and one on any other network costs 1. An unlisted destination is still sendable and still charged at the price shown. The +1 territories are routed so those numbers keep working, and they are not destinations Robase markets.

What you are actually charged

Two things decide the charge on a send:
  1. The network. Robase identifies the recipient’s network from the number and applies that telco’s rate. When it cannot, the country’s credits applies.
  2. The parts. A long message is split by the carrier and billed per part, so a two-part message to Nigeria costs two credits, not one. See Segments and encoding.
The response to POST /v1/sms/send carries the credit_cost that was actually charged, along with segments.

WhatsApp OTP credits

whatsapp is a parallel array of { country_code, country_name, credits, price } computed at request time from whatsapp_otp_costs plus FX:
Same formula as send. The wildcard row * is the platform default. Destinations without a cost row are not free — WhatsApp send is refused until priced. WhatsApp is OTP-only (Meta Authentication + copy-code), not general messaging.

Custom Sender ID credit gate

sender_id_min_funded_credits is how many purchased credits a workspace must have funded before it may request a custom Sender ID. It is the same value admins set under Configure, and the Sender IDs docs and dashboard gate read it from this endpoint. Used credits count; signup and purchase bonuses and refunds do not. See Sender IDs.

Caching

Prices change rarely. The endpoint sets Cache-Control: public, max-age=60, and the server holds a built table for the same minute, so polling it more often than that returns the same answer.