Free Call: 051 111 222 122 - Agent Desk . Mon-Sat . 10:00 - 1900 PKT

Al Asad Travel & Tours
Partner API

Build on Al Asad inventory

Show our group fares and Umrah packages on your own website or system, send customer requests and follow them to confirmation.

Getting started

From key to first request

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.

2. Read the catalogue

List group fares and Umrah packages with your own retail markup applied. Responses are cached and support ETag.

3. Send and track requests

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.

Authentication

Two key types

adk_pk_… (browser key)

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.

adk_sk_… (secret key)

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.

Quick start

Three calls

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 }
  }'
MethodPathWhat it does
GET/v1/partner/pingCheck a key
GET/v1/partner/catalogue/groupsGroup fares (filters, cursor paging)
GET/v1/partner/catalogue/packagesUmrah packages, departures
POST/v1/partner/requestsCreate a customer request (Idempotency-Key)
GET/v1/partner/requests/{id}Read a request; ref:{yourReference} also works
POST/v1/partner/requests/{id}/cancelCancel, or ask head office to cancel
GET/v1/partner/eventsEvent feed for recovery after missed webhooks
Webhooks

Follow every change

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 minutes
Downloads

Spec, collection and samples

The live, rendered reference is at https://airdeskapi-production.up.railway.app/v1/partner/docs.