Jets & Partners API
Docs / API Endpoints

API Reference

Complete reference for all available API endpoints.

Base URL
https://booking.api.jets.partners/api
Page 1 of 1

Airport Search

Search for airports by city, name, or ICAO/IATA code.

GET /airports/search

Search for airports by text query. Returns matching airports with their ICAO/IATA codes, names, and locations.

Query Parameters

Parameter Type Required Description
qstringYesSearch query (min 2 characters)

Example Request

curl -X GET "https://booking.api.jets.partners/api/airports/search?q=Paris" \
  -H "Authorization: Bearer YOUR_API_KEY"

Response

{
  "success": true,
  "airports": [
    {
      "code": "LFPG",
      "icao": "LFPG",
      "iata": "CDG",
      "name": "Charles de Gaulle International Airport",
      "city": "Paris",
      "country": "France",
      "region": "Île-de-France",
      "lat": 49.012798,
      "lng": 2.55
    }
  ],
  "count": 1
}

Aircraft Quoting

Get available aircraft options with pricing for a flight route.

POST /quoting/options

Search for available aircraft with pricing. Supports one-way and round-trip flights. You may specify a category or omit it for auto-resolution.

Request Body (One-Way)

{
  "legs": [
    {
      "origin": { "icao": "KJFK" },
      "destination": { "icao": "KLAX" },
      "departure": "2026-02-15",
      "passengers": 4
    }
  ],
  "category": "heavy_jet"
}

Request Body (Round-Trip)

{
  "legs": [
    {
      "origin": { "icao": "KJFK" },
      "destination": { "icao": "KLAX" },
      "departure": "2026-02-15",
      "passengers": 4
    },
    {
      "origin": { "icao": "KLAX" },
      "destination": { "icao": "KJFK" },
      "departure": "2026-02-20",
      "passengers": 4
    }
  ],
  "category": "heavy_jet"
}

Parameters

Field Type Required Description
legsarrayYesFlight leg(s) - 1 for one-way, 2 for round-trip
legs[].origin.icaostringYesOrigin airport ICAO code
legs[].destination.icaostringYesDestination airport ICAO code
legs[].departurestringYesDeparture date (YYYY-MM-DD)
legs[].passengersnumberYesNumber of passengers
categorystringYesAircraft category (see below)
page_tokenstringNoToken from previous response to fetch next page. When provided, legs is optional.

cURL

curl -X POST "https://booking.api.jets.partners/api/quoting/options" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "legs": [{
      "origin": { "icao": "KJFK" },
      "destination": { "icao": "KLAX" },
      "departure": "2026-02-15",
      "passengers": 4
    }],
    "category": "heavy_jet"
  }'

Response

{
  "success": true,
  "options": [
    {
      "aircraft": {
        "pax": 12,
        "modelDescription": "Bombardier Challenger 604",
        "category": "heavyJet",
        "home": { "icao": "KCHA" },
        "currency": "USD",
        "yearOfMake": 1998,
        "yearOfRefurb": 2015,
        "amenities": ["WiFi", "Pet Friendly", "Flight Phone", "Cabin Attendant"],
        "photos": [
          "https://example.com/photos/aircraft.jpg"
        ]
      },
      "quote": {
        "amount": 47180
      },
      "airtimePax": 6,
      "op": {
        "name": "Skyward Aviation"
      },
      "availability": {
        "status": "unknown"
      }
    }
  ],
  "count": 3,
  "pagination": {
    "page": 1,
    "page_size": 3,
    "total_pages": 4,
    "total_count": 12,
    "has_more": true,
    "page_token": "cXVvdGluZzphMWIyYzNkNGU1fDI"
  }
}
POST /quoting/options/auto AUTO

Auto-category variant — always resolves the aircraft category from flight distance. Any category field in the request is ignored.

Request Body

{
  "legs": [
    {
      "origin": { "icao": "KJFK" },
      "destination": { "icao": "KLAX" },
      "departure": "2026-02-15",
      "passengers": 4
    }
  ]
}

Response format is identical to /quoting/options — returns paginated aircraft options with pricing, sorted by price ascending.

Empty Legs

Search for discounted empty leg (repositioning) flights.

POST /empty-legs/search

Search for available empty leg flights at discounted prices.

Request Body

{
  "departure": "KJFK",
  "arrival": "KLAX",
  "dateRange": "2026-01-21:2026-02-28",
  "radius": 140
}

Parameters

Field Type Required Description
departurestringYesDeparture airport ICAO code
arrivalstringYesArrival airport ICAO code
dateRangestringNoDate range: YYYY-MM-DD:YYYY-MM-DD
radiusnumberNoSearch radius in nautical miles (default: 100)
page_tokenstringNoToken from previous response to fetch next page. When provided, other fields are optional.

cURL

curl -X POST "https://booking.api.jets.partners/api/empty-legs/search" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "departure": "KJFK",
    "arrival": "KLAX",
    "dateRange": "2026-01-21:2026-02-28",
    "radius": 140
  }'

Response

