VOLTA Fabric
A cloud communications platform sitting directly on the carrier
Most CPaaS providers rent minutes from someone like us. VOLTA Fabric runs on the switch itself — which removes an intermediary hop, a margin layer and an entire class of finger-pointing during incidents.
Hosted PBX
Multi-tenant cloud PBX with IVR designer, skills-based ACD, call recording with 7-year retention, presence, voicemail-to-email and mobile softphones for iOS and Android.
Teams Direct Routing
Certified SBC pairing for Microsoft Teams with tenant onboarding, per-user licence mapping, emergency location handling and hybrid PSTN break-out.
Programmable voice
Create, bridge, transfer and record calls through a REST API, or drive live call control over WebSocket with sub-40 ms command latency.
Real-time media streams
Fork inbound media to your own transcription, sentiment or compliance engine over secure WebSocket with 20 ms PCM frames.
Messaging APIs
SMS, RCS and WhatsApp Business messaging with direct operator connections, sender-ID registration and delivery-receipt webhooks.
Operator-grade tooling
CDR streaming to S3 or Kafka, rate-sheet APIs, sub-account provisioning, per-second balance checks and signed event webhooks with replay.
Developer portal
Six product APIs, one credential, one versioned contract
Every VOLTA product exposes the same authentication model, the same idempotency semantics and the same signed-webhook envelope. Pick a language, copy the request, and the sandbox will answer with the exact payload documented here.
Base URL
https://api.volta.network/v2
Sandbox
https://sandbox.volta.network/v2
API version
2026-04-01 (pinned)
01 · Multi-tenant hosted telephony
Cloud PBX
Provision tenants, extensions, IVR trees and hunt groups on VOLTA's multi-tenant softswitch. Every seat is created against a customer tenant with its own dial plan, class of service, recording policy and emergency location, so resellers can onboard an entire business in a single orchestrated call rather than a support ticket.
- Tenant, seat and device provisioning
- IVR designer with time-of-day routing
- Skills-based ACD queues and wallboards
- Voicemail-to-email and 7-year recording retention
- Seats per tenant
- 25,000
- Registrar SLA
- 99.999%
- Media regions
- 9
1import { Volta } from "@volta/node";23const volta = new Volta({ apiKey: process.env.VOLTA_API_KEY });45const result = await volta.request({6 method: "POST",7 path: "/v2/pbx/tenants/tn_8241/extensions",8 body: {9 "extension": "204",10 "display_name": "Ieva Ozola",11 "class_of_service": "international",12 "devices": [13 {14 "type": "webrtc"15 },16 {17 "type": "sip",18 "mac": "805EC0A41B77"19 }20 ],21 "voicemail": {22 "enabled": true,23 "email": "ieva@acme.example"24 },25 "recording": "inbound_outbound"26 },27 idempotencyKey: crypto.randomUUID(),28});2930console.log(result.status, result.data);02 · Dedicated instances and hybrid PSTN
Enterprise PBX
Dedicated, single-tenant PBX instances for organisations with regulatory, latency or integration requirements that shared platforms cannot satisfy. Deploy in a VOLTA region or inside your own VPC, pair with Microsoft Teams Direct Routing, keep legacy PRI gateways alive during migration and expose a private API host with mutual TLS.
- Single-tenant instances in region or in your VPC
- Teams Direct Routing and Zoom Phone pairing
- Hybrid PRI / SIP failover during migration
- Active-active clustering with geo-redundant SBCs
- Concurrent calls
- 40,000
- Failover target
- < 2 s
- Deployment
- Region or VPC
1import { Volta } from "@volta/node";23const volta = new Volta({ apiKey: process.env.VOLTA_API_KEY });45const result = await volta.request({6 method: "POST",7 path: "/v2/enterprise/instances/in_1190/routing-plans",8 body: {9 "name": "EMEA outbound",10 "failover": [11 "sbc-fra-01",12 "sbc-ams-02"13 ],14 "rules": [15 {16 "match": "^\\+44",17 "trunk": "trk_uk_platinum",18 "cli": "+442038900112"19 },20 {21 "match": "^\\+971",22 "trunk": "trk_gulf_direct",23 "cli": "+97144019920"24 }25 ],26 "emergency": {27 "profile": "e112",28 "validate_address": true29 }30 },31 idempotencyKey: crypto.randomUUID(),32});3334console.log(result.status, result.data);03 · Call control at carrier latency
Programmable Voice API
Create, bridge, transfer, record and terminate calls with REST, then steer live media over WebSocket with sub-40 ms command latency. Because the API runs on the switch rather than on top of a wholesale supplier, post-dial delay and answer-seizure ratio are the carrier's own figures, and every leg exposes RTP quality metrics in real time.
- Outbound, inbound and conference call control
- Real-time media forking to your transcription stack
- DTMF capture, whisper, barge and supervised transfer
- Per-leg MOS, jitter and packet-loss telemetry
- Command latency
- < 40 ms
- Median PDD
- 1.84 s
- Codecs
- OPUS · G.711 · G.729
1import { Volta } from "@volta/node";23const volta = new Volta({ apiKey: process.env.VOLTA_API_KEY });45const result = await volta.request({6 method: "POST",7 path: "/v2/calls",8 body: {9 "from": "+442035550100",10 "to": "+442038900112",11 "route_class": "platinum",12 "record": true,13 "machine_detection": "hangup",14 "webhook": "https://acme.example/voice/events"15 },16 idempotencyKey: crypto.randomUUID(),17});1819console.log(result.status, result.data);04 · Direct operator messaging
SMS API
Send A2P SMS, RCS and WhatsApp Business messages over direct operator connections in more than 190 countries. Sender ID registration, local content rules, GSM-7 and UCS-2 segmentation, link shortening and per-country throughput shaping are handled for you, with delivery receipts streamed back as signed webhooks within seconds.
- A2P SMS, RCS and WhatsApp on one endpoint
- Automatic sender-ID and template compliance
- Batch send with per-country throughput shaping
- DLR webhooks with operator-level error codes
- Throughput
- 1,200 msg/s
- Countries
- 190+
- Median DLR
- 1.4 s
1import { Volta } from "@volta/node";23const volta = new Volta({ apiKey: process.env.VOLTA_API_KEY });45const result = await volta.request({6 method: "POST",7 path: "/v2/messages",8 body: {9 "from": "VOLTA",10 "to": [11 "+37060012345",12 "+48501223344"13 ],14 "text": "Your VOLTA one-time code is 448 210. It expires in 5 minutes.",15 "channel": "sms",16 "validity_minutes": 5,17 "webhook": "https://acme.example/sms/dlr"18 },19 idempotencyKey: crypto.randomUUID(),20});2122console.log(result.status, result.data);05 · Interconnect automation for operators
Carrier API
Everything a wholesale partner needs without opening a ticket: create and amend interconnects, publish or ingest rate sheets, manage IP authorisation and channel limits, stream CDRs to S3 or Kafka, and pull ASR, ACD and PDD by destination. The same endpoints power VOLTA's own NOC, so partners see exactly what our engineers see.
- Interconnect, IP-auth and channel-limit management
- Rate-sheet publish, ingest and effective-date diffing
- Near-real-time CDR streaming to S3 or Kafka
- ASR, ACD, PDD and NER by destination and carrier
- CDR lag
- < 30 s
- Rate-sheet formats
- CSV · JSON · XML
- Partners live
- 800+
1import { Volta } from "@volta/node";23const volta = new Volta({ apiKey: process.env.VOLTA_API_KEY });45const result = await volta.request({6 method: "GET",7 path: "/v2/carrier/interconnects/ic_3308/quality",8 query: {9 "destination": "44",10 "window": "24h",11 "granularity": "1h"12 },13 idempotencyKey: crypto.randomUUID(),14});1516console.log(result.status, result.data);06 · Live rating and margin control
Pricing API
Query the same rating engine that bills the switch. Resolve any E.164 number to a destination, prefix, route class and per-minute rate, compare quality tiers before you commit traffic, model margin on a customer sheet, and subscribe to change notifications so your own price book is never more than a few seconds behind the carrier's.
- Prefix resolution with LRN and MNP awareness
- Route-class comparison with ASR and ACD context
- Customer sheet generation and margin modelling
- Rate-change webhooks with effective dating
- Lookup latency
- 18 ms p95
- Prefixes rated
- 428,000
- Currencies
- EUR · USD · GBP
1import { Volta } from "@volta/node";23const volta = new Volta({ apiKey: process.env.VOLTA_API_KEY });45const result = await volta.request({6 method: "GET",7 path: "/v2/pricing/rates",8 query: {9 "number": "+442038900112",10 "route_class": "all",11 "currency": "EUR"12 },13 idempotencyKey: crypto.randomUUID(),14});1516console.log(result.status, result.data);Authentication
OAuth2 client credentials, scoped per product
Production traffic authenticates with a client-credentials grant against auth.volta.network. Tokens live for 60 minutes, carry explicit scopes and can be bound to an IP allow-list. Static API keys remain available for sandbox and internal tooling, and every SDK caches and refreshes tokens transparently.
- Scopes: voice.write · messaging.write · pricing.read · carrier.admin
- Optional mutual TLS and IP allow-listing per credential
- Idempotency-Key honoured for 24 hours on every POST
- Rate limits returned in X-RateLimit-Remaining and Retry-After
1# 1. Exchange your client credentials for a 60-minute access token2curl -sS -X POST https://auth.volta.network/oauth2/token \3 -u "$VOLTA_CLIENT_ID:$VOLTA_CLIENT_SECRET" \4 -d "grant_type=client_credentials&scope=voice.write messaging.write pricing.read"56# 200 OK7# {8# "access_token": "vlt_at_9F2CQ…",9# "token_type": "Bearer",10# "expires_in": 3600,11# "scope": "voice.write messaging.write pricing.read"12# }1314# 2. Call any endpoint with the token15curl -sS https://api.volta.network/v2/account \16 -H "Authorization: Bearer vlt_at_9F2CQ…"Webhooks
Signed events, replayable for 30 days
Call, message, carrier-quality and pricing events are delivered as signed JSON to your endpoint. Verify the HMAC over the raw body before parsing, acknowledge with 2xx inside five seconds, and process asynchronously. Failed deliveries retry with exponential backoff for 24 hours and can be replayed from the dashboard or the API.
Volta-Signature: t=1785342900,v1=6f3c9a1d…
HMAC-SHA256 over `t` + `.` + raw body
Volta-Event-Id: evt_1XA55TRB
Stable per event — use it to de-duplicate
Volta-Delivery: 3 of 12
Attempt counter, exponential backoff over 24 h
Volta-Api-Version: 2026-04-01
Pinned per account, never changed silently
1import express from "express";2import { verifySignature } from "@volta/node/webhooks";34const app = express();56app.post("/voice/events", express.raw({ type: "*/*" }), (req, res) => {7 const ok = verifySignature({8 payload: req.body, // raw bytes, never the parsed body9 signature: req.header("Volta-Signature"), // t=1785…,v1=6f3c…10 secret: process.env.VOLTA_WEBHOOK_SECRET,11 toleranceSeconds: 300,12 });1314 if (!ok) return res.status(401).send("invalid signature");1516 const event = JSON.parse(req.body.toString());17 queue.enqueue(event); // acknowledge fast, process asynchronously18 res.status(204).end();19});Developer experience
Place a supervised international call in one request
Authenticate once, choose a route class, and VOLTA handles carrier selection, transcoding, recording and event delivery. Idempotency keys, signed webhooks and per-second balance checks are standard.
curl -X POST https://api.volta.network/v2/calls \
-H "Authorization: Bearer $VOLTA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "+442035550100",
"to": "+442038900112",
"route_class": "platinum",
"record": true,
"webhook": "https://acme.example/voice/events"
}'
# 201 Created
# { "call_id": "cl_7Q2XK9RD", "state": "ringing", "pdd_ms": 1840 }