Hoppa till huvudinnehållet
GeoPilot

API-referens

En kortfattad referens för GeoPilots publika API – varje endpoint nedan finns under /api/v1/public på domänen för din GeoPilot-installation och autentiseras med en API-nyckel i stället för en sessionskaka.

Hur ED-269 och ED-318 skiljer sig åt, fält för fält: läs guiden. →

API för flygförbudszoner för drönare: kom igång →

Så konverterar du geozoner i ED-269 och ED-318 till GeoJSON eller KML →

Maskinläsbar: OpenAPI 3.1-beskrivningen →

Ändringslogg

Vad som har ändrats i det publika API:et, nyaste först. En ändring markeras som Bakåtinkompatibel endast när en befintlig, korrekt utformad begäran nu beter sig annorlunda; allt annat är tillägg eller rättningar.

Tillagt

Konfliktkontroller anger nu vilka källor de utelämnat

Svar från POST /restrictions/intersect innehåller en ny array, excludedSources: varje källa som inte är licensierad för API:et vars restriktioner formen också berör, med ett antal men aldrig själva restriktionerna. Tidigare gav en kontroll i ett sådant land total: 0, vilket såg ut som ett fritt område. Varje konflikt har också sourceAttribution, källans erkännande, som CC BY-data kräver att du visar.

Tillagt

OpenAPI-beskrivning och API-katalog publicerade

Det publika API:et beskrivs nu som OpenAPI 3.1 på /api/v1/public/openapi.json, genererad från samma scheman som API:et validerar begäranden med, och listad i en RFC 9727-katalog på /.well-known/api-catalog. En hälsokontroll, GET /api/v1/public/health, svarar utan nyckel. Ingen befintlig begäran beter sig annorlunda.

Rättat

ED-318-konverteringar rättade mot två riktiga dataflöden

ED-318-kodeken hade byggts utifrån det publicerade schemat utan något riktigt dataflöde att kontrollera mot. Den är nu verifierad direkt mot faktiska exporter, och flera fältmappningar var fel: stavningen av värdet för tillstånd, var höjden anges (på geometrin, inte i egenskaperna) och hur geometrin för en zon med flera volymer representeras. Varje konvertering till eller från ED-318 – ed269-ed318, kml-ed318, geojson-ed318 och deras omvända riktningar – kan ge annan, rättad utdata för ett riktigt ED-318-dokument jämfört med före rättningen.

Skaffa en nyckel

API-åtkomst är en separat produkt från kartabonnemanget, faktureras för sig och fungerar som självbetjäning när ditt konto har den.

Ny här? Prenumerera på API-åtkomst

Vill du prova innan du köper, eller behöver du en anpassad anropsgräns? Ansök om åtkomst

Prenumererar du redan? Skapa en nyckel från din profil – namnge den, välj bara de behörigheter du behöver och kopiera den råa nyckeln när den visas, eftersom den bara visas en gång. Hantera API-nycklar

Autentisering

Varje begäran bär din nyckel som en bearer-token.

Authorization: Bearer <your-api-key>

Två fellägen särskiljs:

  • Saknad, felformaterad, okänd, återkallad eller utgången nyckel – 401 Unauthorized.
  • En giltig nyckel vars ägare inte längre har API-åtkomst (prenumerationen uppsagd eller utgången) – 403 Forbidden.
  • En giltig nyckel som saknar den behörighet som en endpoint kräver – 403 Forbidden, med den saknade behörigheten angiven.

Behörigheter

Varje nyckel skapas med en eller flera behörigheter (scopes). En begäran behöver den behörighet som dess endpoint kräver, oavsett om kontot över huvud taget har API-åtkomst.

RESTRICTIONS_READ
Läs data om luftrumsrestriktioner – listor, punkt- och radiesökningar och uppslag av enskilda restriktioner.
CONFLICT_CHECK
Kontrollera ett ritat område eller en rutt mot aktiva restriktioner.
CONVERT_ED269
Konvertera mellan ED-269 och GeoJSON.
CONVERT_KML
Konvertera mellan KML och alla andra format som stöds.
CONVERT_ED318
Konvertera mellan ED-318 och alla andra format som stöds.

