Developer API

An open read-only API: JSON, no keys, CORS allowed. Online data refreshes every 5 seconds — do not request it more often.

RequestReturns
GET /api/v1/statusNetwork name, FSD server address, data status
GET /api/v1/onlinePilots (position, altitude, speed, heading, flight plan) and controllers (frequency, rating, position)
GET /api/v1/statsMembers, online, number of connections
GET /api/v1/members/{cid}Member profile: name, controller, pilot and military ratings, pilot and controller hours
GET /api/v1/members/{cid}/sessionsLast 50 connections
GET /api/v1/events[?lang=en]Upcoming events
GET /api/v1/events/{id}[?lang=en]An event
GET /api/v1/bookingsPosition bookings
GET /api/v1/news[?lang=en]News
GET /api/v1/pilots/{callsign}/routeAn online pilot's route as points (from SimBrief or worked out from the flight plan), the flown track and, for SimBrief plans, registration and step climbs
GET /api/v1/routes/decode?departure=UUEE&destination=EDDF&route=…A route text as points: waypoints, airways expanded, coordinates; the tokens not found
GET /api/v1/airports/{icao}/layoutAirport diagram: runways, taxiways, aprons, stands (OpenStreetMap)
GET /api/v1/metar/{icao}Current METAR
POST /api/v1/auth/pilotChecks a member's CID and password for SkyPilot and returns the name and rating; 401 if wrong, 403 if suspended
GET /api/flightplans/latest?cid={cid}The member's latest flight plan (SkyPilot format); 404 if there is none

Example

curl https://sky-network.online/api/v1/online

All times are UTC in ISO 8601. The raw FSD server feed is available directly too: /data.json on the server's HTTP port.

SkyNetwork Connect

Sign-in with SkyNetwork for division sites and other sites of the network (OAuth 2.0, authorization code flow, PKCE supported). The member signs in on the network site and agrees once; the site never sees the password. A network administrator registers the site and gives it a client ID and secret.

  1. Send the member to GET https://sky-network.online/oauth/authorize?response_type=code&client_id=…&redirect_uri=…&scope=profile&state=… (optionally code_challenge and code_challenge_method=S256).
  2. The member comes back to redirect_uri with code and state (or error=access_denied).
  3. Exchange the code within 5 minutes: POST https://sky-network.online/oauth/token (form: grant_type=authorization_code, code, redirect_uri, client_id, client_secret, code_verifier) → access_token for 1 hour.
  4. GET https://sky-network.online/oauth/userinfo with Authorization: Bearer access_token → cid, name, rating, staffRank, pilotRating, militaryRating, country; email with the email scope.

Division API

For division websites. Every request carries the division's key, issued by a network administrator: the Authorization: Bearer header (or X-Api-Key). Answers are JSON; errors come as { "error": code, "message": text }.

RequestReturns
GET /api/division/v1/members/{cid}A member and their ratings: check a CID before the exam
POST /api/division/v1/rating-requestsThe student passed the exam: ask for the rating. A supervisor approves it
GET /api/division/v1/rating-requests[?status=&cid=]Your rating requests and their status: pending, approved, declined, withdrawn
GET /api/division/v1/rating-requests/{id}A rating request
DELETE /api/division/v1/rating-requests/{id}Withdraw a request that is still pending

Rating request

curl -X POST https://sky-network.online/api/division/v1/rating-requests \
  -H "Authorization: Bearer skd_..." -H "Content-Type: application/json" \
  -d '{
    "cid": 25,
    "track": "atc",
    "rating": "S2",
    "examinerCid": 7,
    "examinerName": "Ivan Petrov",
    "examDate": "2026-09-20",
    "score": "92%",
    "reportUrl": "https://academy.example/exams/1841",
    "comment": "Practical exam at UUEE_TWR",
    "externalId": "exam-1841"
  }'
  • track: atc, pilot or military; rating: its short name (S1…I3, PPL…FE, M1…M4).
  • The member must not hold this rating already. One pending request per member and track.
  • externalId makes retries safe: the same value returns the request already created instead of a new one.
  • Answers: 201 created, 200 already sent, 401 wrong key, 404 no such member, 409 a request is already pending, 422 not allowed, 429 too many requests.
  • Supervisors approve controller ratings up to C3 and all pilot and military ratings; instructor ratings (I1–I3) are approved by administrators.