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:- The network. Robase identifies the recipient’s network from the number and applies that telco’s rate. When it cannot, the country’s
creditsapplies. - 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.
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:
* 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 setsCache-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.