Anropsgränser

Varje kategori nedan räknas per nyckel över ett rullande fönster på en minut. Varje svar innehåller X-RateLimit-Limit och X-RateLimit-Remaining; ett 429-svar innehåller även Retry-After.

Konvertering
/convert/ed269-to-geojson, /convert/geojson-to-ed269, /convert/:from-:to
60 anrop per minut (standard).
Läsning av restriktioner
/restrictions, /at, /near, /:id
60 anrop och 200 MB per minut (standard).
Konfliktkontroll
/restrictions/intersect
60 anrop per minut (standard).

Behöver du en högre gräns för en viss integration? Ansök om åtkomst

Fel

Varje fel – från varje endpoint – har samma JSON-form (RFC 9457 "problem details"), så att din klient kan hantera en enda felväg i stället för att gissa per endpoint.

{
  "type": "https://geopilot.space/problems/forbidden",
  "title": "Insufficient permissions",
  "status": 403,
  "detail": "This API key does not have the CONFLICT_CHECK scope.",
  "instance": "/api/v1/public/restrictions/intersect",
  "requestId": "b3f2b8b0-8b7a-4c9b-9c9a-2f6a7a2b6b34"
}

errors listar valideringsfel på fältnivå och förekommer bara vid 400 eller 422.

400
Begärans body, query eller parametrar klarade inte valideringen.
401
Saknad, felformaterad, okänd, återkallad eller utgången nyckel.
403
Nyckelns ägare har inte längre aktiv API-åtkomst, eller så saknar nyckeln den behörighet som endpointen kräver.
404
Den begärda resursen finns inte eller är inte synlig för din nyckel – se licensanmärkningen ovan.
422
Den inskickade geometrin är ogiltig eller för komplex för att bedömas.
429
Anropsgränsen har överskridits. Försök igen efter det antal sekunder som anges i Retry-After.

Länder som API:et omfattar

API:et levererar bara data från källor vars utgivare tillåter kommersiell återanvändning och vidarespridning, så det omfattar färre länder än kartan. På andra håll returnerar läsningar av restriktioner ingenting, och en konfliktkontroll listar de källor den utelämnat under excludedSources i stället för att rapportera området som fritt.

Ingår:
Australien, Finland, Luxemburg, Norge, Schweiz, USA
Endast på kartan (villkor för återanvändning ej fastställda):
Lettland, Portugal, Rumänien

Endpoints

Läsning av restriktioner returnerar bara data från källor vars licens tillåter kommersiell användning och vidarespridning. En källa som undantas av det skälet beter sig som om den inte fanns: GET /restrictions/:id returnerar 404 för den precis som för ett okänt id. Konfliktkontrollen är det enda undantaget: den namnger det som utelämnats under excludedSources, så att ett undantaget land aldrig rapporteras som fritt.

GET /api/v1/public/restrictions

Scope: RESTRICTIONS_READ

Lista restriktioner, filtrerbara efter land, omgivande rektangel, typ, verkan med mera.

curl "https://geopilot.space/api/v1/public/restrictions?country=FI" \
  -H "Authorization: Bearer $GEOPILOT_API_KEY"

Svar

