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.
403 forbidden_zone zurück.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.
Jedes Token besitzt Scopes. Ein Token ohne konfigurierten Scope erhält standardmäßig dns:read. Der Schreib-Scope erlaubt auch Lesezugriffe.
| Scope | Gewä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
| HTTP | Fehlercode | Bedeutung |
|---|---|---|
| 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:
-
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. -
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ßendPOST /v1/dns/zones/{zone}/verifyauf. -
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.
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.
| Methode | Pfad | Scope | Zweck |
|---|---|---|---|
| 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.
| Methode | Pfad | Scope | Zweck |
|---|---|---|---|
| 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.
| Methode | Pfad | Scope | Zweck |
|---|---|---|---|
| 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.
| Methode | Pfad | Scope | Zweck |
|---|---|---|---|
| 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.
| Methode | Pfad | Scope | Zweck |
|---|---|---|---|
| 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.
| Methode | Pfad | Scope | Zweck |
|---|---|---|---|
| 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.
| Methode | Pfad | Scope | Zweck |
|---|---|---|---|
| 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.
| Methode | Pfad | Scope | Zweck |
|---|---|---|---|
| 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.
| Methode | Pfad | Scope | Zweck |
|---|---|---|---|
| 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.
| Methode | Pfad | Scope | Zweck |
|---|---|---|---|
| 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.
| Methode | Pfad | Scope | Zweck |
|---|---|---|---|
| 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.
| Methode | Pfad | Scope | Zweck |
|---|---|---|---|
| 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
| Feld | Typ | Anforderung | Notizen |
|---|---|---|---|
zone |
string |
Erforderlich | Apex-Zone; wird vom Server in Kleinbuchstaben umgewandelt. Reverse-Zonen werden akzeptiert. |
DNS-Eintrag erstellen
| Feld | Typ | Anforderung | Notizen |
|---|---|---|---|
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
| Feld | Typ | Anforderung | Notizen |
|---|---|---|---|
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. |
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/zonesZone 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
- Erstellen Sie einen API-Schlüssel mit
dns:writeunter Konto → API-Schlüssel und kopieren Sie ihn bei der Anzeige. - Speichern Sie das Token in einer geschützten Umgebungsvariable auf Ihrem Rechner.
- Rufen Sie
GET /v1/account/meauf, um das Token und seine Scopes zu bestätigen. - Ordnen Sie eine Zone zu. Die Antwort gibt an, ob die Bestätigung sofort, TXT-basiert oder mit der alten NS-Methode erfolgt.
- Erbringen Sie gegebenenfalls den zurückgegebenen DNS-Nachweis und rufen Sie anschließend den Bestätigungsendpunkt auf.
- 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.