Provisions SIP trunks, endpoints, ACLs, credential lists, and phone numbers via the Sinch Elastic SIP Trunking REST API. Use when the user needs SIP connectivity, trunk provisioning, inbound/outbound PSTN voice routing, PBX integration, or SIP-to-PSTN bridging.
From sinch-claude-pluginnpx claudepluginhub sinch/sinch-plugins --plugin sinch-claude-pluginThis skill uses the workspace's default tool permissions.
references/diagnostics.mdGuides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Details PluginEval's skill quality evaluation: 3 layers (static, LLM judge), 10 dimensions, rubrics, formulas, anti-patterns, badges. Use to interpret scores, improve triggering, calibrate thresholds.
The Sinch Elastic SIP Trunking (EST) API lets you programmatically provision SIP trunks and route voice traffic between customer infrastructure and the PSTN. The core workflow is: create a trunk, authorize it (ACL or credentials), attach endpoints, assign phone numbers.
Before generating code, ask the user these clarifying questions:
Only ask questions 2-3 when relevant to the user's direction. Wait for answers, then follow the matching workflow below.
User wants EST →
├─ Outbound only
│ ├─ Static IPs → Workflow A (Trunk + ACL)
│ └─ Dynamic IPs → Workflow E (Trunk + Credential List / Digest Auth)
├─ Inbound only
│ ├─ Static IP → Workflow B (Trunk + Static Endpoint + Phone Number)
│ └─ Dynamic IP → Workflow D (Trunk + Credential List + Registered Endpoint + Phone Number)
└─ Both → Workflow C (Trunk + ACL/Creds + Endpoint + Phone Number)
Create Trunk → Create ACL/Credentials → Link to Trunk → Assign Phone Numbers → Create Endpointtrunk.pstn.sinch.com. ALWAYS use {your-hostname}.pstn.sinch.com.priority: 1 is primary; priority: 100 is failover.null.See sinch-authentication for full auth setup. EST uses OAuth2 client credentials (production) or Basic Auth (testing only, rate-limited).
| Language | Package | Install |
|---|---|---|
| Node.js | @sinch/sdk-core | npm install @sinch/sdk-core |
| Python | sinch | pip install sinch |
| Java | com.sinch.sdk:sinch-sdk-java | Maven dependency |
| .NET | Sinch | dotnet add package Sinch |
curl -X POST "https://elastic-trunking.api.sinch.com/v1/projects/YOUR_PROJECT_ID/trunks" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "my-trunk", "hostName": "my-trunk"}'
Response includes sipTrunkId and hostName — use {hostName}.pstn.sinch.com for all SIP routing.
For SDK examples, see the Getting Started Guide.
hostName used in SIP routing.203.0.113.10/32).GET /trunks/{trunkId}/accessControlLists — confirm ACL appearsAPI docs: Create trunk → Create ACL → Link ACL to trunk → List ACLs for trunk
GET /trunks/{trunkId}/endpoints and GET /trunks/{trunkId}/phoneNumbersAPI docs: Create trunk → Create SIP endpoint → Get phone numbers
GET /trunks/{trunkId}/accessControlLists, GET /trunks/{trunkId}/endpoints, GET /trunks/{trunkId}/phoneNumbersAPI docs: Create trunk → Create ACL → Link ACL to trunk → Create SIP endpoint → Get phone numbers
{hostname}.pstn.sinch.comGET /trunks/{trunkId}/endpoints and GET /trunks/{trunkId}/phoneNumbersAPI docs: Create trunk → Credential Lists → Create SIP endpoint → Get phone numbers
GET /trunks/{trunkId}/credentialLists — confirm credential list appearsAPI docs: Create trunk → Credential Lists → Add credential list to trunk → List credential lists for trunk
| Header | Value | Notes |
|---|---|---|
From | sip:+1E164@{your-hostname}.pstn.sinch.com | Must be your trunk domain. Wrong domain → 403. Use E.164 format. |
To | sip:+1E164@{your-hostname}.pstn.sinch.com | Destination in E.164 + your trunk domain. In most cases, same as Request-URI. |
Request-URI | sip:+1E164@{your-hostname}.pstn.sinch.com | Destination in E.164 + your trunk domain. In most cases, same as To. |
/32 for single IP, /24 for range).updateCountryPermissions.projectId, not the Voice Application Key.For SIP error codes and debugging runbooks, see references/diagnostics.md.
Quick reference:
From domain{hostname}.pstn.sinch.com)