Get started →
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
ParameterTypeDescription
AgentName requiredstringHuman-readable agent name.
Extension optionalstringOptional explicit extension number.
Ttl optionalintegerCredential 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}
ParameterTypeDescription
Status optionalstringNew availability: online, offline, busy, away, dnd.
Ttl optionalintegerRefresh 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();

Next