CNF API · v1

Eine API für c.nf: DNS-Zonen und -Einträge, persönliche Dateien, Pakete, gespeicherte Zugangsdaten, Domain-Abfragen und einige öffentliche Dienste, die gar kein Konto brauchen. Jede authentifizierte Operation bleibt auf das Konto beschränkt, dessen Schlüssel den Aufruf gemacht hat.

Übersicht

Version 1 stellt DNS-Vorgänge für Zonen bereit, die Sie über die DNS-Verwaltung zugeordnet haben. Tokens können Sie unter Konto → API-Schlüssel erstellen und widerrufen.

Dieselbe Vertrauensgrenze wie in der Konsole. Die API verwendet die Eigentumsprüfung der Konsole für bestätigte Zonen. Eine Zone, die für Ihr Konsolenkonto verfügbar ist, ist auch für Ihren API-Schlüssel verfügbar; jede andere Zone gibt 403 forbidden_zone zurück.
Fordern Sie für einen maschinenlesbaren Endpunktkatalog GET /v1?format=json an oder senden Sie Accept: application/json an /v1.

Basis-URL und Versionierung

https://api.c.nf/v1

Alle Endpunkte liegen unter /v1. Inkompatible Änderungen erhalten einen neuen Pfad für die Hauptversion. Abwärtskompatible Felder und Endpunkte können zu v1 hinzugefügt werden und werden im Änderungsprotokoll festgehalten.

Authentifizierung und Scopes

Jede Anfrage, die Kontodaten liest oder ändert, muss ein Bearer-Token enthalten. Tokens beginnen mit cnf_, gefolgt von 32 Hexadezimalzeichen.

curl https://api.c.nf/v1/dns/zones \
  -H "Authorization: Bearer cnf_a1b2c3d4e5f60718293a4b5c6d7e8f90"

Tokens werden als nicht umkehrbare Hashwerte gespeichert; der vollständige Wert wird nur bei der Erstellung angezeigt. Wenn ein Token verloren geht, widerrufen Sie es und erstellen Sie ein neues.

Nur den Authorization-Header verwenden. Basisauthentifizierung und Tokens in der Abfragezeichenfolge werden nicht akzeptiert. Ein Token in einer URL kann über Protokolle, Referrer-Header und den Browserverlauf offengelegt werden.

Jedes Token besitzt Scopes. Ein Token ohne konfigurierten Scope erhält standardmäßig dns:read. Der Schreib-Scope erlaubt auch Lesezugriffe.

ScopeGewährt
dns:read Zonen und Einträge auflisten sowie einzelne Einträge lesen.
dns:write DNS-Einträge und Zonenzuordnungen lesen, erstellen, aktualisieren und löschen.
* Alle Scopes. Verwenden Sie dies nur, wenn es tatsächlich erforderlich ist.

Bei einer Abweichung wird 403 forbidden_scope zurückgegeben; zur Diagnose sind sowohl required_scopes als auch token_scopes enthalten.

Trennung nach Benutzer

Ein Bearer-Token wird genau einer user_id zugeordnet. Jeder Zonenhandler prüft vor jedem Lese- oder Schreibzugriff die bestätigte Zuordnung dieses Benutzers. Es gibt keine Administratorausnahme, keinen Identitätswechselpfad und keine Umgehung zwischen Benutzern.

Auch ein Token mit * kann nur auf Zonen zugreifen, die vom eigenen Benutzer bestätigt wurden. Beim Zugriff auf die Zone eines anderen Kontos wird 403 forbidden_zone zurückgegeben.

Antwortumschlag

Erfolgreiche Antwort

{
  "success": true,
  "data": { "zones": [] },
  "request_id": "req_abc123def456abcd"
}

Fehlerantwort

{
  "success": false,
  "error": "forbidden_zone",
  "message": "zone not verified for this account (or does not exist)",
  "request_id": "req_abc123def456abcd",
  "zone": "example.com"
}

request_id ist in jeder Antwort enthalten und kann gefahrlos in clientseitigen Protokollen aufgezeichnet werden.

Fehlercodes

HTTPFehlercodeBedeutung
400 bad_request Ein erforderliches Feld fehlt, der Anfrageinhalt ist fehlerhaft oder eine Eingabe ist ungültig.
401 unauthorized Das Bearer-Token fehlt, ist ungültig oder wurde widerrufen.
403 forbidden_scope Das Token verfügt nicht über den erforderlichen Scope.
403 forbidden_zone Die Zone ist für dieses Konto nicht bestätigt oder existiert nicht.
404 not_found Die angeforderte Zone, der Eintrag oder der Benutzer wurde nicht gefunden.
405 method_not_allowed Dieser Endpunkt unterstützt die HTTP-Methode nicht.
502 upstream_error Der DNS-Anbieter hat einen Fehler zurückgegeben.

