---
title: "Published timetable for a route"
method: GET
path: "/v1/flights/schedules"
tags: ["Flights"]
---

# Published timetable for a route

`GET /v1/flights/schedules`

What actually flies a route – times, duration, aircraft, and the weekdays each flight runs – with no prices and no search to settle. Nonstop flights only. Airport codes resolve to their parent city (LHR to LON), and metadata echoes what each side resolved to.

## Query parameters

- `from` string, required
- `to` string, required
- `airline` string
- `siteCode` string
- `locale` string
- `page` integer
- `pageSize` integer

## Response `200`

Scheduled flights, plus the resolved route and the market used.

- object
  - `results` object[], required — The scheduled flights for this route, a timetable with no prices.
    - `airlineCode` string, required — Marketing carrier code – what `airline` filters on.
    - `departureAirportCode` string, required — Departure airport IATA code.
    - `arrivalAirportCode` string, required — Arrival airport IATA code.
    - `departureTime` string, required — Local HH:MM at the departure airport.
    - `arrivalTime` string, required — Local HH:MM at the arrival airport.
    - `durationMinutes` number, required — Total scheduled duration in minutes.
    - `stopsCount` number, required — Stops on the route, as the timetable reports them; 0 is nonstop. This read covers nonstop scheduled flights, so a connecting itinerary is absent rather than listed with a stop.
    - `arrivalDayOffset` number, required — Days the arrival falls after departure; 1 means next-day.
    - `segments` object[], required — The individual flights that make up this schedule.
      - `departureAirportCode` string, required — Departure airport IATA code.
      - `arrivalAirportCode` string, required — Arrival airport IATA code.
      - `departureTime` string, required — Local HH:MM at the departure airport.
      - `arrivalTime` string, required — Local HH:MM at the arrival airport.
      - `airlineCode` string, required — Marketing carrier IATA code.
      - `airlineName` string — Marketing carrier display name, when resolved.
      - `durationMinutes` number — Segment duration in minutes, when reported.
      - `flightNumber` string — The marketed designator, e.g. `TR 610`.
      - `aircraftCode` string — Aircraft type code, when reported.
      - `aircraftName` string — Aircraft type name, when reported.
    - `operatingPeriods` object[], required — When this flight runs – one entry per published operating period. Empty when the upstream states no recurrence, which means unknown, never daily.
      - `weekdays` integer[] — Days of the week the flight operates, 1 Monday to 7 Sunday. Absent means the upstream published no recurrence for this period.
      - `startDate` string — First date this recurrence is published for, as YYYY-MM-DD.
      - `endDate` string — Last date this recurrence is published for, as YYYY-MM-DD.
    - `flightNumber` string — The marketed designator, present on a single-segment schedule.
    - `aircraftCode` string — Aircraft type code, when reported.
  - `metadata` object, required — The page returned, how much the upstream held, the resolved route endpoints, and the market echoed.
    - `page` integer, required — The 1-based page returned.
    - `pageSize` integer, required — Rows requested per page.
    - `resultCount` integer, required — Scheduled flights on this page (always <= pageSize).
    - `totalCandidates` integer, required — Scheduled flights the upstream held for this route, pre-pagination – the ceiling paging can reach. 0 means the upstream publishes no timetable for this route, NOT that nothing flies it.
    - `hasMore` boolean, required — True when a further page exists.
    - `coverage` 'complete' | 'truncated', required — complete when the upstream returned its whole set for this route, truncated when it filled the API's upstream ceiling and may hold more. While truncated, read totalCandidates as a floor rather than a total.
    - `from` object, required — Departure route endpoint: what the caller sent and the city code it resolved to.
      - `requested` string, required — Exactly what the caller sent, uppercased.
      - `resolvedCityCode` string, required — The city code sent upstream – LHR resolves to LON.
    - `to` object, required — Arrival route endpoint: what the caller sent and the city code it resolved to.
      - `requested` string, required — Exactly what the caller sent, uppercased.
      - `resolvedCityCode` string, required — The city code sent upstream – LHR resolves to LON.
    - `siteCode` string, required — The market this request resolved to, as a 2-letter code. Echoed for consistency with the priced reads – a published timetable does not vary by market, so it does not change these rows.
    - `siteCodeSource` 'explicit' | 'default', required — explicit when the caller supplied siteCode, default when the API applied the US floor.

## Other responses

- `400` — Malformed code, a code that resolves to no city, or a page or pageSize outside its range – an out-of-range paging value is rejected, never clamped.
- `401` — Missing or invalid bearer token.
- `429` — Rate limit exceeded; retry after the `Retry-After` seconds.
- `502` — The upstream schedules service returned an invalid response.
- `503` — The schedules service is temporarily unavailable (`upstream_unavailable`) or rate-limited upstream (`upstream_rate_limited`); retry after the `Retry-After` seconds.

---

[API](https://skmtc.net/wego/apis/wego-api.md) · [All operations](https://skmtc.net/wego/apis/wego-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/wego/wego-api/revisions/e5d7af502419/schema)