{
  "success": true,
  "flights": [
    {
      "id": "57da0abbc1fe036a3c70eb1c_wwqa554n",
      "from_airport": {
        "icao": "KTEB",
        "iata": "TEB",
        "name": "Teterboro Airport",
        "city": "Teterboro",
        "country": "United States"
      },
      "to_airport": {
        "icao": "KVNY",
        "iata": "VNY",
        "name": "Van Nuys Airport",
        "city": "Van Nuys",
        "country": "United States"
      },
      "dates": {
        "earliest": "2026-01-20T05:00:00.000Z",
        "latest": "2026-01-23T04:59:59.000Z"
      },
      "aircraft": {
        "type": "Gulfstream G IV",
        "category": "heavyJet",
        "max_passengers": 13,
        "features": [],
        "images": []
      },
      "flight_time": {
        "formatted": "05:00",
        "minutes": 300
      },
      "price": 41948,
      "currency": "USD",
      "operator": {
        "name": "Worldwide Jet"
      }
    }
  ],
  "count": 3,
  "pagination": {
    "page": 1,
    "page_size": 3,
    "total_pages": 2,
    "total_count": 5,
    "has_more": true,
    "page_token": "ZW1wdHlsZWdzOmIzYzRkNWU2Zjd8Mg"
  }
}

Aircraft Categories

Available aircraft categories for quoting requests.

very_light_jet
Very Light Jet
4-5 passengers
light_jet
Light Jet
6-8 passengers
midsize_jet
Midsize Jet
7-9 passengers
super_midsize_jet
Super Midsize Jet
8-10 passengers
heavy_jet
Heavy Jet
10-16 passengers
ultra_long_range_jet
Ultra Long Range
12-19 passengers

Pagination

Endpoints that return multiple results (/quoting/options, /quoting/options/auto, and /empty-legs/search) use token-based pagination. Results are returned 3 per page and cached in Redis for 5 minutes.

How It Works

  1. Send your initial search request with the normal parameters.
  2. The response includes a pagination object with a page_token.
  3. To fetch the next page, send a new request with only the page_token field (the legs array becomes optional).
  4. Repeat until has_more is false and page_token is null.

Pagination Object

{
  "pagination": {
    "page": 1,
    "page_size": 3,
    "total_pages": 4,
    "total_count": 12,
    "has_more": true,
    "page_token": "cXVvdGluZzphMWIyYzNkNGU1fDI"
  }
}

Fetching Next Page

curl -X POST "https://booking.api.jets.partners/api/quoting/options" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "page_token": "cXVvdGluZzphMWIyYzNkNGU1fDI" }'

Cache expiry: Results are cached for 5 minutes. If the cache expires before you fetch all pages, you will receive a 410 response with error code CACHE_EXPIRED. Re-send your original search to start a new paginated session.

Account

Manage your account and view API usage statistics.

GET /account

Get your account information and API key details.

cURL

curl -X GET "https://booking.api.jets.partners/api/account" \
  -H "Authorization: Bearer YOUR_API_KEY"

Response

{
  "success": true,
  "account": {
    "id": "client_abc123",
    "name": "Acme Aviation",
    "email": "api@acme-aviation.com",
    "created_at": "2024-01-15T10:30:00Z",
    "api_key": {
      "prefix": "jtp_abc...",
      "created_at": "2024-01-15T10:30:00Z",
      "last_used": "2026-01-21T14:22:00Z"
    },
    "rate_limit": {
      "requests_per_minute": 60,
      "requests_per_day": 10000
    }
  }
}
GET /account/usage

Get your API usage statistics for the current billing period.

Query Parameters

Parameter Type Required Description
startstringNoStart date (RFC3339, default: 30 days ago)
endstringNoEnd date (RFC3339, default: now)

cURL

curl -X GET "https://booking.api.jets.partners/api/account/usage?start=2026-01-01T00:00:00Z&end=2026-01-31T23:59:59Z" \
  -H "Authorization: Bearer YOUR_API_KEY"

Response

{
  "success": true,
  "usage": {
    "period": {
      "start": "2026-01-01T00:00:00Z",
      "end": "2026-01-31T23:59:59Z"
    },
    "requests": {
      "total": 1542,
      "successful": 1498,
      "failed": 44
    },
    "endpoints": {
      "/api/airports/search": 523,
      "/api/quoting/options": 812,
      "/api/empty-legs/search": 207
    },
    "rate_limit": {
      "current_minute": 12,
      "limit_per_minute": 60,
      "current_day": 156,
      "limit_per_day": 10000
    }
  }
}

Error Handling

All endpoints return consistent error responses.

Error Response Format

{
  "success": false,
  "error": {
    "code": "ERROR_CODE",
    "message": "Human readable error message"
  }
}

Common Error Codes

Code Status Description
MISSING_API_KEY401API key not provided in request
INVALID_API_KEY401API key is invalid or revoked
RATE_LIMIT_EXCEEDED429Too many requests
INVALID_REQUEST400Request body or parameters invalid
CACHE_EXPIRED410Paginated results cache expired (5 min TTL). Re-send your original search.