Zonenbestätigung

Wenn POST /v1/dns/zones eine Zone zuordnet, wählt der Server einen der folgenden Wege:

  1. Sofortige Bestätigung (method: "auto") — Wird verwendet, wenn kein anderes Konto die Zone zugeordnet hat. Die Zuordnung wird sofort bestätigt. Einträge werden erst autoritativ, nachdem der Eigentümer die NS-Delegierung beim Registrar auf die zurückgegebenen Nameserver verweist.
  2. TXT-Bestätigung — Wird bei einer konkurrierenden Zuordnung verwendet. Fügen Sie den zurückgegebenen TXT-Wert unter _cnfdns-verify.<zone> hinzu und rufen Sie anschließend POST /v1/dns/zones/{zone}/verify auf.
  3. Alte NS-Bestätigung — Ältere ausstehende Zuordnungen können verify_method: "ns" verwenden. Bei der Bestätigung werden die aktiven NS-Antworten der Zone mit dem erwarteten Nameserversatz verglichen.
Warum die sofortige Bestätigung sicher ist. Bei c.nf gespeicherte Einträge bleiben wirkungslos, bis der Domaininhaber die autoritative NS-Delegierung beim Registrar ändert. Eine erste Zuordnung allein kann nicht bewirken, dass diese Einträge ausgeliefert werden.
Reverse-Zonen Dasselbe Modell gilt für in-addr.arpa und ip6.arpa. Ordnen Sie die Zone zu, rufen Sie expected_ns ab und übermitteln Sie diese Delegierungsziele an die zuständige Registry.

Die Bestätigung ist idempotent. Bei einer Wiederholung für eine bestätigte Zuordnung wird verified: true zurückgegeben, ohne die Zuordnung zu ändern.

Eintragstypen und Grenzwerte

Unterstützte Eintragstypen

A, AAAA, CNAME, MX, TXT, NS, SRV, CAA, PTR, SPF.

priority ist für MX und SRV erforderlich und wird bei anderen Typen ignoriert. ttl muss zwischen 60 und 2.592.000 Sekunden liegen.

Endpunkte

Öffentliche Dienste

Kleine, verlässliche Endpunkte ohne Konto: Zeit, Adresse, Land, Wechselkurse und Hashes.

MethodePfadScopeZweck
GET /v1/public/time Öffentlich Die aktuelle UTC-Zeit als ISO 8601, RFC 2822 und Unix-Zeit.
GET /v1/public/timestamp Öffentlich Der aktuelle Unix-Zeitstempel, in Sekunden und Millisekunden.
GET /v1/public/ip Öffentlich Die Adresse, von der diese Anfrage kam.
GET /v1/public/geo Öffentlich Das Land dieser Anfrage, wie am Edge ermittelt.
GET /v1/public/fx Öffentlich Wechselkurse zu einer Basiswährung, stündlich aktualisiert.
GET /v1/public/hash Öffentlich Eine Zeichenkette mit SHA-256 oder einem anderen unterstützten Verfahren hashen.

Konto

Zu wem ein Token gehört und was es darf.

MethodePfadScopeZweck
GET /v1/account/me Beliebiges Token Das Konto hinter dem Token, seine Scopes und die damit erreichbaren Endpunkte.
GET /v1/account/sessions account:read Alle Browsersitzungen, die derzeit an diesem Konto angemeldet sind.
POST /v1/account/sessions/revoke account:write Eine Sitzung abmelden.
POST /v1/account/sessions/revoke-all account:write Alle Sitzungen abmelden.
POST /v1/account/profile account:write Ihren Anzeigenamen ändern.

DNS

Eine Domain beanspruchen, die Kontrolle nachweisen und dann ihre Einträge verwalten.

MethodePfadScopeZweck
GET /v1/dns/zones dns:read Alle von diesem Konto beanspruchten Zonen.
POST /v1/dns/zones dns:write Eine Zone beanspruchen. Unstrittige Ansprüche gelten sofort, strittige erhalten eine TXT-Prüfung.
GET /v1/dns/zones/{zone} dns:read Eine Zone, mit Prüfanweisungen, solange sie aussteht.
POST /v1/dns/zones/{zone}/verify dns:write Die Prüfabfrage ausführen und die Zone bei Übereinstimmung als verifiziert markieren.
DELETE /v1/dns/zones/{zone} dns:write Einen Anspruch aufgeben. Die Einträge selbst bleiben unberührt.
GET /v1/dns/zones/{zone}/records dns:read Alle Einträge einer verifizierten Zone.
POST /v1/dns/zones/{zone}/records dns:write Einen Eintrag in einer verifizierten Zone anlegen.
GET /v1/dns/zones/{zone}/records/{id} dns:read Ein einzelner Eintrag.
PATCH /v1/dns/zones/{zone}/records/{id} dns:write Teile eines Eintrags ändern; Weggelassenes behält seinen Wert.
DELETE /v1/dns/zones/{zone}/records/{id} dns:write Einen Eintrag entfernen.

