Skip to main content

Getting started

Everything lives under one base URL, takes one credential, and answers in one envelope.

Base URLhttps://api.account.telebroad.com/api/public/v1
CredentialAuthorization: Bearer … — an API key or an OAuth token
Success{"data": …}
Error{"error": {"type": …, "message": …}} — branch on type

A browser session cannot reach this API. It accepts machine credentials only, which is why there is no CSRF story to worry about and nothing you can build against "being logged in".

1. Get a key

In the admin center, go to Integrations → API Keys and create one. Select only the scopes you need, pick an expiry, and copy the key — it is shown exactly once.

export TB_KEY=tbk_live_xxxxxxxxxxxxxxxxxxxxxxxx

2. Make a call

Listing your texting numbers is the safest first request: it needs one scope, returns something recognizable, and cannot spend money.

curl https://api.account.telebroad.com/api/public/v1/sms/lines \
-H "Authorization: Bearer $TB_KEY"
{
"data": [
{
"number": "12125550188",
"name": "Acme Support",
"userIds": [481920, 481925],
"bulkEnabled": false
}
]
}

If you get a 401, the key is wrong or expired. If you get a 403, the key is real but wasn't given sms:read — see Errors, which tells the two apart.

3. Send something

Every number from step 2 is a valid from. This spends money — one SMS at your rate card's price.

curl -X POST https://api.account.telebroad.com/api/public/v1/sms/messages \
-H "Authorization: Bearer $TB_KEY" \
-H 'Content-Type: application/json' \
-d '{
"from": "12125550188",
"to": ["13475550123"],
"message": "Hello from the API."
}'

The response tells you what it cost, so you never have to wait for an invoice to find out:

{
"data": {
"from": "12125550188",
"billing": {"billed": true, "currency": "USD", "type": "sms", "units": 1, "totalPrice": 0.0025, "recipientCount": 1, "skippedCount": 0},
"messages": [{"id": 88214417, "to": ["13475550123"], "type": "sms", "status": "sent", "units": 1, "unitPrice": 0.0025, "price": 0.0025}],
"skipped": []
}
}

:::warning One recipient or many is not the same product Two or more numbers in to creates a group thread — one conversation all participants can see and reply into — billed once as MMS. It does not send separate texts. For N independent messages, make N requests. See SMS billing. :::

Where to go next

If you want to…Go to
Try endpoints without writing codePlayground
Look up an endpoint's exact fieldsReference
Decide between a key and OAuthChoosing a credential
Act on behalf of your usersOAuth 2.1
Receive events instead of pollingWebhooks
Understand what you'll be chargedSMS billing