API Reference
Complete reference for all available API endpoints.
https://booking.api.jets.partners/api Airport Search
Search for airports by city, name, or ICAO/IATA code.
/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 |
|---|---|---|---|
q | string | Yes | Search 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.
/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 |
|---|---|---|---|
legs | array | Yes | Flight leg(s) - 1 for one-way, 2 for round-trip |
legs[].origin.icao | string | Yes | Origin airport ICAO code |
legs[].destination.icao | string | Yes | Destination airport ICAO code |
legs[].departure | string | Yes | Departure date (YYYY-MM-DD) |
legs[].passengers | number | Yes | Number of passengers |
category | string | Yes | Aircraft category (see below) |
page_token | string | No | Token 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"
}
} /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.
/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 |
|---|---|---|---|
departure | string | Yes | Departure airport ICAO code |
arrival | string | Yes | Arrival airport ICAO code |
dateRange | string | No | Date range: YYYY-MM-DD:YYYY-MM-DD |
radius | number | No | Search radius in nautical miles (default: 100) |
page_token | string | No | Token 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 light_jet midsize_jet super_midsize_jet heavy_jet ultra_long_range_jet 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
- Send your initial search request with the normal parameters.
- The response includes a
paginationobject with apage_token. - To fetch the next page, send a new request with only the
page_tokenfield (thelegsarray becomes optional). - Repeat until
has_moreisfalseandpage_tokenisnull.
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.
/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
}
}
} /account/usage Get your API usage statistics for the current billing period.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
start | string | No | Start date (RFC3339, default: 30 days ago) |
end | string | No | End 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_KEY | 401 | API key not provided in request |
INVALID_API_KEY | 401 | API key is invalid or revoked |
RATE_LIMIT_EXCEEDED | 429 | Too many requests |
INVALID_REQUEST | 400 | Request body or parameters invalid |
CACHE_EXPIRED | 410 | Paginated results cache expired (5 min TTL). Re-send your original search. |