SIP call
Initiates an outbound SIP call through LiveKit. The optional sip object in the request body allows overriding global SIP configuration on a per-request basis. Request body values take priority over global config, enabling different SIP providers or credentials for specific calls.
outbound_address and a valid SIP trunk. The room is created automatically if it doesn’t exist, with metadata.auth_id set for tenant isolation.Request fields
| Field | Type | Required | Description |
|---|---|---|---|
room_name | string | Yes | The LiveKit room to connect the call to. |
participant_name | string | Yes | Display name for the SIP participant in the room. |
participant_identity | string | Yes | Unique identity for the SIP participant. |
from_phone_number | string | Yes | Caller ID phone number (must be configured in your SIP provider). |
to_phone_number | string | Yes | Destination phone number to dial. |
sip | object | No | Per-request SIP configuration overrides. See SIP configuration overrides. |
SIP configuration overrides
The optionalsip object allows you to override global SIP configuration on a per-request basis. This is useful when you need to use different SIP providers or credentials for specific calls.
| Field | Type | Description |
|---|---|---|
outbound_address | string|null | SIP server address override. Format: hostname or hostname:port. |
auth_username | string|null | SIP authentication username override. |
auth_password | string|null | SIP authentication password override. |
Configuration priority
When thesip object is provided, its fields take priority over global server configuration:
Request body sip config > Global server config
| Request Body Field | Overrides Global Config |
|---|---|
sip.outbound_address | sip.outbound_address |
sip.auth_username | sip.outbound_auth_username |
sip.auth_password | sip.outbound_auth_password |
outbound_address, the call will fail with an OUTBOUND_ADDRESS_NOT_CONFIGURED error.Example requests
Authorization
Access is controlled via room metadata:- When
auth.idis present and the room exists: requiresroom.metadata.auth_id == auth.id - When
auth.idis present and room doesn’t exist: room is created withmetadata.auth_idset - When
auth.idis absent: access is allowed (backward-compatible mode)
Error responses
| Status | Condition |
|---|---|
400 Bad Request | Invalid phone number format or empty required fields. |
404 Not Found | Room exists with a different tenant’s auth_id (masked as not found). |
500 Internal Server Error | LiveKit not configured, outbound address missing, or call failed. |
Authorizations
Authentication token for protected endpoints. Can be provided as Authorization: Bearer <token> or ?api_key=<token>. Required when AUTH_REQUIRED is enabled.
Body
Request body for initiating an outbound SIP call
Example
{
"room_name": "call-room-123",
"participant_name": "John Doe",
"participant_identity": "caller-456",
"from_phone_number": "+15105550123",
"to_phone_number": "+15551234567",
"sip": {
"outbound_address": "sip.provider.com",
"auth_username": "user123",
"auth_password": "secret"
}
}SIP Configuration Priority
The sip object is optional. When provided, its fields take priority over global
server configuration values. This allows per-request customization of SIP settings.
Priority order: Request body sip config > Global server config
outbound_address: Overridessip.outbound_addressfrom configauth_username: Overridessip.outbound_auth_usernamefrom configauth_password: Overridessip.outbound_auth_passwordfrom config
If neither the request body nor global config provides an outbound_address,
the call will fail with OUTBOUND_ADDRESS_NOT_CONFIGURED error.
Phone number the call will originate from. Must be configured in your SIP provider. Supports international format (+1234567890).
"+15105550123"
Identity for the SIP participant in the room
"caller-456"
Display name for the SIP participant in the room
"John Doe"
The LiveKit room name to connect the call to
"call-room-123"
Phone number to dial. Supports international format (+1234567890), national format (07123456789), or extensions (1234).
"+15551234567"
Optional per-request SIP configuration overrides. When provided, these values take priority over the global server configuration. This allows using different SIP providers or credentials for specific calls.
Response
Call initiated successfully
Response for a successful SIP call initiation
Example
{
"status": "initiated",
"room_name": "call-room-123",
"participant_identity": "caller-456",
"participant_id": "PA_abc123",
"sip_call_id": "SC_xyz789"
}The unique participant ID assigned by LiveKit
"PA_abc123"
The identity of the SIP participant in the room
"caller-456"
The room name where the call was connected
"call-room-123"
The unique SIP call ID for tracking
"SC_xyz789"
Status of the call request ("initiated")
"initiated"