Create Outbound Trunk
Creates an outbound trunk.
In version 2026-04-16, customers can create outbound trunks through the API even if the Outbound feature is not enabled on the account.
Request
HTTP Method: POST
URI Path: /v3/voice_out_trunks
Body Parameters
Name |
Type |
Nullable |
Is Required? |
Description |
|---|---|---|---|---|
type |
|
No |
Yes |
Must be |
attributes |
|
No |
Yes |
Outbound trunk attributes object. |
Data Attributes
Name |
Type |
Nullable |
Is Required? |
Description |
|---|---|---|---|---|
name |
|
No |
Yes |
The outbound trunk name. |
external_reference_id |
|
Yes |
No |
Optional identifier for the outbound trunk in the customer’s external system. Maximum length is 100 characters. |
allowed_rtp_ips |
Array of |
Yes |
No |
Allowed RTP IP addresses for media traffic. Required when |
authentication_method |
|
No |
Yes |
Authentication method object. Supported POST types: |
on_cli_mismatch_action |
|
No |
Yes |
Possible values: |
capacity_limit |
|
Yes |
No |
The capacity limit of the outbound trunk. Allowed values from 0 to 32767. |
allow_any_did_as_cli |
|
No |
No |
When set to |
status |
|
No |
No |
Possible values: |
threshold_amount |
|
Yes |
No |
The outbound trunk 24-hour threshold limit. Can be from 0.0 to 100000.0. |
default_dst_action |
|
No |
No |
Possible values: |
dst_prefixes |
Array of |
Yes |
No |
The destination prefixes allowed or rejected based on |
emergency_enable_all |
|
No |
No |
Allows all eligible DIDs to be used for emergency calling on the trunk. Default value is |
media_encryption_mode |
|
No |
No |
Media encryption mode. Possible values: |
callback_url |
|
Yes |
No |
Can be |
force_symmetric_rtp |
|
No |
No |
Enables symmetric RTP / COMEDIA mode. |
rtp_ping |
|
No |
No |
Enables RTP ping after the call is connected. |
rtp_timeout |
|
Yes |
No |
Disconnects the call if RTP packets do not arrive within the specified time. Supported values are from 30 to 600 seconds. |
Request Body Object Relationships
Title |
Type |
Description |
|---|---|---|
dids |
The DID numbers explicitly allowed as CLI when |
|
emergency_dids |
The DID numbers explicitly enabled for emergency calling when |
Authentication Method
The outbound trunk authentication is configured through the authentication_method attribute.
Supported authentication method types:
credentials_and_ip- uses SIP credentials together with allowed IP addresses.twilio- uses a Twilio Account SID for authentication.ip_onlyis returned byGETendpoints but is not supported inPOSTrequests.
Authentication Method Attributes by Type
Name |
Type |
Nullable |
Is Required? |
Description |
|---|---|---|---|---|
allowed_sip_ips |
Array of |
No |
Yes |
The allowed originating SIP IPs. |
tech_prefix |
|
Yes |
No |
An optional technical prefix added before the destination number. The maximum length is 8 characters and only digits and |
Name |
Type |
Nullable |
Is Required? |
Description |
|---|---|---|---|---|
twilio_account_sid |
|
No |
Yes |
The Twilio Account SID. It is a 34-character identifier of the Twilio account. |
Examples
http
POST /v3/voice_out_trunks HTTP/1.1
Host: api.didww.com
Content-Type: application/vnd.api+json
Accept: application/vnd.api+json
Api-Key: [API token]
{
"data": {
"type": "voice_out_trunks",
"attributes": {
"name": "Outbound trunk Name",
"callback_url": null,
"allowed_rtp_ips": [
"0.0.0.0/0"
],
"authentication_method": {
"type": "credentials_and_ip",
"attributes": {
"allowed_sip_ips": [
"0.0.0.0/0"
],
"tech_prefix": null
}
},
"on_cli_mismatch_action": "send_original_cli",
"capacity_limit": 100,
"allow_any_did_as_cli": true,
"status": "active",
"threshold_amount": "10000.0",
"default_dst_action": "allow_all",
"dst_prefixes": [],
"emergency_enable_all": false,
"media_encryption_mode": "disabled",
"force_symmetric_rtp": false,
"rtp_ping": false,
"rtp_timeout": 30
}
}
}
curl
curl -i -X POST https://api.didww.com/v3/voice_out_trunks -H "Accept: application/vnd.api+json" -H "Api-Key: [API token]" -H "Content-Type: application/vnd.api+json" --data-raw '{"data": {"attributes": {"allow_any_did_as_cli": true, "allowed_rtp_ips": ["0.0.0.0/0"], "authentication_method": {"attributes": {"allowed_sip_ips": ["0.0.0.0/0"], "tech_prefix": null}, "type": "credentials_and_ip"}, "callback_url": null, "capacity_limit": 100, "default_dst_action": "allow_all", "dst_prefixes": [], "emergency_enable_all": false, "force_symmetric_rtp": false, "media_encryption_mode": "disabled", "name": "Outbound trunk Name", "on_cli_mismatch_action": "send_original_cli", "rtp_ping": false, "rtp_timeout": 30, "status": "active", "threshold_amount": "10000.0"}, "type": "voice_out_trunks"}}'
response
HTTP/1.1 201 Created
Content-Type: application/vnd.api+json
{
"data": {
"id": "03813615-da15-4e3b-8e0a-3ea64b2585de",
"type": "voice_out_trunks",
"attributes": {
"name": "Outbound trunk Name",
"callback_url": null,
"allowed_rtp_ips": [
"0.0.0.0/0"
],
"authentication_method": {
"type": "credentials_and_ip",
"attributes": {
"allowed_sip_ips": [
"0.0.0.0/0"
],
"tech_prefix": null,
"username": "554******",
"password": "fqe******"
}
},
"on_cli_mismatch_action": "send_original_cli",
"capacity_limit": 100,
"allow_any_did_as_cli": true,
"status": "active",
"threshold_reached": false,
"threshold_amount": "10000.0",
"default_dst_action": "allow_all",
"dst_prefixes": [],
"emergency_enable_all": false,
"media_encryption_mode": "disabled",
"force_symmetric_rtp": false,
"rtp_ping": false,
"rtp_timeout": 30,
"created_at": "2025-04-02T10:00:00.000Z",
"external_reference_id": null
},
"relationships": {
"dids": {
"links": {
"self": "https://api.didww.com/v3/voice_out_trunks/03813615-da15-4e3b-8e0a-3ea64b2585de/relationships/dids",
"related": "https://api.didww.com/v3/voice_out_trunks/03813615-da15-4e3b-8e0a-3ea64b2585de/dids"
}
},
"emergency_dids": {
"links": {
"self": "https://api.didww.com/v3/voice_out_trunks/03813615-da15-4e3b-8e0a-3ea64b2585de/relationships/emergency_dids",
"related": "https://api.didww.com/v3/voice_out_trunks/03813615-da15-4e3b-8e0a-3ea64b2585de/emergency_dids"
}
}
}
},
"meta": {
"api_version": "2026-04-16"
}
}
http
POST /v3/voice_out_trunks HTTP/1.1
Host: api.didww.com
Content-Type: application/vnd.api+json
Accept: application/vnd.api+json
Api-Key: [API token]
{
"data": {
"type": "voice_out_trunks",
"attributes": {
"name": "Outbound trunk Name",
"callback_url": null,
"allowed_rtp_ips": null,
"authentication_method": {
"type": "twilio",
"attributes": {
"twilio_account_sid": "AC39347AF064AF97E1682C3B7332DAAEE6"
}
},
"on_cli_mismatch_action": "send_original_cli",
"capacity_limit": 100,
"allow_any_did_as_cli": true,
"status": "active",
"threshold_amount": "10000.0",
"default_dst_action": "allow_all",
"dst_prefixes": [],
"emergency_enable_all": false,
"media_encryption_mode": "disabled",
"force_symmetric_rtp": false,
"rtp_ping": false,
"rtp_timeout": 30
}
}
}
curl
curl -i -X POST https://api.didww.com/v3/voice_out_trunks -H "Accept: application/vnd.api+json" -H "Api-Key: [API token]" -H "Content-Type: application/vnd.api+json" --data-raw '{"data": {"attributes": {"allow_any_did_as_cli": true, "allowed_rtp_ips": null, "authentication_method": {"attributes": {"twilio_account_sid": "AC39347AF064AF97E1682C3B7332DAAEE6"}, "type": "twilio"}, "callback_url": null, "capacity_limit": 100, "default_dst_action": "allow_all", "dst_prefixes": [], "emergency_enable_all": false, "force_symmetric_rtp": false, "media_encryption_mode": "disabled", "name": "Outbound trunk Name", "on_cli_mismatch_action": "send_original_cli", "rtp_ping": false, "rtp_timeout": 30, "status": "active", "threshold_amount": "10000.0"}, "type": "voice_out_trunks"}}'
response
HTTP/1.1 201 Created
Content-Type: application/vnd.api+json
{
"data": {
"id": "14a0b7fb-845a-44d9-a7dc-ac1620f21e42",
"type": "voice_out_trunks",
"attributes": {
"name": "Outbound trunk Name",
"callback_url": null,
"allowed_rtp_ips": null,
"authentication_method": {
"type": "twilio",
"attributes": {
"twilio_account_sid": "AC39347AF064AF97E1682C3B7332DAAEE6"
}
},
"on_cli_mismatch_action": "send_original_cli",
"capacity_limit": 100,
"allow_any_did_as_cli": true,
"status": "active",
"threshold_reached": false,
"threshold_amount": "10000.0",
"default_dst_action": "allow_all",
"dst_prefixes": [],
"emergency_enable_all": false,
"media_encryption_mode": "disabled",
"force_symmetric_rtp": false,
"rtp_ping": false,
"rtp_timeout": 30,
"created_at": "2025-04-02T10:00:00.000Z",
"external_reference_id": null
},
"relationships": {
"dids": {
"links": {
"self": "https://api.didww.com/v3/voice_out_trunks/14a0b7fb-845a-44d9-a7dc-ac1620f21e42/relationships/dids",
"related": "https://api.didww.com/v3/voice_out_trunks/14a0b7fb-845a-44d9-a7dc-ac1620f21e42/dids"
}
},
"emergency_dids": {
"links": {
"self": "https://api.didww.com/v3/voice_out_trunks/14a0b7fb-845a-44d9-a7dc-ac1620f21e42/relationships/emergency_dids",
"related": "https://api.didww.com/v3/voice_out_trunks/14a0b7fb-845a-44d9-a7dc-ac1620f21e42/emergency_dids"
}
}
}
},
"meta": {
"api_version": "2026-04-16"
}
}
http
POST /v3/voice_out_trunks HTTP/1.1
Host: api.didww.com
Content-Type: application/vnd.api+json
Accept: application/vnd.api+json
Api-Key: [API token]
{
"data": {
"type": "voice_out_trunks",
"attributes": {
"name": "Outbound trunk for selected emergency DIDs",
"authentication_method": {
"type": "credentials_and_ip",
"attributes": {
"allowed_sip_ips": [
"0.0.0.0/0"
]
}
},
"on_cli_mismatch_action": "send_original_cli",
"emergency_enable_all": false
},
"relationships": {
"emergency_dids": {
"data": [
{
"id": "7158ac26-392f-47d1-89ab-c8b3f5ec05d9",
"type": "dids"
},
{
"id": "67a90c09-1bff-4bc3-a35e-116fda2b0d22",
"type": "dids"
}
]
}
}
}
}
curl
curl -i -X POST https://api.didww.com/v3/voice_out_trunks -H "Accept: application/vnd.api+json" -H "Api-Key: [API token]" -H "Content-Type: application/vnd.api+json" --data-raw '{"data": {"attributes": {"authentication_method": {"attributes": {"allowed_sip_ips": ["0.0.0.0/0"]}, "type": "credentials_and_ip"}, "emergency_enable_all": false, "name": "Outbound trunk for selected emergency DIDs", "on_cli_mismatch_action": "send_original_cli"}, "relationships": {"emergency_dids": {"data": [{"id": "7158ac26-392f-47d1-89ab-c8b3f5ec05d9", "type": "dids"}, {"id": "67a90c09-1bff-4bc3-a35e-116fda2b0d22", "type": "dids"}]}}, "type": "voice_out_trunks"}}'
response
HTTP/1.1 201 Created
Content-Type: application/vnd.api+json
{
"data": {
"id": "9c91f03e-8796-4e6a-8c12-00e4f334f9b2",
"type": "voice_out_trunks",
"attributes": {
"name": "Outbound trunk for selected emergency DIDs",
"callback_url": null,
"allowed_rtp_ips": null,
"authentication_method": {
"type": "credentials_and_ip",
"attributes": {
"allowed_sip_ips": [
"0.0.0.0/0"
],
"tech_prefix": null,
"username": "554******",
"password": "fqe******"
}
},
"on_cli_mismatch_action": "send_original_cli",
"capacity_limit": null,
"allow_any_did_as_cli": false,
"status": "active",
"threshold_reached": false,
"threshold_amount": null,
"default_dst_action": "allow_calls",
"dst_prefixes": null,
"emergency_enable_all": false,
"media_encryption_mode": "disable",
"force_symmetric_rtp": false,
"rtp_ping": false,
"rtp_timeout": 30,
"created_at": "2025-04-02T10:00:00.000Z",
"external_reference_id": null
},
"relationships": {
"dids": {
"links": {
"self": "https://api.didww.com/v3/voice_out_trunks/9c91f03e-8796-4e6a-8c12-00e4f334f9b2/relationships/dids",
"related": "https://api.didww.com/v3/voice_out_trunks/9c91f03e-8796-4e6a-8c12-00e4f334f9b2/dids"
},
"data": []
},
"emergency_dids": {
"links": {
"self": "https://api.didww.com/v3/voice_out_trunks/9c91f03e-8796-4e6a-8c12-00e4f334f9b2/relationships/emergency_dids",
"related": "https://api.didww.com/v3/voice_out_trunks/9c91f03e-8796-4e6a-8c12-00e4f334f9b2/emergency_dids"
}
},
"data": [
{
"id": "7158ac26-392f-47d1-89ab-c8b3f5ec05d9",
"type": "dids"
},
{
"id": "67a90c09-1bff-4bc3-a35e-116fda2b0d22",
"type": "dids"
}
]
}
}
},
"meta": {
"api_version": "2026-04-16"
}
}
Other Responses
Code |
Success |
Description |
|---|---|---|
422 |
No |
|
400 |
No |
|
401 |
No |