Skip to content
Developers

The whole platform, programmatically.

A clean REST API to send across every channel, sync contacts, and stream delivery events, with scoped tokens and signed webhooks.

API at a glance

Standard
A JSON:API-compliant REST API, described by OpenAPI 3.1.
Base URL
https://app.texttango.com/api/v2
Auth
Bearer token. Authorization: Bearer {YOUR_AUTH_KEY}
Responses
JSON:API envelope: { "data": { "type", "id", "attributes", "relationships" } }
Client libraries
cURL / Shell, Node.js, PHP, Python, Ruby, & more

The live reference is interactive, with a downloadable OpenAPI document.

Send a campaign

curl https://app.texttango.com/api/v2/campaigns \
  -H "Authorization: Bearer {YOUR_AUTH_KEY}" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "from": "TTango",
    "campaign_name": "Order updates",
    "body": "Hi {first_name}, your order is ready for pickup!",
    "to": ["+233501234567", "+233541234567"]
  }'
const res = await fetch("https://app.texttango.com/api/v2/campaigns", {
  method: "POST",
  headers: {
    Authorization: "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    Accept: "application/json",
  },
  body: JSON.stringify({
    from: "TTango",
    campaign_name: "Order updates",
    body: "Hi {first_name}, your order is ready for pickup!",
    to: ["+233501234567", "+233541234567"],
  }),
});

const { data } = await res.json();
console.log(data.id);
$response = Http::withToken('{YOUR_AUTH_KEY}')
    ->acceptJson()
    ->post('https://app.texttango.com/api/v2/campaigns', [
        'from' => 'TTango',
        'campaign_name' => 'Order updates',
        'body' => 'Hi {first_name}, your order is ready for pickup!',
        'to' => ['+233501234567', '+233541234567'],
    ]);

$campaign = $response->json('data');
Capabilities

Everything the dashboard does, over the wire.

Scoped access tokens

Scoped tokens with per-resource abilities like sms:send, voice:read, contacts:write, plus per-token rate limits.

Webhooks

Subscribe to delivery events with signed payloads, plus a delivery audit log with retries.

Transactional send

A low-latency single-SMS path for OTPs and time-critical alerts.

Full v2 REST API

Campaigns, contacts, templates, sender IDs, wallet/transactions (read), and analytics, all cursor-paginated.

Automation enrollment

Enroll a contact into a workflow directly via the API.

Delivery audit log

Every webhook attempt and delivery event, recorded and replayable.

Read the full API reference

Interactive docs, every endpoint, and a downloadable OpenAPI document.

Read the docs ↗