{
  "meta": {
    "freshness": {
      "state": "FRESH",
      "sources": [{ "sourceId": "fi-traficom-zones", "state": "FRESH", "lastSyncedAt": "2026-09-01T09:00:00.000Z" }],
      "generatedAt": "2026-09-01T12:00:00.000Z"
    },
    "pagination": { "limit": 1000, "nextCursor": null, "returned": 214, "truncated": false },
    "detail": "FULL",
    "attributions": ["Source: Finnish Transport and Communications Agency Traficom, licensed under CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Modified by GeoPilot: geometry simplified, zones classified."],
    "sources": [
      {
        "id": "fi-traficom-zones",
        "providerKey": "fi-traficom-zones",
        "name": "Traficom UAS geographical zones",
        "attribution": "Source: Finnish Transport and Communications Agency Traficom, licensed under CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Modified by GeoPilot: geometry simplified, zones classified.",
        "sourceTimestamp": "2026-09-01T06:00:00.000Z",
        "lastSyncedAt": "2026-09-01T09:00:00.000Z"
      }
    ],
    "authorities": [{ "id": "traficom", "name": "Traficom", "phone": null, "email": null, "website": null }],
    "evaluatedAt": "2026-09-01T12:00:00.000Z",
    "disclaimer": "GeoPilot is an independent planning tool and is not affiliated with or endorsed by any aviation authority. It shows data published by national authorities, which may be incomplete, out of date or simplified in processing, and it does not authorize any flight. Always check the authority's own publication and current NOTAMs before flying."
  },
  "geojson": {
    "type": "FeatureCollection",
    "features": [
      {
        "type": "Feature",
        "id": "3f1b2c4d-0000-4000-8000-000000000000",
        "geometry": { "type": "Polygon", "coordinates": [[[24.90,60.29],[25.00,60.29],[25.00,60.35],[24.90,60.35],[24.90,60.29]]] },
        "properties": {
          "id": "3f1b2c4d-0000-4000-8000-000000000000",
          "externalId": "EF-UAS-EXAMPLE",
          "countryIso2": "FI",
          "name": "Example aerodrome UAS zone",
          "description": null,
          "type": "RESTRICTED_AREA",
          "effect": "AUTHORIZATION_REQUIRED",
          "effectBasis": "PROVIDER_RULE",
          "status": "ACTIVE",
          "lowerLimit": { "meters": 0, "datum": "GND", "raw": "GND", "parsed": true },
          "upperLimit": { "meters": 1500, "datum": "AMSL", "raw": "1500 AMSL", "parsed": true },
          "activationStart": null,
          "activationEnd": null,
          "schedule": null,
          "activeNow": true,
          "sourceId": "fi-traficom-zones",
          "authorityId": "traficom",
          "firstSeenAt": "2025-01-15T00:00:00.000Z",
          "lastSeenAt": "2026-09-01T09:00:00.000Z"
        }
      }
    ]
  }
}

GET /api/v1/public/restrictions/at

Scope: RESTRICTIONS_READ

Alla restriktioner i API:ets data som överlappar på en punkt.

curl "https://geopilot.space/api/v1/public/restrictions/at?lat=60.32&lon=24.95" \
  -H "Authorization: Bearer $GEOPILOT_API_KEY"

Svar

{
  "meta": { "…": "same shape as GET /restrictions, above" },
  "geojson": {
    "type": "FeatureCollection",
    "features": [
      {
        "type": "Feature",
        "id": "3f1b2c4d-0000-4000-8000-000000000000",
        "geometry": { "type": "Polygon", "coordinates": [[[24.90,60.29],[25.00,60.29],[25.00,60.35],[24.90,60.35],[24.90,60.29]]] },
        "properties": {
          "id": "3f1b2c4d-0000-4000-8000-000000000000",
          "externalId": "EF-UAS-EXAMPLE",
          "name": "Example aerodrome UAS zone",
          "type": "RESTRICTED_AREA",
          "effect": "AUTHORIZATION_REQUIRED",
          "effectBasis": "PROVIDER_RULE",
          "status": "ACTIVE",
          "activeNow": true,
          "sourceId": "fi-traficom-zones",
          "authorityId": "traficom"
        }
      }
    ]
  }
}

GET /api/v1/public/restrictions/near

Scope: RESTRICTIONS_READ

Restriktioner inom en radie från en punkt, närmaste först.

curl "https://geopilot.space/api/v1/public/restrictions/near?lat=60.32&lon=24.95&radiusMeters=5000" \
  -H "Authorization: Bearer $GEOPILOT_API_KEY"

Svar

