Take-offs and landings · API reference
Approved take-off and landing sites as GeoJSON.
GET /v1/sites
Approved takeoff and landing sites in a bounding box
Authentication: X-Api-Key header; required scope: scope table.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
bbox required | query | string | west,south,east,north in degrees (WGS 84); each side at most 20°, west < east (no antimeridian wrap)0–200 chars · example "28.5,36.0,30.0,37.2" |
kind | query | "takeoff" | "landing" | null | Only this kind; both when omitted |
limit | query | integer | Sites per page1 ≤ x ≤ 500 · default 100 |
cursor | query | string | null | next_cursor of the previous page0–64 chars |
Responses
| Status | Description | Content |
|---|---|---|
200 | GeoJSON FeatureCollection, ordered by id; ETag and Cache-Control headers | application/geo+json → SiteCollection |
304 | If-None-Match matched the current ETag; no body | |
401 | code: auth_missing, auth_invalid, auth_revoked | application/geo+json → ErrorBody |
403 | code: auth_scope | application/geo+json → ErrorBody |
422 | code: request_invalid, bbox_invalid, bbox_too_large, cursor_invalid | application/geo+json → ErrorBody |
429 | code: rate_limited, quota_exceeded (Retry-After seconds)Headers: Retry-After — Seconds until the exhausted window resets | application/json → ErrorBody |
GET /v1/sites/{site_id}/suitability
Take-off suitability for a day from the wind forecast (pre-flight planning only)
Authentication: X-Api-Key header; required scope: scope table.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
site_id required | path | string (uuid) | Take-off id (GET /v1/sites) |
date | query | string (date) | null | Local date (Europe/Istanbul), today to today + 4 days; default today example "2026-11-06" |
Responses
| Status | Description | Content |
|---|---|---|
200 | Slots of the local day; Cache-Control header | application/json → SuitabilityResponse |
401 | code: auth_missing, auth_invalid, auth_revoked | application/json → ErrorBody |
403 | code: auth_scope | application/json → ErrorBody |
404 | code: site_not_found | application/json → ErrorBody |
422 | code: request_invalid, date_out_of_range | application/json → ErrorBody |
429 | code: rate_limited, quota_exceeded (Retry-After seconds)Headers: Retry-After — Seconds until the exhausted window resets | application/json → ErrorBody |