API-Dokumentation

Diese Seite ist die kurze, menschenlesbare Einführung. Die vollständige, interaktive Referenz mit allen Feldern, Beispiel-Payloads und einem direkt ausprobierbaren „Try it out“ findest du unter /docs.

Basis-URL & Authentifizierung

Alle Endpunkte liegen unter https://n24dns.de/api/v1/ und erwarten/liefern JSON. Zwei Auth-Arten, je nach Endpunkt-Gruppe:

  • Bearer-Token (Authorization: Bearer <token>) für Zonen, Records, DynDNS-Hosts und Billing. Token erstellst du im Kundenportal unter „API-Tokens“ – Anzahl und Rate-Limit richten sich nach deinem Tarif.
  • Session-Cookie für /auth/* und /me – diese beiden Gruppen sind bewusst nicht per API-Token nutzbar, sie gehören zum Login-Flow selbst.

Der dyndns2-Update-Endpoint (/nic/update, /update) ist ein Sonderfall: kein JSON, kein Bearer-Token, sondern das dyndns2-Klartextprotokoll mit dem DynDNS-Host-Update-Token als Passwort – siehe Router-Anleitungen für fertige Konfigurationen je Gerät.

Schnellstart

Alle Zonen der Organisation auflisten:

curl https://n24dns.de/api/v1/zones \
  -H "Authorization: Bearer <dein-api-token>"

Einen DNS-Record anlegen:

curl -X POST https://n24dns.de/api/v1/zones/<zone_id>/records \
  -H "Authorization: Bearer <dein-api-token>" \
  -H "Content-Type: application/json" \
  -d '{"name": "www", "type": "A", "content": "203.0.113.10", "ttl": 300}'

Endpunkte im Überblick

Vollständige Parameter, Antwortschemas und Fehlerfälle stehen bei jedem Endpunkt einzeln unter /docs. Hier nur die Übersicht:

Methode Pfad Zweck
GET/nic/update, /updatedyndns2-Update (Basic Auth bzw. Token-Query-Parameter)
POST/auth/registerKonto registrieren
POST/auth/loginAnmelden (Session-Cookie)
GET/meEigenes Konto abrufen
GET/zonesZonen auflisten
POST/zones/platform-subdomainsSubdomain anlegen
POST/zones/custom-domainsEigene Domain delegieren
DELETE/zones/{zone_id}Zone löschen
GET/zones/{zone_id}/recordsRecords auflisten
POST/zones/{zone_id}/recordsRecord anlegen
PATCH/zones/{zone_id}/records/{record_id}Record ändern
DELETE/zones/{zone_id}/records/{record_id}Record löschen
GET/zones/{zone_id}/dyndns-hostsDynDNS-Hosts auflisten
POST/zones/{zone_id}/dyndns-hostsDynDNS-Host anlegen
GET/billing/plansTarife auflisten (kein Login nötig)
GET/billing/subscriptionAktuelles Abo abrufen
GET/billing/usageNutzung gegen Plan-Limits

dyndns2-Antwortcodes

Der Update-Endpoint antwortet HTTP 200 mit Klartext (oder JSON bei Accept: application/json) – Fehler stehen im Antworttext, nicht im HTTP-Status, wie beim klassischen dyndns2-Protokoll üblich:

Antwort Bedeutung
good <ip>Update erfolgreich, IP wurde geändert.
nochg <ip>IP war bereits aktuell, kein Schreibvorgang nötig.
badauthUpdate-Token fehlt oder ist ungültig.
nohostZum Token gehört kein bekannter DynDNS-Host.
notfqdnAngefragter Hostname ist kein gültiger vollständiger Domainname.
abuseRate-Limit für diesen Host überschritten.
911Interner Fehler, später erneut versuchen.

Fehlerformat (JSON-Endpunkte)

Alle Fehler der JSON-API haben dieselbe Form, unabhängig vom HTTP-Status:

{"error": "limit_exceeded", "message": "..."}
HTTP error Bedeutung
401authentication_failedToken/Login fehlt oder ungültig.
402limit_exceededTarif-Limit erreicht (z. B. Anzahl Zonen, DynDNS-Hosts, TTL-Minimum).
403not_authorizedAuthentifiziert, aber ohne Rechte für diese Aktion.
404not_foundRessource existiert nicht oder gehört einer anderen Organisation.
409conflictKollision mit bestehenden Daten (z. B. CNAME-Konflikt, Label bereits vergeben).
422validation_failedEingabe ungültig.
429rate_limitedRate-Limit überschritten, Retry-After-Header beachten.
502upstream_service_errorEin externer Dienst (z. B. PowerDNS) war nicht erreichbar.

API-Tokens & Rate-Limits je Tarif

Der kostenlose Free-Tarif hat keinen API-Zugriff (0 Tokens) – ab Home ist die API nutzbar, Details und weitere Limits auf der Preisübersicht:

Tarif API-Tokens Rate-Limit
Free 0 kein API-Zugriff
Home 2 60 Requests/Minute
Business 10 300 Requests/Minute
Company 50 1200 Requests/Minute

Vollständige Referenz

Jeder Endpunkt einzeln mit allen Feldern, Beispiel-Payloads und direktem „Try it out“ gegen die echte API:

Zur interaktiven API-Referenz