{
  "meta": { "…": "same shape as GET /restrictions, above" },
  "geojson": {
    "type": "FeatureCollection",
    "features": [
      {
        "type": "Feature",
        "id": "3f1b2c4d-0000-4000-8000-000000000000",
        "geometry": { "type": "Polygon", "coordinates": [[[24.90,60.29],[25.00,60.29],[25.00,60.35],[24.90,60.35],[24.90,60.29]]] },
        "properties": {
          "id": "3f1b2c4d-0000-4000-8000-000000000000",
          "externalId": "EF-UAS-EXAMPLE",
          "name": "Example aerodrome UAS zone",
          "type": "RESTRICTED_AREA",
          "effect": "AUTHORIZATION_REQUIRED",
          "effectBasis": "PROVIDER_RULE",
          "status": "ACTIVE",
          "activeNow": true,
          "sourceId": "fi-traficom-zones",
          "authorityId": "traficom",
          "distanceMeters": 842.6
        }
      }
    ]
  }
}

GET /api/v1/public/restrictions/:id

Scope: RESTRICTIONS_READ

En restriktion via id.

curl "https://geopilot.space/api/v1/public/restrictions/3f1b2c4d-0000-4000-8000-000000000000" \
  -H "Authorization: Bearer $GEOPILOT_API_KEY"

Svar

{
  "type": "Feature",
  "id": "3f1b2c4d-0000-4000-8000-000000000000",
  "geometry": { "type": "Polygon", "coordinates": [[[24.90,60.29],[25.00,60.29],[25.00,60.35],[24.90,60.35],[24.90,60.29]]] },
  "properties": {
    "id": "3f1b2c4d-0000-4000-8000-000000000000",
    "externalId": "EF-UAS-EXAMPLE",
    "countryIso2": "FI",
    "name": "Example aerodrome UAS zone",
    "description": null,
    "type": "RESTRICTED_AREA",
    "effect": "AUTHORIZATION_REQUIRED",
    "effectBasis": "PROVIDER_RULE",
    "status": "ACTIVE",
    "lowerLimit": { "meters": 0, "datum": "GND", "raw": "GND", "parsed": true },
    "upperLimit": { "meters": 1500, "datum": "AMSL", "raw": "1500 AMSL", "parsed": true },
    "activationStart": null,
    "activationEnd": null,
    "schedule": null,
    "activeNow": true,
    "authority": { "id": "traficom", "name": "Traficom", "phone": null, "email": null, "website": null },
    "source": {
      "id": "fi-traficom-zones",
      "providerKey": "fi-traficom-zones",
      "name": "Traficom UAS geographical zones",
      "attribution": "Source: Finnish Transport and Communications Agency Traficom, licensed under CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Modified by GeoPilot: geometry simplified, zones classified.",
      "sourceTimestamp": "2026-09-01T06:00:00.000Z",
      "lastSyncedAt": "2026-09-01T09:00:00.000Z"
    },
    "raw": { "…": "the provider's original record, preserved verbatim" },
    "firstSeenAt": "2025-01-15T00:00:00.000Z",
    "lastSeenAt": "2026-09-01T09:00:00.000Z"
  }
}

POST /api/v1/public/restrictions/intersect

Scope: CONFLICT_CHECK

Kontrollera en polygon eller rutt mot aktiva restriktioner och rapportera vad den berör.

curl -X POST "https://geopilot.space/api/v1/public/restrictions/intersect" \
  -H "Authorization: Bearer $GEOPILOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "geometry": {
      "type": "Polygon",
      "coordinates": [[[24.90,60.29],[25.00,60.29],[25.00,60.35],[24.90,60.35],[24.90,60.29]]]
    }
  }'

Svar

{
  "conflicts": [
    {
      "restrictionId": "3f1b2c4d-0000-4000-8000-000000000000",
      "externalId": "EF-UAS-EXAMPLE",
      "name": "Example aerodrome UAS zone",
      "type": "RESTRICTED_AREA",
      "effect": "AUTHORIZATION_REQUIRED",
      "effectBasis": "PROVIDER_RULE",
      "authorityName": "Traficom",
      "intersectionAreaM2": 482310.5,
      "intersectionRatio": 0.61,
      "activeAtQueryTime": true,
      "sourceName": "Traficom UAS geographical zones",
      "sourceAttribution": "Source: Finnish Transport and Communications Agency Traficom, licensed under CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Modified by GeoPilot: geometry simplified, zones classified."
    }
  ],
  "summary": { "total": 1, "prohibited": 0, "authorizationRequired": 1, "coordinationRequired": 0, "informationOnly": 0, "unknown": 0 },
  "evaluatedAt": "2026-09-01T12:00:00.000Z",
  "disclaimer": "GeoPilot is an independent planning tool and is not affiliated with or endorsed by any aviation authority. It shows data published by national authorities, which may be incomplete, out of date or simplified in processing, and it does not authorize any flight. Always check the authority's own publication and current NOTAMs before flying.",
  "excludedSources": []
}

