1. Overview
The Skyloom Travel API lets a partner search flights, fares, seat maps and baggage
programmatically. It is search-only: booking, payment, ticketing and
servicing are completed on skyloomtravel.uk. Every authenticated search
response includes a book_url; you redirect the traveller to that link to
complete the booking on Skyloom. Your partner attribution is preserved through the
redirect, so completed bookings are credited to you.
Your app --> POST /api/flights/search (api_key) --> Skyloom
Your app <-- { "book_url": "...", "results": [ ... ] } <-- Skyloom
Traveller --> follow book_url --> skyloomtravel.uk (form, payment, ticket)
Important — read before testing
An earlier draft of this guide described a versioned /api/v1/ service
with Bearer authentication and a Postman download. That interface is on our roadmap
and is not live yet; calling /api/v1/... returns
404. This page documents the endpoints that are live today. The planned
v1 changes are summarized in section 11.
2. Access and authentication
An API key is required, including for evaluation. Skyloom issues a
dedicated evaluation key on request; it is search-only and safe to use against
production because no booking is created until a traveller completes checkout. Contact
support@skyloomtravel.uk to obtain your key. Keep it confidential.
How to authenticate
Send your key as the api_key field in the request body
(Content-Type: application/x-www-form-urlencoded). A session cookie or an
Authorization header is not used by the current API.
Test environment
There is no separate sandbox host at this time. Evaluation runs against the production base URL with your search-only key. If your integration process requires an isolated staging host, contact support and we will provision one.
3. Endpoints
Search endpoints (for partners):
| Method | Path | Purpose | Auth |
|---|---|---|---|
| POST | /api/flights/search | One-way flight search | api_key |
| POST | /api/flights/search-roundtrip | Round-trip search | api_key |
| GET | /api/flights/events | Daily lowest-fare calendar | open |
| GET | /api/flights_locations | Airport lookup / autocomplete | open |
Servicing endpoints (post-booking; require a Skyloom booking reference, not used for search):
| Method | Path | Required |
|---|---|---|
| POST | /api/flights/seatmap | pnr, supplier |
| POST | /api/flights/cabin-baggage | pnr, supplier |
Send your api_key on every call. The open endpoints will
also require the key once v1 ships.
4. One-way search
Request parameters
| Field | Required | Example | Notes |
|---|---|---|---|
api_key | yes | YOUR_API_KEY | issued by Skyloom |
origin | yes | ASB | IATA code |
destination | yes | IST | IATA code |
departure_date | yes | 2026-07-15 | YYYY-MM-DD |
type | yes | oneway | oneway or round |
adults | yes | 1 | integer ≥ 1 |
children | no | 0 | parameter name is children |
infants | no | 0 | integer |
class_type | yes | economy | economy or business |
currency | no | USD | defaults to USD |
Example request
curl --location 'https://skyloomtravel.uk/api/flights/search' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'api_key=YOUR_API_KEY' \
--data-urlencode 'origin=ASB' \
--data-urlencode 'destination=IST' \
--data-urlencode 'departure_date=2026-07-15' \
--data-urlencode 'type=oneway' \
--data-urlencode 'adults=1' \
--data-urlencode 'children=0' \
--data-urlencode 'infants=0' \
--data-urlencode 'class_type=economy' \
--data-urlencode 'currency=USD'
Example response
Prices already include all markup and tax. The internal margin is not exposed.
{
"book_url": "https://skyloomtravel.uk/flights/ASB/IST/oneway/economy/2026-07-15/1/0/0?aid=12&label=your_label",
"results": [
{
"price": 250.00,
"currency": "USD",
"type": "oneway",
"adults": 1, "children": 0, "infants": 0,
"class_type": "economy",
"segments": [
{
"airline": "T5",
"name": "Turkmenistan Airlines",
"flight_no": "T5-601",
"departure_code": "ASB", "departure_airport": "Ashgabat",
"departure_date": "2026-07-15", "departure_time": "08:30",
"arrival_airport": "Istanbul", "arrival_date": "2026-07-15", "arrival_time": "12:10",
"class": "economy", "baggage": "30 kg", "cabin_baggage": "7 kg"
}
]
}
]
}
When no flights match, the response is
{ "book_url": "...", "results": [] }.
5. Round-trip search
Use POST /api/flights/search-roundtrip with type=round and
an additional return_date. Outbound and return options are returned
separately.
curl --location 'https://skyloomtravel.uk/api/flights/search-roundtrip' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'api_key=YOUR_API_KEY' \
--data-urlencode 'origin=ASB' \
--data-urlencode 'destination=IST' \
--data-urlencode 'departure_date=2026-07-15' \
--data-urlencode 'return_date=2026-07-22' \
--data-urlencode 'type=round' \
--data-urlencode 'adults=1' \
--data-urlencode 'class_type=economy' \
--data-urlencode 'currency=USD'
6. Airport lookup
GET /api/flights_locations?city=Istanbul returns matching airports for
autocomplete.
[
{ "code": "IST", "airport": "Istanbul Airport", "city": "Istanbul",
"country": "Turkey", "late": "41.275278", "long": "28.751944", "type": "airport" }
]
A daily lowest-fare calendar is available at
GET /api/flights/events over a date range, for calendar-style displays.
7. Booking by redirect
Every authenticated search returns a book_url. Redirect the traveller
there to complete booking and payment on Skyloom. The link encodes the search and your
attribution:
https://skyloomtravel.uk/flights/{ORIGIN}/{DEST}/{type}/economy/{date}/{adults}/{children}/{infants}?aid={partner_id}&label={label}
# round trip: the return date is appended before the query string
aididentifies your partner account and is attached to the resulting booking for attribution.labelis your optional campaign tag.- Prices are always recomputed on Skyloom at booking time; the URL never carries a trusted price.
Why redirect
Keeping checkout, payment and ticketing on Skyloom means you do not handle card data, fare rules or airline ticketing. You integrate search and send the traveller to a prefilled booking page.
8. Servicing endpoints
POST /api/flights/seatmap and POST /api/flights/cabin-baggage
return seat and baggage detail for an existing booking and require a
pnr and supplier. They are intended for post-booking
servicing, not for the pre-booking search flow.
9. Errors
The current API returns HTTP 200 with a JSON body that indicates
success or failure:
{ "status": false, "message": "api_key param or value missing" }
- Missing or invalid
api_key→status: falsewith a message. - A successful search returns the
{ book_url, results }object.
A structured error model (machine-readable codes such as
AUTH_INVALID_KEY, RATE_LIMIT, and proper HTTP statuses
401/429/502/504) is part of the v1 roadmap; see below.
10. NDC
The Skyloom Partner API is a proprietary REST/JSON search API. It is not an IATA NDC interface, so there is no NDC version. Upstream flight content is sourced from the airline reservation system (HITIT CRANE) over SOAP/OTA, not via NDC. If NDC schema compatibility is a requirement on your side, contact us so we can scope it separately.
11. Roadmap (upcoming v1)
A versioned interface is planned. When it ships, the following will change for
partners. The current /api/ path will remain available until it is
formally deprecated with notice, so your integration will not break.
| Capability | Now | Planned (v1) |
|---|---|---|
| Base path | /api/ | /api/v1/ |
| Authentication | api_key in body | Authorization: Bearer |
| Rate limiting | none | 300 requests/min per key |
| Errors | status:false + message | structured codes + HTTP statuses |
| Offers | path-style book_url | stable offer_id + offer deep link |
| Conversion postbacks | n/a | signed HMAC postback on paid booking |
| Contract artifacts | this guide | OpenAPI 3.0 + Postman collection |