Skip to navigation

Routes and calendar

List the city pairs on sale and the dates that have trains
View as Markdown

Before you search, you can ask the schedule service which routes are on sale and which dates have a train. Both are plain GET calls on the schedule service, not the OTA endpoint, so they take no local-name header. Authenticate with your x-api-key as usual.

List the routes

GET /sms-gateway-service/schedule/routes?sales_channel=OTA returns every origin station and the destinations you can sell from it.

curl "https://api.sar.worldticket.cloud/sms-gateway-service/schedule/routes?sales_channel=OTA" \
-H "x-api-key: YOUR_API_KEY"
[
{
"origin": {
"code": "DMX",
"name": "Madinah",
"cityName": "Madinah",
"cityCode": "DMX",
"country": "SA"
},
"destinations": [
{ "code": "JXD", "name": "Al-Sulimaniyah", "cityName": "Jeddah", "cityCode": "JXD", "country": "SA" },
{ "code": "KCX", "name": "KCX", "cityName": "King Abdullah Economic City", "cityCode": "KCX", "country": "SA" },
{ "code": "MKX", "name": "Makkah", "cityName": "Makkah", "cityCode": "MKX", "country": "SA" }
]
},
{
"origin": {
"code": "MKX",
"name": "Makkah",
"cityName": "Makkah",
"cityCode": "MKX",
"country": "SA"
},
"destinations": [
{ "code": "DMX", "name": "Madinah", "cityName": "Madinah", "cityCode": "DMX", "country": "SA" },
{ "code": "JXD", "name": "Al-Sulimaniyah", "cityName": "Jeddah", "cityCode": "JXD", "country": "SA" },
{ "code": "KCX", "name": "KCX", "cityName": "King Abdullah Economic City", "cityCode": "KCX", "country": "SA" }
]
}
]

Use code as the locationCode in your search. The list is short and changes rarely, so cache it and refresh it daily.

Dates with trains

GET /sms-gateway-service/schedule/calendar/availability lists the dates inside a window that have at least one train on a route. It is built for a date picker: grey out the days that are missing from the list.

Query parameterWhat to send
start_dateStart of the window, as YYYY-MM-DDTHH:MM:SS.
end_dateEnd of the window, same format.
departure_airportOrigin station code.
arrival_airportDestination station code.
directtrue to count direct trains only.
curl "https://api.sar.worldticket.cloud/sms-gateway-service/schedule/calendar/availability?start_date=2026-05-01T00:00:00&end_date=2026-05-05T00:00:00&departure_airport=JXD&arrival_airport=MKX&direct=true" \
-H "x-api-key: YOUR_API_KEY"
{
"departureAirport": "JXD",
"arrivalAirport": "MKX",
"startDate": "2026-05-01",
"endDate": "2026-05-05",
"dates": [
"2026-05-01",
"2026-05-02",
"2026-05-03",
"2026-05-04",
"2026-05-05"
]
}

A date in the list means a train runs that day. It does not promise seats or a price. Search with OTA_AirLowFareSearchRQ for fares and availability on the day the traveler picks.