POST /api/v1/public/convert/ed269-to-geojson

Scope: CONVERT_ED269

Konvertera ett publicerat ED-269-dokument till en GeoJSON FeatureCollection.

curl -X POST "https://geopilot.space/api/v1/public/convert/ed269-to-geojson" \
  -H "Authorization: Bearer $GEOPILOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "document": { "UASZoneVersion": { "...": "the published ED-269 document" } } }'

Svar

{
  "geojson": {
    "type": "FeatureCollection",
    "features": [
      {
        "type": "Feature",
        "geometry": { "type": "Polygon", "coordinates": [[[26.05,44.40],[26.15,44.40],[26.15,44.47],[26.05,44.47],[26.05,44.40]]] },
        "properties": {
          "externalId": "ROU-001",
          "name": "Example zone",
          "description": null,
          "type": "OTHER",
          "effect": "PROHIBITED",
          "effectBasis": "PROVIDER_RULE",
          "lowerLimit": { "meters": 0, "datum": "AGL", "display": "0 m AGL" },
          "upperLimit": { "meters": 120, "datum": "AGL", "display": "120 m AGL" },
          "activationStart": null,
          "activationEnd": null,
          "schedule": null,
          "authorityHint": null
        }
      }
    ]
  },
  "errors": [],
  "totalFeatures": 1
}

POST /api/v1/public/convert/geojson-to-ed269

Scope: CONVERT_ED269

Konvertera en GeoJSON Feature eller FeatureCollection till ett ED-269-dokument.

curl -X POST "https://geopilot.space/api/v1/public/convert/geojson-to-ed269" \
  -H "Authorization: Bearer $GEOPILOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "Feature",
    "geometry": { "type": "Polygon", "coordinates": [[[26.05,44.40],[26.15,44.40],[26.15,44.47],[26.05,44.47],[26.05,44.40]]] },
    "properties": { "name": "Example zone", "effect": "PROHIBITED" }
  }'

Svar

{
  "document": {
    "title": "GeoPilot ED-269 export",
    "description": "Generated by GeoPilot's GeoJSON → ED-269 conversion endpoint.",
    "features": [
      {
        "name": "Example zone",
        "type": "CUSTOMIZED",
        "restriction": "PROHIBITED",
        "applicability": [],
        "zoneAuthority": [],
        "geometry": [
          {
            "uomDimensions": "M",
            "horizontalProjection": {
              "type": "Polygon",
              "coordinates": [[[26.05,44.40],[26.15,44.40],[26.15,44.47],[26.05,44.47],[26.05,44.40]]]
            }
          }
        ]
      }
    ]
  },
  "warnings": []
}

Endpoints — /convert/:from-:to

Utöver de två ED-269⇄GeoJSON-endpoints ovan konverterar POST /convert/:from-:to mellan två valfria av ED-269, ED-318, KML och GeoJSON – tolv riktade par totalt, listade nedan med den eller de behörigheter som var och en kräver. ed269-geojson och geojson-ed269 under den här korta URL:en beter sig identiskt med, och finns parallellt med, de två dedikerade endpoints ovan; båda formerna fortsätter att fungera.

