SIP / Trunks API
Open API playground All endpoints
SIP trunks connect Teler to your upstream carrier or PBX. Create, configure, and manage your trunks, or inspect which virtual numbers are assigned to each one.
List SIP trunks
GET/api/v1/sip/trunks
Auth: x-api-key header
Parameters
| Name | In | Type | Description |
|---|---|---|---|
limit | query | integer | |
search | query | string | null | |
status | query | array of "active" | "inactive" | null | |
cursor_after | query | string | null | |
cursor_before | query | string | null |
Responses
| Status | Description |
|---|---|
200 | Successful Response |
422 | Validation Error |
Example response (200)
{
"data": [
{
"id": "string",
"name": "string",
"domain_name": "string",
"account_id": "string",
"channel_limit": 0,
"cps_limit": 0,
"recording_enabled": true,
"secure": true,
"transport": "tls",
"is_active": true,
"authentication_type": "credential",
"auth_ip_addresses": [],
"auth_credential_usernames": [],
"ip_acl_id": "string",
"ip_acl_name": "string",
"sip_route": {
"name": "string",
"sip_url": "string",
"sip_user": "string"
},
"webhook_url": "uri",
"webhook_api_version": "2025-08-01",
"created_at": "date-time",
"updated_at": "date-time",
"secret_id": "string",
"secret_name": "string"
}
],
"next_cursor": "string",
"previous_cursor": "string",
"has_more": false
}Create a SIP trunk
POST/api/v1/sip/trunks
Auth: x-api-key header
Request body
namerequiredstringdomain_namerequiredstringchannel_limitinteger | nullrecordingboolean | nullsecureboolean | nulltransport"tls" | "tcp" | "udp" | nullSIP transport for this trunk: tls, tcp, or udp. If omitted, it is derived from secure (secure=true→tls, else tcp). udp requires authentication_type = credential.
webhook_urlstring (uri) | nullauthentication_typerequired"credential" | "IP"auth_credentialobject | null
auth_credentialobject | nullusernamerequiredstringSIP authentication username
passwordrequiredstringSIP authentication password
auth_addressesarray of object | null
auth_addressesarray of object | nullnamerequiredstringAuthentication address name
addressrequiredstringIP or hostname for SIP auth
ip_acl_idstring | nullID of an IP access control list (acl_...) to authorise against, as an alternative to auth_addresses. Provide exactly one of the two when authentication_type is IP.
inbound_routeobject | null
inbound_routeobject | nullnamerequiredstringRoute name
sip_urlrequiredstringSIP destination URL or endpoint
sip_userstring | nullSIP user name
secret_idstring | nullwebhook_api_version"2025-08-01" | "2026-06-01" | nullExample request
{
"name": "string",
"domain_name": "string",
"channel_limit": 0,
"recording": false,
"secure": false,
"transport": "tls",
"webhook_url": "uri",
"authentication_type": "credential",
"auth_credential": {
"username": "string",
"password": "string"
},
"auth_addresses": [
{
"name": "string",
"address": "string"
}
],
"ip_acl_id": "string",
"inbound_route": {
"name": "string",
"sip_url": "string",
"sip_user": "string"
},
"secret_id": "string",
"webhook_api_version": "2025-08-01"
}Responses
| Status | Description |
|---|---|
201 | Successful Response |
422 | Validation Error |
Example response (201)
{
"id": "string",
"name": "string",
"domain_name": "string",
"account_id": "string",
"channel_limit": 0,
"cps_limit": 0,
"recording_enabled": true,
"secure": true,
"transport": "tls",
"is_active": true,
"authentication_type": "credential",
"auth_ip_addresses": [],
"auth_credential_usernames": [],
"ip_acl_id": "string",
"ip_acl_name": "string",
"sip_route": {
"name": "string",
"sip_url": "string",
"sip_user": "string"
},
"webhook_url": "uri",
"webhook_api_version": "2025-08-01",
"created_at": "date-time",
"updated_at": "date-time",
"secret_id": "string",
"secret_name": "string"
}Retrieve a SIP trunk
GET/api/v1/sip/trunks/{trunk_id}
Auth: x-api-key header
Parameters
| Name | In | Type | Description |
|---|---|---|---|
trunk_id required | path | string |
Responses
| Status | Description |
|---|---|
200 | Successful Response |
422 | Validation Error |
Example response (200)
{
"id": "string",
"name": "string",
"domain_name": "string",
"account_id": "string",
"channel_limit": 0,
"cps_limit": 0,
"recording_enabled": true,
"secure": true,
"transport": "tls",
"is_active": true,
"authentication_type": "credential",
"auth_ip_addresses": [],
"auth_credential_usernames": [],
"ip_acl_id": "string",
"ip_acl_name": "string",
"sip_route": {
"name": "string",
"sip_url": "string",
"sip_user": "string"
},
"webhook_url": "uri",
"webhook_api_version": "2025-08-01",
"created_at": "date-time",
"updated_at": "date-time",
"secret_id": "string",
"secret_name": "string"
}Update a SIP trunk
PATCH/api/v1/sip/trunks/{trunk_id}
Auth: x-api-key header
Parameters
| Name | In | Type | Description |
|---|---|---|---|
trunk_id required | path | string |
Request body
namestring | nullchannel_limitinteger | nullrecordingboolean | nullsecureboolean | nulltransport"tls" | "tcp" | "udp" | nullSIP transport: tls, tcp, or udp. udp requires authentication_type = credential.
is_activeboolean | nullwebhook_urlstring (uri) | nullwebhook_api_version"2025-08-01" | "2026-06-01" | nullauthentication_type"credential" | "IP" | nullauth_credentialobject | null
auth_credentialobject | nullusernamerequiredstringSIP authentication username
passwordrequiredstringSIP authentication password
auth_addressesarray of object | null
auth_addressesarray of object | nullnamerequiredstringAuthentication address name
addressrequiredstringIP or hostname for SIP auth
ip_acl_idstring | nullID of an IP access control list (acl_...) to authorise against, as an alternative to auth_addresses. Supplying one switches the trunk to that mode and clears the other.
inbound_routeobject | null
inbound_routeobject | nullnamerequiredstringRoute name
sip_urlrequiredstringSIP destination URL or endpoint
sip_userstring | nullSIP user name
secret_idstring | nullExample request
{
"name": "string",
"channel_limit": 0,
"recording": true,
"secure": true,
"transport": "tls",
"is_active": true,
"webhook_url": "uri",
"webhook_api_version": "2025-08-01",
"authentication_type": "credential",
"auth_credential": {
"username": "string",
"password": "string"
},
"auth_addresses": [
{
"name": "string",
"address": "string"
}
],
"ip_acl_id": "string",
"inbound_route": {
"name": "string",
"sip_url": "string",
"sip_user": "string"
},
"secret_id": "string"
}Responses
| Status | Description |
|---|---|
200 | Successful Response |
422 | Validation Error |
Example response (200)
{
"id": "string",
"name": "string",
"domain_name": "string",
"account_id": "string",
"channel_limit": 0,
"cps_limit": 0,
"recording_enabled": true,
"secure": true,
"transport": "tls",
"is_active": true,
"authentication_type": "credential",
"auth_ip_addresses": [],
"auth_credential_usernames": [],
"ip_acl_id": "string",
"ip_acl_name": "string",
"sip_route": {
"name": "string",
"sip_url": "string",
"sip_user": "string"
},
"webhook_url": "uri",
"webhook_api_version": "2025-08-01",
"created_at": "date-time",
"updated_at": "date-time",
"secret_id": "string",
"secret_name": "string"
}Delete a SIP trunk
DELETE/api/v1/sip/trunks/{trunk_id}
Auth: x-api-key header
Parameters
| Name | In | Type | Description |
|---|---|---|---|
trunk_id required | path | string |
Responses
| Status | Description |
|---|---|
200 | Successful Response |
422 | Validation Error |
Example response (200)
{
"success": true,
"message": "string"
}List virtual numbers for a SIP trunk
GET/api/v1/sip/trunks/{trunk_id}/virtual-numbers
Auth: x-api-key header
Parameters
| Name | In | Type | Description |
|---|---|---|---|
trunk_id required | path | string | |
limit | query | integer | |
search | query | string | null | |
location | query | array of string | null | |
cursor_after | query | string | null | |
cursor_before | query | string | null |
Responses
| Status | Description |
|---|---|
200 | Successful Response |
422 | Validation Error |
Example response (200)
{
"data": [
{
"id": "string",
"account_id": "string",
"name": "string",
"number": "string",
"location": {
"id": "string",
"name": "string",
"region_code": "string",
"country_code": "string",
"country_name": "string"
},
"voice_app": {
"id": "string",
"name": "string"
},
"sip_trunk": {
"id": "string",
"name": "string"
}
}
],
"next_cursor": "string",
"previous_cursor": "string",
"has_more": false
}