Skip to main content

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 generic request() keeps auth/retries and the { data, meta } envelope identical:
Python (same call via the SDK’s escape hatch):
The Python SDK is core-scope — it wraps the 8 core resources (messaging, voice, contacts, campaigns, verify, numbers) and reaches everything else through the generic 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 the X-API-Key header with every request:
See Authentication for details on API key types and JWT bearer tokens.

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

Every POST 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 a data object and a meta object:

List Response (Paginated)

List endpoints include cursor-based pagination in meta:
Fetch the next page by passing the cursor:

Error Response

Errors include a structured error 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 an X-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.