1. Get access
Partner agencies sign in to the agent portal, open Website & API and request access. Create a test key straight away; live keys follow head office approval.
Show our group fares and Umrah packages on your own website or system, send customer requests and follow them to confirmation.
Partner agencies sign in to the agent portal, open Website & API and request access. Create a test key straight away; live keys follow head office approval.
List group fares and Umrah packages with your own retail markup applied. Responses are cached and support ETag.
Create customer requests with an Idempotency-Key, then follow them by polling or by signed webhooks.
API access is for partner agencies. Not a partner yet? Apply through the B2B portal.
For your website's JavaScript. Reads the catalogue at retail prices and creates requests with a Cloudflare Turnstile token. Only works from the website addresses you list.
For your server only. Sees net prices, reads requests and events, forwards or cancels. Never ship it in a page or an app.
Send the key as Authorization: Bearer <key>. Never put it in a URL.
curl -s https://airdeskapi-production.up.railway.app/v1/partner/ping \
-H "Authorization: Bearer $SK"
curl -s "https://airdeskapi-production.up.railway.app/v1/partner/catalogue/groups?from=KHI&to=JED" \
-H "Authorization: Bearer $SK"
curl -s https://airdeskapi-production.up.railway.app/v1/partner/requests \
-H "Authorization: Bearer $SK" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"productType": "GROUP",
"groupId": "<group id>",
"cabinId": "<cabin id>",
"pax": { "adults": 2, "children": 0, "infants": 0 },
"contact": { "name": "Ali Khan", "phone": "+923001234567" },
"partnerReference": "WEB-2026-00042",
"consent": { "accepted": true }
}'| Method | Path | What it does |
|---|---|---|
| GET | /v1/partner/ping | Check a key |
| GET | /v1/partner/catalogue/groups | Group fares (filters, cursor paging) |
| GET | /v1/partner/catalogue/packages | Umrah packages, departures |
| POST | /v1/partner/requests | Create a customer request (Idempotency-Key) |
| GET | /v1/partner/requests/{id} | Read a request; ref:{yourReference} also works |
| POST | /v1/partner/requests/{id}/cancel | Cancel, or ask head office to cancel |
| GET | /v1/partner/events | Event feed for recovery after missed webhooks |
We POST a thin JSON event (ids and the new status, never customer details) to your endpoint each time a request changes. Deduplicate on the event id; order is not guaranteed.
Missed something? GET /v1/partner/events returns everything after the last sequence you saw.
Airdesk-Webhook-Id: evt_…
Airdesk-Webhook-Timestamp: 1790000000
Airdesk-Webhook-Signature: v1=<hex>
signature = HMAC-SHA256(
secret, // adk_whsec_…
"<id>.<timestamp>.<raw body>"
)
// compare in constant time,
// reject if older than 5 minutesThe live, rendered reference is at https://airdeskapi-production.up.railway.app/v1/partner/docs.