Zugangsdaten

Der private Zugangsdatenspeicher hinter dem Zugangsdaten-Werkzeug.

MethodePfadScopeZweck
GET /v1/cred cred:read cred:write Gespeicherte Zugangsdaten, wahlweise nach Plattform gefiltert.
POST /v1/cred cred:write Zugangsdaten speichern.

Dateien

Persönlicher Dateispeicher: auflisten, hochladen, bearbeiten, teilen und löschen.

MethodePfadScopeZweck
GET /v1/files files:read files:write Ihre gespeicherten Dateien, neueste zuerst.
GET /v1/files/{id} files:read files:write Eine Datei, samt Freigabelink, sofern vorhanden.
GET /v1/files/download files:read files:write Eine Datei herunterladen.
POST /v1/files/upload files:write Eine Datei hochladen.
POST /v1/files/update files:write Die Angaben einer Datei bearbeiten, einschließlich der Freigabe.
POST /v1/files/rename files:write Den Namen ändern, unter dem eine Datei heruntergeladen wird.
POST /v1/files/delete files:write Eine Datei und ihren Inhalt löschen.
POST /v1/files/upload-chunk files:write Einen Teil eines großen Uploads senden.
POST /v1/files/upload-finalize files:write Die Teile zu einer Datei zusammensetzen.

CDN

Edge-Caching und Datenverkehr für Ihre geteilten Dateien.

MethodePfadScopeZweck
GET /v1/cdn/stats cdn:read Cache-Einstellungen und Abrufzahlen Ihrer geteilten Dateien.
POST /v1/cdn/config cdn:write Festlegen, wie lange der Edge eine Datei hält — oder die Auslieferung stoppen.
POST /v1/cdn/purge cdn:write Eine Datei sofort aus dem Edge-Cache entfernen.

SMS-Weiterleitung

Vom Telefon weitergeleitete Nachrichten und die Schlüssel dafür.

MethodePfadScopeZweck
GET /v1/sms/messages sms:read An Ihr Konto weitergeleitete Nachrichten.
GET /v1/sms/keys sms:read sms:write Die Weiterleitungsschlüssel Ihrer Geräte.
POST /v1/sms/keys sms:write Einen Weiterleitungsschlüssel ausstellen. Höchstens fünf.
DELETE /v1/sms/keys sms:write Einen Weiterleitungsschlüssel widerrufen.

Statische Websites

ZIP hochladen, Website ausliefern.

MethodePfadScopeZweck
GET /v1/sites sites:read sites:write Ihre statischen Websites, zuletzt bereitgestellte zuerst.
POST /v1/sites/deploy sites:write Ein ZIP als Website bereitstellen.
POST /v1/sites/delete sites:write Eine Website samt Dateien löschen.

Deployments

Ihre bereitgestellten Formular-, Webhook- und Kurzlink-Endpunkte.

MethodePfadScopeZweck
GET /v1/deployments deploy:read deploy:write Ihre Deployments und wie oft sie genutzt wurden.
POST /v1/deployments/toggle deploy:write Ein Deployment aktivieren oder deaktivieren.
POST /v1/deployments/delete deploy:write Ein Deployment löschen.

Domains

Ihr Domain-Portfolio und dessen Registrierungsdaten.

MethodePfadScopeZweck
GET /v1/domains domain:read domain:write Ihre Domains, am ehesten ablaufende zuerst.
POST /v1/domains/whois-sync domain:write Eine Domain aus dem Registry-Eintrag aktualisieren.

Pakete

Releases veröffentlichen und deren Versionen und Downloadzahlen abrufen.

MethodePfadScopeZweck
GET /v1/packages packages:read packages:write Ihre Pakete, mit Versionszahl und Downloadsumme.
GET /v1/packages/{slug} packages:read packages:write Ein Paket, mit allen Versionen und Artefakten.
POST /v1/packages/publish packages:write Eine Version veröffentlichen; ist das Paket neu, wird es angelegt.
POST /v1/packages/update packages:write Die Angaben eines Pakets bearbeiten.
POST /v1/packages/delete packages:write Ein Paket mit allen Versionen und Artefakten löschen.

WHOIS

Registrierungsdaten einer Domain, zwischengespeichert und mit den Domain-Werkzeugen geteilt.

