Zum Inhalt springen
Entwickler-API

API-Dokumentation

Fünf Endpoints unter /api/partner/v1. Authentifizierung per API Key, Antworten immer als JSON.

Die interaktive OpenAPI-Referenz ist aktuell noch nicht öffentlich verfügbar. Die folgende, manuell gepflegte Dokumentation ist bis dahin die verbindliche Referenz.

Authentifizierung

Jede Anfrage benötigt einen Authorization: Bearer-Header mit deinem API Key (Format Präfix.Geheimnis, z. B. ab12cd34ef56.dasGeheimeToken…). Den Key erhältst du im Dashboard - er wird dort nur einmal im Klartext angezeigt.

curl -H "Authorization: Bearer <key_prefix>.<secret>" \
  "https://app.drohnenatlas.app/api/partner/v1/coverage"

Fehlerantworten: 401 für fehlenden/unbekannten/abgelaufenen Key, 403 für widerrufene Keys, gesperrte Accounts oder fehlenden Scope, 429 oberhalb des Rate-Limits (60/Minute im Sandbox-Plan).

Schnellstart

Es gibt aktuell keine offiziellen DrohnenAtlas-SDKs - die Beispiele unten nutzen jeweils den Standard-HTTP-Client der Sprache.

curl
curl -H "Authorization: Bearer <key_prefix>.<secret>" \
  "https://app.drohnenatlas.app/api/partner/v1/rules?country=DE"
JavaScript (fetch)
const res = await fetch("https://app.drohnenatlas.app/api/partner/v1/rules?country=DE", {
  headers: { Authorization: "Bearer <key_prefix>.<secret>" },
});
const { data } = await res.json();
Python (requests)
import requests

res = requests.get(
    "https://app.drohnenatlas.app/api/partner/v1/rules",
    params={"country": "DE"},
    headers={"Authorization": "Bearer <key_prefix>.<secret>"},
)
data = res.json()["data"]
PHP (Guzzle)
$client = new \GuzzleHttp\Client();
$response = $client->get('https://app.drohnenatlas.app/api/partner/v1/rules', [
    'query' => ['country' => 'DE'],
    'headers' => ['Authorization' => 'Bearer <key_prefix>.<secret>'],
]);
$data = json_decode((string) $response->getBody(), true)['data'];
GET /coverageScope: keiner

Zeigt, für welche Länder DrohnenAtlas-Zonendaten lizenzrechtlich freigegeben sind. Kein Standort-Parameter - liefert die vollständige Länderliste.

Beispiel
curl -H "Authorization: Bearer <key_prefix>.<secret>" \
  "https://app.drohnenatlas.app/api/partner/v1/coverage"
Antwort
{
  "data": [
    { "country": "DE", "coverage": "none", "allowed": false, "reason": "non_commercial_licence" },
    { "country": "CH", "coverage": "full", "allowed": true, "reason": "cleared" }
  ],
  "meta": { "queried_at": "2026-08-08T12:00:00+00:00" }
}

Deutschland (dipul) ist non-commercial-lizenziert und erscheint daher aktuell immer mit coverage: 'none' - das ist erwartetes Verhalten, kein Fehler.

GET /meta/healthScope: keiner

Servicestatus und API-Version. Erfordert weiterhin einen gültigen API Key - eignet sich damit auch als Key-Check.

Beispiel
curl -H "Authorization: Bearer <key_prefix>.<secret>" \
  "https://app.drohnenatlas.app/api/partner/v1/meta/health"
Antwort
{
  "status": "ok",
  "version": "v1",
  "queried_at": "2026-08-08T12:00:00+00:00"
}
GET /rulesScope: rules

Deutsche Drohnenregeln als strukturiertes JSON (Betriebskategorien, Unterkategorien, Rechtsgrundlagen).

Query-Parameter
  • country ISO-3166-Ländercode, aktuell nur DE unterstützt (Standard: DE)
Beispiel
curl -H "Authorization: Bearer <key_prefix>.<secret>" \
  "https://app.drohnenatlas.app/api/partner/v1/rules?country=DE"
Antwort
{
  "data": {
    "locale": "de",
    "version": "2026.1",
    "last_reviewed": "2026-05-01T00:00:00+00:00",
    "payload": { "operational_categories": { "open": { "subcategories": ["…"] } } },
    "disclaimer": "Diese Auskunft ist eine unverbindliche Einschätzung und keine Rechtsberatung."
  }
}
GET /authoritiesScope: authorities

Zuständige Behörde für einen Standort oder ein Bundesland - Kontaktdaten für Genehmigungen und Rückfragen.

Query-Parameter
  • lat, lng Koordinaten (bevorzugt, löst automatisch die zuständige Behörde auf)
  • bundesland Alternativ: Bundesland-Name, z. B. Bayern
  • ags Alternativ: 8-stelliger Amtlicher Gemeindeschlüssel
  • type Behördentyp - police, ordnungsamt, landesluftfahrt (Standard), naturschutz, baf_edr, property_owner, other
Beispiel
curl -H "Authorization: Bearer <key_prefix>.<secret>" \
  "https://app.drohnenatlas.app/api/partner/v1/authorities?lat=52.5&lng=13.4"
Antwort
{
  "data": {
    "name": "Luftamt Bayern Nordbayern",
    "authority_type": "landesluftfahrt",
    "authority_type_label": "Luftfahrtbehörde",
    "level": "Land",
    "jurisdiction": { "bundesland": "Bayern", "landkreis": null, "jurisdiction_key": "09" },
    "phone": "…",
    "emails": ["luftamt@bayern.example"],
    "website": "…",
    "last_verified": "2026-01-15T00:00:00+00:00"
  }
}

Kein Treffer für den Standort → 404.

GET /verdictScope: verdict

Flugfreigabe-Einschätzung für einen konkreten Standort und eine Drohnenklasse.

Query-Parameter
  • country Pflichtfeld, ISO-3166-Ländercode (z. B. DE)
  • lat, lng Koordinaten (optional)
  • drone_class Optional: C0, C1, C2, C3 oder C4
Beispiel
curl -H "Authorization: Bearer <key_prefix>.<secret>" \
  "https://app.drohnenatlas.app/api/partner/v1/verdict?country=DE&lat=52.5&lng=13.4&drone_class=C2"
Antwort
{
  "data": {
    "coverage": "none",
    "country": "DE",
    "reason": "non_commercial_licence",
    "message": "Für dieses Land liegt derzeit keine lizenzrechtlich freigegebene Zonenquelle vor. Es ist kein Verdict verfügbar - das bedeutet NICHT, dass der Flug erlaubt ist.",
    "rules_available_at": "/partner/v1/rules",
    "disclaimer": "Diese Auskunft ist eine unverbindliche Einschätzung und keine Rechtsberatung."
  }
}

Der Sandbox-Plan enthält den Scope verdict nicht - eine Anfrage mit einem Sandbox-Key antwortet mit 403. Kontaktiere uns für Zugang zu diesem Endpoint. Für Deutschland liegt aktuell ohnehin keine lizenzrechtlich freigegebene Zonenquelle vor (siehe Beispielantwort) - ein Verdict ersetzt in keinem Fall die eigenständige Prüfung der verbindlichen Zonenkarte.