API reference
Agent extensions API
Provision browser softphone extensions for your agents, get ephemeral SIP credentials, and manage presence.
Agent extension resource
{
"sid": "AE…",
"account_sid": "AC…",
"extension": "1001",
"username": "agent-1001",
"status": "offline",
"sip_profile": "default",
"uri": "/2010-04-01/Accounts/AC…/agent_extensions/AE…"
}
Status values
online, offline, busy, away, dnd.
Create an extension
POST/2010-04-01/Accounts/{AccountSid}/agent_extensions
| Parameter | Type | Description |
|---|---|---|
AgentName required | string | Human-readable agent name. |
Extension optional | string | Optional explicit extension number. |
Ttl optional | integer | Credential TTL in seconds (default 86400). |
Get credentials
POST/2010-04-01/Accounts/{AccountSid}/agent_extensions/{AgentExtensionSid}/credentials
Return ephemeral SIP credentials for the browser device. Expires after the TTL.
{
"id": "AE…",
"username": "agent-1001",
"password": "********",
"domain": "sip.ruut.chat",
"ws_url": "wss://voice.ruut.chat:8443",
"extension": "1001",
"expires_at": "…"
}
List extensions
GET/2010-04-01/Accounts/{AccountSid}/agent_extensions
Return all extensions for the account.
Update status / TTL
PATCH/2010-04-01/Accounts/{AccountSid}/agent_extensions/{AgentExtensionSid}
| Parameter | Type | Description |
|---|---|---|
Status optional | string | New availability: online, offline, busy, away, dnd. |
Ttl optional | integer | Refresh credential TTL in seconds. |
With the SDK
// Create + credentials in one call
const creds = await client.agentExtensions.provision({ agentName: "Adaeze" });
// Or step by step
const ext = await client.agentExtensions.create({ agentName: "Adaeze" });
const creds2 = await client.agentExtensions.credentials(ext.sid);
// Presence
await client.agentExtensions.update("AE…", { status: "online", ttlSeconds: 3600 });
// List
const extensions = await client.agentExtensions.list();