Help us improve
Share bugs, ideas, or general feedback.
From sinch-claude-plugin
Provisions SIP trunks, endpoints, ACLs, credential lists, and phone numbers via Sinch Elastic SIP Trunking REST API. For SIP connectivity, inbound/outbound PSTN voice routing, PBX integration, SIP-to-PSTN bridging.
npx claudepluginhub sinch/sinch-plugins --plugin sinch-claude-pluginHow this skill is triggered — by the user, by Claude, or both
Slash command
/sinch-claude-plugin:elastic-sip-trunkingThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
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.
Provides JavaScript SDK examples for Telnyx SIP: manage access IP ranges, configure trunking connections and outbound voice profiles for PBX systems.
Provides SIP protocol fundamentals for VoIP apps, including message structure, methods, call flows, best practices, pitfalls, and RFC 3261 references.
Creates p5.js generative art with seeded randomness, noise fields, and interactive parameter exploration. Use for algorithmic art, flow fields, or particle systems.
Share bugs, ideas, or general feedback.
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)