Build on the network.
Ship faster.
RESTful API with OpenAPI 3.0 spec, SDKs in Node.js, Python, and PHP, webhook events with signed payloads, and a full sandbox environment. Everything you need to provision, configure, and monitor — in code.
From zero to live call in under 10 minutes.
The Nexcadia API follows RESTful conventions. All endpoints return JSON. Authentication is Bearer token. Rate limits are documented inline per endpoint.
Provision a local DID
# Search for available DIDs in area code 305 curl -X GET \ "https://api.nexcadia.com/v1/dids/search?area_code=305&type=local&limit=10" \ -H "Authorization: Bearer $NEXCADIA_API_KEY" # Provision a specific DID curl -X POST \ https://api.nexcadia.com/v1/dids/provision \ -H "Authorization: Bearer $NEXCADIA_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "number": "+13055550192", "trunk_id": "trnk_abc123", "voice_url": "https://your-app.com/webhooks/voice", "sms_url": "https://your-app.com/webhooks/sms" }' # Response { "id": "did_9xk2m8", "number": "+13055550192", "status": "active", "type": "local", "created_at": "2026-04-15T21:00:00Z" }
Initiate an outbound call
# Originate an outbound call via API curl -X POST \ https://api.nexcadia.com/v1/calls \ -H "Authorization: Bearer $NEXCADIA_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "to": "+15615550100", "from": "+13055550192", "trunk_id": "trnk_abc123", "record": true, "ai_gateway": { "enabled": true, "model": "openai-realtime", "webhook_url": "https://your-app.com/ai-events" } }' # Response { "call_id": "call_h7x9p2", "status": "initiated", "direction": "outbound" }
Official client libraries.
All SDKs wrap the REST API with typed models, automatic retries, and sensible defaults. Source on GitHub, published to npm/PyPI/Packagist.
Node.js SDK
npm install @nexcadia/sdk
Full TypeScript support. Promise-based async/await. Compatible with Node.js 18+ and edge runtimes.
View on npm →Python SDK
pip install nexcadia
Python 3.9+. Both sync and async (asyncio) interfaces. Pydantic models for all responses.
View on PyPI →PHP SDK
composer require nexcadia/sdk
PHP 8.1+. PSR-18 HTTP client compatible. Laravel service provider included.
View on Packagist →Real-time event delivery.
Nexcadia pushes events to your HTTPS endpoint via POST. Every payload is signed with HMAC-SHA256 using your account's signing secret.
Event types include
Call Events
- call.initiated
- call.answered
- call.completed
- call.recording.ready
- call.transcript.ready
- call.summary.ready
Number Events
- did.provisioned
- did.released
- did.ported
- sms.inbound
- sms.status
- reputation.alert
Signature verification
// Node.js — verify webhook signature const crypto = require('crypto'); function verifyWebhook(payload, signature, secret) { const expected = crypto .createHmac('sha256', secret) .update(payload) .digest('hex'); return crypto.timingSafeEqual( Buffer.from(expected), Buffer.from(signature) ); }
Test without burning minutes.
Every account includes a full sandbox environment at api-sandbox.nexcadia.com. Identical API surface — no real calls, no real charges.
- Simulated call legs and CDRs
- Webhook event simulation
- Test DID provisioning and porting flows
- AI Voice Gateway test mode included
OpenAPI 3.0 spec.
Full interactive API reference with request/response schemas, authentication examples, and code samples in every SDK language. Machine-readable OpenAPI 3.0 YAML available for import into Postman, Insomnia, or your own toolchain.