REST API

Completed Flights API

Use the Sky Schedule completed flights API to list and fetch flight logs by date, with Hobbs and Tach readings, route, customer, instructor, and aircraft.

llms.txt

The completed flights API returns the flight log entries your school records when a flight is completed: Hobbs and Tach out and in, route, the customer and instructor, and the aircraft. Use it to total aircraft time, reconcile billing, or feed a utilization report.

Method and pathDescription
GET/api/v1/flightsList completed flights, optionally within a date range
GET/api/v1/flights/{id}Get one completed flight by id

The completed flight object

FieldTypeDescription
idstring (UUID)Completed flight id.
reservationIdstring or nullThe reservation this flight completed. Use it with the reservations API.
reservationNumberstring or nullThe school's reservation number.
activityTypestring or nullThe activity type, such as Dual Flight Training.
flightDatestring or nullDate of the flight, YYYY-MM-DD.
startTimestring or nullStart time of day as recorded on the log, HH:MM:SS, with no time zone.
endTimestring or nullEnd time of day as recorded on the log, HH:MM:SS, with no time zone.
completedAtstring or nullWhen the flight was completed in Sky Schedule, ISO 8601 with UTC offset.
routestring or nullRoute as entered, for example KCRQ-KSEE-KCRQ.
hobbsobject or nullstart, end, and delta as numbers. null when no Hobbs was recorded.
tachobject or nullstart, end, and delta as numbers. null when no Tach was recorded.
customerobject or nullname, email, and phone of the customer.
instructorobject or nullname, email, and phone of the primary instructor. null when the flight had no instructor.
aircraftobject or nulltailNumber and model.

When a stored delta is missing, the API computes it as end minus start, rounded to 2 decimals. Any of start, end, or delta can be null on its own.

List completed flights

GET https://app.skyschedule.io/api/v1/flights

Query parameters

ParameterRequiredDescription
fromNoYYYY-MM-DD. Only flights with flightDate on or after this date.
toNoYYYY-MM-DD. Only flights with flightDate on or before this date.
limitNoRecords to return, 1 to 100. Default 50.

Results are sorted newest first, by flightDate and then completedAt. Unlike reservations, from and to compare against the flight date itself, with no time zone conversion. Without a date range you get the most recent flights.

Example request

curl -s "https://app.skyschedule.io/api/v1/flights?from=2026-10-01&to=2026-10-07&limit=25" \
  -H "Authorization: Bearer $SKYSCHEDULE_API_KEY"

Example response

{
  "data": [
    {
      "id": "33333333-3333-4333-8333-333333333333",
      "reservationId": "11111111-1111-4111-8111-111111111111",
      "reservationNumber": "1031",
      "activityType": "Dual Flight Training",
      "flightDate": "2026-10-07",
      "startTime": "08:00:00",
      "endTime": "10:00:00",
      "completedAt": "2026-10-07T17:12:44.318+00:00",
      "route": "KCRQ-KSEE-KCRQ",
      "hobbs": { "start": 2451.3, "end": 2452.6, "delta": 1.3 },
      "tach": { "start": 1980.4, "end": 1981.5, "delta": 1.1 },
      "customer": { "name": "Alex Student", "email": "alex.student@example.com", "phone": "555-0100" },
      "instructor": { "name": "Sam Instructor", "email": "sam.cfi@example.com", "phone": "555-0101" },
      "aircraft": { "tailNumber": "N12345", "model": "Cessna 172S Skyhawk" }
    }
  ],
  "meta": {
    "count": 1,
    "pageSize": 25,
    "rateLimit": { "limit": 100, "remaining": 94, "reset": "2026-10-09T00:00:00.000Z" }
  }
}

Get one completed flight

GET https://app.skyschedule.io/api/v1/flights/{id}
curl -s "https://app.skyschedule.io/api/v1/flights/33333333-3333-4333-8333-333333333333" \
  -H "Authorization: Bearer $SKYSCHEDULE_API_KEY"

The response has the same flight object under data, and meta holds only rateLimit. An id that doesn't exist in your school returns:

{ "error": "Flight not found." }

Example: Hobbs time per aircraft for a week

A list returns at most 100 flights, so keep each date range short enough to fit. One week is plenty for most schools.

const params = new URLSearchParams({ from: "2026-10-01", to: "2026-10-07", limit: "100" });
const res = await fetch(`https://app.skyschedule.io/api/v1/flights?${params}`, {
  headers: { Authorization: `Bearer ${process.env.SKYSCHEDULE_API_KEY}` },
});
const { data, meta } = await res.json();

if (meta.count === meta.pageSize) {
  throw new Error("Page is full. Use a shorter date range so no flights are missed.");
}

const hobbsByTail = {};
for (const flight of data) {
  const tail = flight.aircraft?.tailNumber ?? "unknown";
  hobbsByTail[tail] = (hobbsByTail[tail] ?? 0) + (flight.hobbs?.delta ?? 0);
}
console.log(hobbsByTail); // { N12345: 14.2, N67890: 9.8 }

Flights are logged when a reservation is completed in Sky Schedule. An agent can do the same through the MCP tool complete_flight, described in the MCP tools reference. For daily limits and paging tips, see rate limits and errors.