fromtoscope(s) required
ed269ed318CONVERT_ED269 + CONVERT_ED318
ed269kmlCONVERT_ED269 + CONVERT_KML
ed269geojsonCONVERT_ED269
ed318ed269CONVERT_ED318 + CONVERT_ED269
ed318kmlCONVERT_ED318 + CONVERT_KML
ed318geojsonCONVERT_ED318
kmled269CONVERT_KML + CONVERT_ED269
kmled318CONVERT_KML + CONVERT_ED318
kmlgeojsonCONVERT_KML
geojsoned269CONVERT_ED269
geojsoned318CONVERT_ED318
geojsonkmlCONVERT_KML

POST /api/v1/public/convert/ed269-kml

Scope: CONVERT_ED269 + CONVERT_KML

Konvertera ett publicerat ED-269-dokument till ett KML-dokument.

curl -X POST "https://geopilot.space/api/v1/public/convert/ed269-kml" \
  -H "Authorization: Bearer $GEOPILOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "document": { "title": "t", "features": [ { "identifier": "ROU-001", "name": "Example zone", "restriction": "PROHIBITED", "geometry": [ { "uomDimensions": "M", "horizontalProjection": { "type": "Polygon", "coordinates": [[[26.05,44.40],[26.15,44.40],[26.15,44.47],[26.05,44.47],[26.05,44.40]]] } } ] } ] } }'

Svar

{
  "document": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<kml xmlns=\"http://www.opengis.net/kml/2.2\">\n  <Document>\n    <Placemark>\n      <name>Example zone</name>\n      <ExtendedData>\n        <Data name=\"effect\"><value>PROHIBITED</value></Data>\n      </ExtendedData>\n      <Polygon>\n        <altitudeMode>clampToGround</altitudeMode>\n        <outerBoundaryIs><LinearRing><coordinates>26.05,44.40,0 26.15,44.40,0 26.15,44.47,0 26.05,44.47,0 26.05,44.40,0</coordinates></LinearRing></outerBoundaryIs>\n      </Polygon>\n    </Placemark>\n  </Document>\n</kml>",
  "errors": [],
  "totalFeatures": 1,
  "warnings": []
}

POST /api/v1/public/convert/kml-ed318

Scope: CONVERT_KML + CONVERT_ED318

Konvertera ett KML-dokument till ett ED-318-dokument.

curl -X POST "https://geopilot.space/api/v1/public/convert/kml-ed318" \
  -H "Authorization: Bearer $GEOPILOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "document": "<kml><Document><Placemark><name>Example zone</name><ExtendedData><Data name=\"effect\"><value>PROHIBITED</value></Data></ExtendedData><Polygon><outerBoundaryIs><LinearRing><coordinates>26.05,44.40,0 26.15,44.40,0 26.15,44.47,0 26.05,44.47,0 26.05,44.40,0</coordinates></LinearRing></outerBoundaryIs></Polygon></Placemark></Document></kml>" }'

Svar

{
  "document": {
    "type": "FeatureCollection",
    "features": [
      {
        "type": "Feature",
        "geometry": { "type": "Polygon", "coordinates": [[[26.05,44.40],[26.15,44.40],[26.15,44.47],[26.05,44.47],[26.05,44.40]]] },
        "properties": {
          "name": "Example zone",
          "type": "CUSTOMIZED",
          "restriction": "PROHIBITED",
          "applicability": [],
          "zoneAuthority": [],
          "uomDimensions": "M"
        }
      }
    ]
  },
  "errors": [],
  "totalFeatures": 1,
  "warnings": []
}
GeoPilot

Ett oberoende planeringsverktyg för drönare, byggt på de luftrumsrestriktioner som nationella myndigheter publicerar, för de europeiska länder som täcks och för USA.

Data

  • Luftrumsdata publiceras av de nationella myndigheterna i varje land som omfattas. GeoPilot är inte knutet till eller godkänt av någon av dem.
  • Visa källor och aktualitet

GeoPilot är ett oberoende planeringsverktyg och är inte knutet till eller godkänt av någon luftfartsmyndighet. Det visar data som publiceras av nationella myndigheter, vilka kan vara ofullständiga, inaktuella eller förenklade i bearbetningen, och det ger inte tillstånd till någon flygning. Kontrollera alltid myndighetens egen publikation och gällande NOTAM innan du flyger.