API Overview
The Orbit API is a RESTful JSON API that provides programmatic access to all Orbit services — messaging, voice, AI agents, flows, numbers, and verification.Using the SDKs
Prefer the typed client, but this page’s endpoint has no helper yet — the genericrequest() keeps auth/retries and the { data, meta } envelope identical:
client.request() escape hatch above. See the Python SDK.
Raw curl in the body of this page works identically. Full SDK index at SDK quickstart.
Base URL
All API requests are made to:Authentication
Include your API key in theX-API-Key header with every request:
Request Format
- All request bodies must be JSON with
Content-Type: application/json - Phone numbers must be in E.164 format (e.g.,
+14155552671) - Timestamps are ISO 8601 in UTC (e.g.,
2026-03-08T12:00:00Z) - Pagination uses cursor-based pagination (no offset-based)
Idempotency
EveryPOST that creates a resource accepts an Idempotency-Key header. Orbit stores the completed response against the key for 24 hours: replay the exact same key + body and you get the original response back — no duplicate send, no second charge. Reuse a key with a different body and you get 409 IDEMPOTENCY_KEY_REUSED. On money-moving endpoints (top-up checkout and similar) the header is required, and every official SDK auto-generates a UUIDv4 key on every non-GET request.
The full contract — re-entry guards on balance mutations, how to override the SDK key when retrying from your own queue — is in Idempotency and safe retries.
Response Format
Successful Response
Every successful response returns adata object and a meta object:
List Response (Paginated)
List endpoints include cursor-based pagination inmeta:
Error Response
Errors include a structurederror object with a machine-readable code:
HTTP Status Codes
Rate Limiting
Rate limits are enforced per API key. Current limits are returned in response headers:
When rate limited, you receive a
429 response. Implement exponential backoff and respect the X-RateLimit-Reset header.
Request ID
Every response includes anX-Request-Id header and a request_id in the meta object. Include this ID when contacting support for faster debugging.
API Endpoints
The table below covers the major service groups. It is not exhaustive — the OpenAPI spec at/openapi.json is the authoritative, complete list of endpoints, parameters, and schemas.
For the complete set of service groups (including ads, channels, commerce, compliance, knowledge, notifications, SCIM, team chat, Telegram, USSD, and more), refer to the OpenAPI spec.
SDKs
Use an official SDK for a better development experience:- Node.js / TypeScript — server-side
- Web (browser) — client-side / embeddable widgets
- Python, Go, Java, PHP, Ruby, .NET — coming soon. Until then, the REST API is fully usable from any HTTP client.