Tone docs
API referencesip-trunks

Connect your own carrier over SIP — credentials are shown once

Creates a trunk in pending_verification: you can configure and test it, and our team approves it before it carries calls. Requires completed business verification AND SIP trunking enabled on your organization (403 sip_trunking_not_enabled otherwise — contact support). 🔴 The digest password in connection.password appears in this response only. Send an Idempotency-Key to make a retried create return the same trunk and the same password.

Requires the admin scope. A key with less gets 403 insufficient_scope.

POST
/v1/sip-trunks
AuthorizationBearer <token>

Authorization: Bearer tone_live_… or tone_test_…. The prefix IS the environment: a test key reaches only the sandbox, and no request field bridges the two.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/sip-trunks" \  -H "Content-Type: application/json" \  -d '{    "callerIdPolicy": "did",    "codecs": [      "PCMA",      "PCMU"    ],    "customHeaders": {      "X-Account-Code": "acme-sales"    },    "inboundAuth": "digest",    "ipAcl": [      "49.207.12.0/24",      "103.21.58.4"    ],    "maxConcurrent": 10,    "name": "Airtel SIP — Mumbai office",    "outboundAuthPassword": "K7x2QpL9vR4nT1cW",    "outboundAuthUsername": "acme-out",    "outboundHost": "sbc.acme-telecom.example",    "outboundNumberFormat": "e164",    "outboundPort": 5061,    "outboundTransport": "tls",    "register": false  }'
{  "data": {    "connection": {      "host": "sip.usetone.ai",      "ips": [        "13.233.10.20"      ],      "password": "Qm9vZ2llV29vZ2llMTIzNDU2",      "port": 5061,      "realm": "sip.usetone.ai",      "transport": "tls",      "username": "t_9f2c4a7b1d3e5f60"    },    "trunk": {      "allowOrigination": false,      "approvedAt": "2026-09-09T11:00:00Z",      "callerIdPolicy": "did",      "codecs": [        "PCMA",        "PCMU"      ],      "connection": {        "host": "sip.usetone.ai",        "ips": [          "13.233.10.20"        ],        "port": 5061,        "transport": "tls"      },      "createdAt": "2026-09-09T10:14:22Z",      "customHeaders": {},      "digestUsername": "t_9f2c4a7b1d3e5f60",      "disabledReason": null,      "hasOutboundPassword": true,      "id": "4b7c1a02-9de5-4f31-bb07-2c1a5e9f0d43",      "inboundAuth": "digest",      "ipAcl": [        "49.207.12.0/24"      ],      "lastInboundAt": "2026-09-10T08:12:44Z",      "lastOutboundAt": null,      "lastProbe": {        "at": "2026-09-10T08:12:44Z",        "error": null,        "latencyMs": 41,        "method": "options",        "ok": true,        "sipStatus": 200      },      "maxConcurrent": 10,      "name": "Airtel SIP — Mumbai office",      "outboundAuthUsername": "acme-out",      "outboundHost": "sbc.acme-telecom.example",      "outboundNumberFormat": "e164",      "outboundPort": 5061,      "outboundTransport": "tls",      "realm": "sip.usetone.ai",      "register": false,      "status": "active",      "updatedAt": "2026-09-10T08:12:44Z"    }  }}
Was this page helpful?