MethodePfadScopeZweck
GET /v1/whois whois:read Registrierungsdaten zu einer Domain.

Für KI-Agenten

Verweisen Sie einen Agenten auf /v1/ai — eine Kurzanleitung, die direkt in einen Prompt passt — oder auf /v1/ai?format=json für dieselben Endpunkte als Werkzeugdefinitionen. /v1/openapi.json ist der vollständige OpenAPI-3.1-Vertrag, /llms.txt die Karte für Crawler. Alle vier entstehen aus derselben Routentabelle wie diese Seite und können daher keinen Endpunkt beschreiben, den es nicht gibt.

curl https://api.c.nf/v1/ai
curl https://api.c.nf/v1/ai?format=json
curl https://api.c.nf/v1/openapi.json

Anfragefelder

Zonenzuordnung erstellen

FeldTypAnforderungNotizen
zone string Erforderlich Apex-Zone; wird vom Server in Kleinbuchstaben umgewandelt. Reverse-Zonen werden akzeptiert.

DNS-Eintrag erstellen

FeldTypAnforderungNotizen
type string Erforderlich Einer der Typen A, AAAA, CNAME, MX, TXT, NS, SRV, CAA, PTR oder SPF.
host string Optional Nur Subdomain. Verwenden Sie für den Apex eine leere Zeichenfolge oder @.
value string Erforderlich Inhalt des Eintrags, etwa eine IP-Adresse, ein Zielname oder ein Textwert.
ttl integer Optional Zwischen 60 und 2.592.000 Sekunden. Standardwert ist 3.600.
priority integer Optional Für MX und SRV erforderlich; bei anderen Typen ignoriert.

DNS-Eintrag aktualisieren

FeldTypAnforderungNotizen
host string Optional Ersatz-Subdomain.
value string Optional Darf nach dem Zusammenführen mit dem aktuellen Eintrag nicht leer sein.
ttl integer Optional Zwischen 60 und 2.592.000 Sekunden.
priority integer Optional Nur für MX und SRV verwendet.
Der Eintragstyp kann nicht mit PATCH geändert werden. Löschen Sie den Eintrag und erstellen Sie einen neuen, um seinen Typ zu ändern.

Beispiele

Zonen auflisten

curl -H "Authorization: Bearer $CNF_TOKEN" \
  https://api.c.nf/v1/dns/zones

Zone zuordnen

curl -X POST https://api.c.nf/v1/dns/zones \
  -H "Authorization: Bearer $CNF_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"zone":"example.com"}'

Zone bestätigen

curl -X POST https://api.c.nf/v1/dns/zones/example.com/verify \
  -H "Authorization: Bearer $CNF_TOKEN"

Eintrag erstellen

curl -X POST https://api.c.nf/v1/dns/zones/example.com/records \
  -H "Authorization: Bearer $CNF_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"type":"A","host":"api","value":"192.0.2.10"}'

Schnellstart

  1. Erstellen Sie einen API-Schlüssel mit dns:write unter Konto → API-Schlüssel und kopieren Sie ihn bei der Anzeige.
  2. Speichern Sie das Token in einer geschützten Umgebungsvariable auf Ihrem Rechner.
  3. Rufen Sie GET /v1/account/me auf, um das Token und seine Scopes zu bestätigen.
  4. Ordnen Sie eine Zone zu. Die Antwort gibt an, ob die Bestätigung sofort, TXT-basiert oder mit der alten NS-Methode erfolgt.
  5. Erbringen Sie gegebenenfalls den zurückgegebenen DNS-Nachweis und rufen Sie anschließend den Bestätigungsendpunkt auf.
  6. Erstellen, lesen, aktualisieren oder löschen Sie Einträge erst, nachdem die Zuordnung bestätigt wurde.

Änderungsprotokoll

v1.1.0 — Zonenverwaltung

  • API-basierte Zonenzuordnungen einschließlich sofortiger und TXT-basierter Bestätigungswege hinzugefügt.
  • Endpunkte für den Status einzelner Zonen und die idempotente Bestätigung hinzugefügt.
  • Widerruf von Zuordnungen ohne implizites Löschen von Einträgen hinzugefügt.
  • Filter für bestätigte, ausstehende und alle Zuordnungen zur Zonenliste hinzugefügt.

v1.0.0 — Erstveröffentlichung

  • Bearer-Token-Authentifizierung und Trennung der Zonen nach Benutzer hinzugefügt.
  • Lese- und Schreib-Scopes hinzugefügt.
  • Endpunkte für Konto, Zonenliste und Eintragsverwaltung hinzugefügt.
  • Einheitlichen Antwortumschlag mit Anfragekennung hinzugefügt.