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.| 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 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. |
sip 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.auth.id is present and the room exists: requires room.metadata.auth_id == auth.idauth.id is present and room doesn’t exist: room is created with metadata.auth_id setauth.id is absent: access is allowed (backward-compatible mode)| 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. |
JWT token obtained from the authentication service. Required when AUTH_REQUIRED is enabled.
Request body for initiating an outbound SIP call
{
"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"
}
}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: Overrides sip.outbound_address from configauth_username: Overrides sip.outbound_auth_username from configauth_password: Overrides sip.outbound_auth_password from configIf 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.
Call initiated successfully
Response for a successful SIP call initiation
{
"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"