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.

Connecting tools you already use?

Explore direct connections, the WordPress plugin and API workflows for Zapier, Make and n8n.

Explore integrations →

Read the full API reference

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

Read the docs ↗