Getting started

Sky Schedule API Overview

The Sky Schedule API gives a flight school read-only REST access to its reservations, flights, rosters, and maintenance, plus a hosted MCP server for AI agents.

llms.txt

The Sky Schedule API lets a flight school pull its own data into other tools: a schedule board on the hangar TV, a nightly export of completed flights to a spreadsheet, or a check that flags aircraft with inspections coming due. There are two ways in, and both use the same school API key.

Two ways to use the Sky Schedule API

REST API v1MCP server
Best forScripts, dashboards, data exportsAI agents such as Claude, Cursor, and Grok
AccessRead only (every endpoint is GET)20 read tools and 14 write tools
Addresshttps://app.skyschedule.io/api/v1https://app.skyschedule.io/api/mcp
Daily limit per school100 requests1,000 requests, of which 200 can be write tool calls
Start hereAPI authenticationMCP server overview

The REST API can't create, change, or delete anything. If you need to book a flight, log Hobbs, or open a work order from software, use the MCP server.

Base URL

All REST endpoints live under one base URL, over HTTPS:

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

Quick start

  1. A school admin generates an API key in Settings, Integrations, API Keys. See API authentication for the steps.
  2. Store the key on your server, for example in an environment variable named SKYSCHEDULE_API_KEY.
  3. Request the next few reservations:
curl -s "https://app.skyschedule.io/api/v1/reservations?from=2026-10-09&limit=1" \
  -H "Authorization: Bearer $SKYSCHEDULE_API_KEY"
{
  "data": [
    {
      "id": "11111111-1111-4111-8111-111111111111",
      "reservationNumber": "1042",
      "status": "PENDING",
      "activityType": "Dual Flight Training",
      "startsAt": "2026-10-09T15:00:00+00:00",
      "endsAt": "2026-10-09T17:00:00+00:00",
      "durationHours": 2,
      "people": [
        { "role": "customer", "name": "Alex Student", "email": "alex.student@example.com", "phone": "555-0100" },
        { "role": "instructor", "name": "Sam Instructor", "email": "sam.cfi@example.com", "phone": "555-0101" }
      ],
      "aircraft": { "tailNumber": "N12345", "model": "Cessna 172S Skyhawk" }
    }
  ],
  "meta": {
    "count": 1,
    "pageSize": 1,
    "rateLimit": { "limit": 100, "remaining": 99, "reset": "2026-10-09T00:00:00.000Z" }
  }
}

REST endpoints

Method and pathReturnsFilters
GET/api/v1/reservationsReservations on the schedulefrom, to, limit
GET/api/v1/reservations/{id}One reservation
GET/api/v1/flightsCompleted flight logsfrom, to, limit
GET/api/v1/flights/{id}One completed flight
GET/api/v1/customersCustomers (students and renters)limit
GET/api/v1/customers/{id}One customer
GET/api/v1/instructorsInstructorslimit
GET/api/v1/instructors/{id}One instructor
GET/api/v1/work-ordersMaintenance work orderslimit
GET/api/v1/squawksAircraft squawkslimit
GET/api/v1/inspectionsAircraft inspectionslimit
GET/api/v1/remindersInspection due reminderslimit
GET/api/v1/inventoryParts inventory and stock levelslimit
GET/api/v1/commentsReservation commentsreservationId, limit

Aircraft records and CRM leads are not REST endpoints. Agents can read them through the MCP tools list_aircraft, get_aircraft, list_leads, and get_lead.

Conventions

  • Responses are JSON with camelCase field names.
  • A list returns { "data": [ ... ], "meta": { ... } }. A single record returns { "data": { ... }, "meta": { ... } }.
  • An error returns { "error": "message" } with an HTTP status code. See rate limits and errors.
  • Record ids are UUIDs.
  • Timestamps such as startsAt and completedAt are ISO 8601 with a UTC offset. Plain dates such as flightDate use YYYY-MM-DD.
  • A field with no value is null. It is not left out.
  • A key only reaches the school that owns it. Every query is scoped to that school.

Call the API from a server

REST responses don't include CORS headers, so a web page on another site can't call the API from the browser. That's on purpose: a key in browser or mobile app code is visible to anyone who opens it. Call the API from your own server, a scheduled job, or a spreadsheet script that keeps the key private.

Versioning

The version is part of the path: /api/v1. Version 1 is the current and only REST version. The MCP server reports its own name and version (sky-schedule, 2.0.0) when a client connects. Dated changes are listed in the API changelog.

Acceptable use

API keys and the MCP server are for a school's own data and its own tools. Reverse engineering, decompiling, or scraping Sky Schedule, accessing it outside the API, and using it to build or help build a competing product are not allowed. We monitor API, MCP, and app traffic to detect this. If we find it, we revoke access and may take legal action under Section 7 of the Terms of Service.