TryVox

SIP Endpoints

Register a softphone or PBX as a SIP endpoint and link it to a Voice Application.

SIP Endpoints

A SIP endpoint represents a registered SIP UA — a softphone, a PBX trunk, or an internal line in your call centre — that can place and receive calls through TryVox using SIP credentials. Each endpoint has its own username/password and an application_id pointer; calls placed by the endpoint are routed through the Application's voice_url.

If you only want to send and receive calls via REST and webhooks (no SIP registration), you don't need endpoints — go straight to Voice Applications attached to phone numbers.

What an endpoint is

FieldDescription
idStable identifier, prefixed with ep_.
usernameSIP auth username. Globally unique within your account.
passwordSIP auth password. Stored hashed — never returned on read.
aliasOptional human label (e.g. agent-42 or nyc-pbx).
application_idThe Application whose voice_url is invoked when this endpoint places a call. Optional — without it the endpoint can register but cannot place calls.
statusactive or inactive.

The endpoint registers with TryVox's SIP registrar at the SIP domain shown in your dashboard (sip.<region>.tryvox.io).

Endpoints

MethodPathPurpose
POST/v1/voice/endpointsCreate an endpoint
GET/v1/voice/endpointsList endpoints
GET/v1/voice/endpoints/{id}Get one endpoint
PUT/v1/voice/endpoints/{id}Update an endpoint (note: PUT, not PATCH)
DELETE/v1/voice/endpoints/{id}Delete an endpoint

Create

POST https://api.tryvox.io/v1/voice/endpoints

Request body

ParameterTypeRequiredDescription
usernamestringyesSIP username. Must be unique within your account.
passwordstringyesSIP password. Stored bcrypt-hashed; you cannot retrieve it later.
aliasstringnoFriendly label.
application_idstringnoAttach the endpoint to an existing Application.

Example request

curl -X POST https://api.tryvox.io/v1/voice/endpoints \
  -u $TRYVOX_AUTH_ID:$TRYVOX_AUTH_TOKEN \
  -H "Content-Type: application/json" \
  -d '{
    "username": "agent-42",
    "password": "s3cret-ph0ne-Pa55!",
    "alias": "Floor 3 agent line",
    "application_id": "app_8f7a4b2e91c24f3d9a1e2c4b6d8f0a1c"
  }'

Response

201 Created:

{
  "id": "ep_3b2c1a0d4e5f60718293a4b5c6d7e8f9",
  "account_id": "TJab12cd34",
  "username": "agent-42",
  "alias": "Floor 3 agent line",
  "application_id": "app_8f7a4b2e91c24f3d9a1e2c4b6d8f0a1c",
  "status": "active",
  "created_at": "2026-04-09T10:30:00Z",
  "updated_at": "2026-04-09T10:30:00Z"
}

The password field is never returned. If the endpoint loses its credentials, you must update with a new password (see below).

List

GET https://api.tryvox.io/v1/voice/endpoints

Query parameters

ParameterTypeDescription
pageinteger1-indexed page number. Default: 1.
per_pageintegerItems per page. Default: 20, max: 100.

Example

curl -u $TRYVOX_AUTH_ID:$TRYVOX_AUTH_TOKEN \
  "https://api.tryvox.io/v1/voice/endpoints?page=1&per_page=50"

Response

200 OK:

{
  "data": [
    {
      "id": "ep_3b2c1a0d4e5f60718293a4b5c6d7e8f9",
      "account_id": "TJab12cd34",
      "username": "agent-42",
      "alias": "Floor 3 agent line",
      "application_id": "app_8f7a4b2e91c24f3d9a1e2c4b6d8f0a1c",
      "status": "active",
      "created_at": "2026-04-09T10:30:00Z",
      "updated_at": "2026-04-09T10:30:00Z"
    }
  ],
  "meta": {"page": 1, "per_page": 50, "total": 1}
}

Get

GET https://api.tryvox.io/v1/voice/endpoints/{id}
curl -u $TRYVOX_AUTH_ID:$TRYVOX_AUTH_TOKEN \
  https://api.tryvox.io/v1/voice/endpoints/ep_3b2c1a0d4e5f60718293a4b5c6d7e8f9

Returns the same shape as Create. Returns 404 NOT_FOUND when the endpoint doesn't exist or belongs to another account.

Update

PUT https://api.tryvox.io/v1/voice/endpoints/{id}

Request body

ParameterTypeDescription
usernamestringNew SIP username. Disconnects existing registrations.
aliasstringNew label.
application_idstringAttach to a different Application, or "" to detach.

Password rotation is not exposed on this endpoint today. Rotate by deleting and recreating the endpoint with the new password.

Example

curl -X PUT https://api.tryvox.io/v1/voice/endpoints/ep_3b2c1a0d4e5f60718293a4b5c6d7e8f9 \
  -u $TRYVOX_AUTH_ID:$TRYVOX_AUTH_TOKEN \
  -H "Content-Type: application/json" \
  -d '{"alias": "Floor 3 / desk 12"}'

Response

200 OK — the full updated endpoint.

Delete

DELETE https://api.tryvox.io/v1/voice/endpoints/{id}
curl -X DELETE \
  -u $TRYVOX_AUTH_ID:$TRYVOX_AUTH_TOKEN \
  https://api.tryvox.io/v1/voice/endpoints/ep_3b2c1a0d4e5f60718293a4b5c6d7e8f9

Response

204 No Content. Existing SIP registrations for the deleted endpoint expire at the next REGISTER refresh and are not re-accepted.

SIP registration

Once an endpoint is created, point your SIP client at:

SIP server: sip.<region>.tryvox.io
Port:       5060 (UDP), 5061 (TLS)
Username:   <your endpoint username>
Password:   <your endpoint password>

The exact SIP domain for your account is shown in the dashboard under Settings → SIP. Endpoints can place outbound calls (which trigger the attached Application's voice_url) and receive inbound calls (when a phone number is configured to ring the endpoint).

Errors

StatusCodeReason
400VALIDATION_FAILEDusername or password missing on create; body invalid
401INVALID_CREDENTIALSAuth ID / Auth Token bad
404NOT_FOUNDEndpoint doesn't exist or belongs to another account
409USERNAME_TAKENAn endpoint with this username already exists in your account

On this page