Getting started
Your first Ultra API call in 60 seconds.
1. Get an API key
Request one at ultranetwork.co/contact. Self-serve key minting is shipping shortly; for now we issue keys manually.
A key looks like ulk_AbCdEf123…. Treat it like a password — server-side only, never in browser code or client bundles.
2. Make a call
export ULTRA_API_KEY=ulk_yourkey
curl -H "Authorization: Bearer $ULTRA_API_KEY" \
"https://ultranetwork.co/api/v1/trips?limit=3"
If your key is bound to a single organization, the response is your trips. If you have a cross-org master key (rare), add organization_id:
curl -H "Authorization: Bearer $ULTRA_API_KEY" \
"https://ultranetwork.co/api/v1/trips?limit=3&organization_id=YOUR_ORG_UUID"
A successful response looks like:
{
"data": [
{
"id": "dfa6fac3-…",
"organization_id": "d39a9d36-…",
"title": "Ali, Costa Rica, 14 Jun",
"stage": "draft_plan",
"destination": "Costa Rica",
"start_date": "2026-06-15",
"end_date": "2026-06-20",
"party_size": 2,
"client": { "id": "e448e81e-…", "name": "Ali Marco" }
}
],
"page": { "next_cursor": "eyJ…", "has_more": true, "limit": 3 }
}
3. Pick a surface
Now you have a working key, choose the surface that fits your use case:
- Use HTTP directly — see the API reference. The OpenAPI document at
/api/v1/openapi.jsonis the source of truth for every endpoint. - Build an agent — install the MCP server in Claude Code / Cursor / Windsurf. Every endpoint becomes a tool the LLM can call.
- Scripts & CI — install the CLI. Every endpoint becomes a subcommand:
ultra list_trips --limit=5.
What you can build today
13 operations across three resources, composing into the workflows a real travel-agent business runs end-to-end. Read a client's trip, append a hotel, dispatch a booking through one of ten supplier integrations, surface the confirmation back to the operator. The same operations work from your backend, your shell, your CI pipeline, or your LLM-powered agent — one OpenAPI spec, four ways to reach it.
| Resource | Operations |
|---|---|
| Trips | list, create, get, list-items, append-item, update-item, delete-item |
| Suppliers | list, get |
| Bookings | list, create (manual + adapter dispatch through 10 supplier integrations), get, update (incl. cancel-via-adapter) |
Coming next: webhooks (push-driven agent workflows, no polling), self-serve key minting, more supplier-adapter coverage, official TypeScript and Python SDKs. See the changelog.
Conventions
- All times are ISO 8601 (
2026-05-16T21:09:09.785Z). - All IDs are UUIDs (except trip-item IDs, which are
item_<32-hex>). - Money values are integer cents (
{ amount_cents: 12345, currency: "USD" }). - Pagination is keyset-based — see the pagination guide.
- Errors follow a stable envelope — see the errors guide.
Next
- Authentication — scopes, org binding, rate limits
- API reference — every endpoint, every parameter
- MCP | CLI — pick your surface