2.2 KiB
2.2 KiB
Cloudflare API Quick Reference
Authentifizierung
Header: Authorization: Bearer <API_TOKEN>
Header: Content-Type: application/json
API-Endpunkte
| Operation | Methode | URL |
|---|---|---|
| Zonen auflisten | GET | /client/v4/zones |
| Zone anlegen | POST | /client/v4/zones |
| Zone löschen | DELETE | /client/v4/zones/:zone_id |
| DNS-Records abrufen | GET | /client/v4/zones/:zone_id/dns_records |
| DNS-Record anlegen | POST | /client/v4/zones/:zone_id/dns_records |
| DNS-Record ändern | PATCH | /client/v4/zones/:zone_id/dns_records/:record_id |
| DNS-Record löschen | DELETE | /client/v4/zones/:zone_id/dns_records/:record_id |
Zone anlegen (Minimal-Body)
{
"name": "example.de",
"account": {"id": "ACCOUNT_ID"},
"jump_start": false,
"type": "full"
}
Wichtig: jump_start: true scannt bestehende DNS-Einträge, kann aber unerwünschte Records importieren. false startet mit leerer Zone.
DNS-Record anlegen (Minimal-Body)
{
"type": "A",
"name": "example.de",
"content": "92.60.38.175",
"proxied": false,
"ttl": 1
}
name: "@"für Root-Domain,name: "www"für Subdomainproxied: false= graue Wolke (DNS-only),true= orangene Wolke (Proxy)ttl: 1= Auto-TTL
MX-Record (Besonderheit)
{
"type": "MX",
"name": "example.de",
"content": "mail.example.de",
"priority": 10,
"proxied": false,
"ttl": 1
}
priority: Zahl (10 = Standard), niedriger = höhere Priorität- proxied MUSS false sein – Cloudflare kann MX nicht proxien!
Antwort parsen (python3 one-liner)
curl ... | python3 -c "
import json, sys
data = json.load(sys.stdin)
if data['success']:
for r in data['result']:
print(f\"{r['name']} → {r['content']}\")
else:
for e in data['errors']:
print(f\"ERROR: {e['message']}\")
"
Typische Fehler
| Fehler | Ursache | Lösung |
|---|---|---|
Invalid API Token |
Token falsch/abgelaufen | Neuen Token erstellen |
Zone already exists |
Zone bereits angelegt | Statt POST → GET + PATCH |
Invalid proxied mode for MX |
proxied:true bei MX |
MX MUSS proxied:false sein |
Could not route to ... |
Zone-ID falsch | GET /zones für korrekte ID |