Explore the API from the Postman workbench
The Developer hub ships a Postman page that exports a Postman collection and environment generated from the live API surface — one request per public endpoint, every JSON body seeded with a working example. Open it from Developer → Postman Collection in the dashboard. This page covers where it lives, how import works, how auth is pre-wired, how to run sandbox and production side by side, and how to keep a local Postman workspace in sync. The import mechanics and first-response shapes are the same ones you’d use with the curated per-channel collections — the companion walkthrough: Ship a sample request with the Postman collections. The difference here is that the dashboard export is generated per-organization over the whole catalog, not a static sample set.1. Where it lives
In the dashboard sidebar, open Developer → Postman Collection. The page renders two download buttons:- Download Postman Collection — one request per public endpoint, grouped into folders by tag (Messages, Numbers, Flows, Webhooks, Billing, and so on).
- Download Postman Environment — three variables pre-filled for your organization:
orbit_base_url,orbit_org_id, and a blankorbit_api_keymarked as a secret.
The seeded baseline —
static/orbit-postman-collection.json — is regenerated from the published OpenAPI spec whenever the docs are rebuilt, so following the same pattern offline means the collection you import matches the published contract, not a stale export.2. Import into Postman
From Postman’s top bar: Import → File, pick the downloaded collection JSON, then repeat for the environment JSON. Postman registers the environment as Orbit — <your org name> and the collection as Orbit CPaaS — <your org name>. If you prefer the command line — or need to pull the artifacts outside an active dashboard session — the same endpoints the buttons call respond to any signedX-API-Key request:
3. Auth is auto-injected at collection level
The exported collection carries oneauth.apikey block pointing at the X-API-Key header with value {{orbit_api_key}}, and every request inside it is set to Inherit auth from parent. That means you paste your key ONCE — into the environment’s orbit_api_key secret — and every request resolves the same header as a signed curl call:
orbit_api_key blank by design, so the file is safe to share with a teammate. After import, open the environment, paste a dv_test_sk_… or dv_live_sk_… key into orbit_api_key, and select the environment in Postman’s picker. The variable is typed secret, so it stays in Postman’s vault rather than syncing to the shared workspace.
4. Sandbox and production, side by side
There is no separate sandbox host —{{orbit_base_url}} resolves to the same base; the environment gates sandbox via the key prefix, not the URL (full map: Sandbox & base URLs). Keep two environments in the picker so a wrong-environment send is a visible mistake:
- Orbit — Sandbox —
orbit_api_keyset todv_test_sk_…. Send calls simulate delivery (test_sent), soto/fromdon’t have to be real numbers. - Orbit — Live —
orbit_api_keyset todv_live_sk_…. The collection itself never changes — only the active environment does.
5. Keeping a local Postman app in sync
The exported JSON is a plain Collection v2.1 file, so import it once into your local Postman app (or a team workspace), then re-import in place whenever you’ve rotated a key or the API surface has changed. The dashboard page re-exports on every click — it never serves a cached artifact — so grabbing a fresh download is the whole sync loop. If you share an exported collection with a teammate, re-import the same environment or one generated for THEIR organization —orbit_org_id is baked in per-organization, and a mixed org id on org-scoped endpoints produces 403s with no obvious cause. Rotated your key? Paste the new value into orbit_api_key before the old key’s grace window expires (default 24 hours, up to 7 days) or requests start returning 401.
6. Three examples to fire first
Pick one request per class — a write, a read, a config create — against the Environment you just imported.send-message (write class)
Messages → POST /messages/sms:
202 Accepted with data.id (msg_…) and data.status (sent, or test_sent in sandbox). Re-run the same request and the Idempotency-Key header protects you from a duplicate send.
list-numbers (read class)
Numbers → GET /numbers — pass ?limit=10 to keep the first page small:
200 OK with an array under data and pagination controls under meta — the shape explains why list endpoints never return scalar counts. Details: Numbers API.
create-flow (config class)
Flows → POST /flows:
201 Created with data.id (flow_…) — that id is the handle for POST /flows/:id/execute and every version snapshot the builder writes. Shapes and trigger types: Flows API.
Troubleshooting
The failure classes here are the same ones the curated collections walk through, so branch onerror.code and check the active environment’s orbit_api_key first — never on message wording. Worked examples for the two shapes you hit first (401 from missing inherit-auth, 422 with a details.field): Postman collections troubleshooting.
See also
- Developer portal — the org-generated collection and environment endpoints behind these buttons
- Ship a sample request with the Postman collections — the curated per-channel collections and import walkthrough
- API integration — base URLs, authentication, channel map
- API error handling by example — typed errors past the two shapes above
- Go-live checklist — promotion gate before live traffic