Unser eBay-Shop für Refurbished Hardware – schauen Sie doch mal vorbei: Hardware-Shop
Anleitung

fair4DNS-API

Domains, DNS-Zonen und Einträge per Skript verwalten und Let’s-Encrypt-Zertifikate per DNS-Challenge automatisch ausstellen.

Überblick: zwei Schnittstellen

Alles, was Sie im fair4DNS-Domainmanager per Mausklick erledigen, können Sie auch per Skript automatisieren. Dafür gibt es zwei Schnittstellen:

MerkmalSOAP-APIDNS-Challenge-API
Wofür?Domains, DNS-Zonen und -Einträge, Kontakte (Handles), Listen und Transaktionen verwaltenEinträge für die ACME-DNS-01-Challenge anlegen und entfernen, z. B. für Let’s-Encrypt-Wildcard-Zertifikate
TechnikSOAP mit WSDL, z. B. mit der PHP-Klasse SoapClientHTTP mit JSON, Methode POST
AnmeldungLogin mit Benutzername und Passwort, nur von freigegebenen IP-AdressenAccess-Token im Header X-API-TOKEN
Vollständige ReferenzStart › API-DokumentationStart › DNS-Challenge-API-Dokumentation

Für beide Schnittstellen benötigen Sie einen Account für den fair4DNS-Domainmanager. Diese Anleitung zeigt die wichtigsten Funktionen mit Beispielen. Alle Aktionen, Felder und Rückgaben im Detail beschreibt die Dokumentation im Domainmanager unter dem Menüpunkt Start.

Hinweis zu den Beispielen: beispiel.de, die IP-Adressen 192.0.2.x und alle Angaben in GROSSBUCHSTABEN (z. B. IHR-PASSWORT) sind Platzhalter. Ersetzen Sie sie durch Ihre eigenen Daten.

SOAP-API einrichten und verbinden

Über die SOAP-API stehen Ihnen die Funktionen des Domainmanagers für eigene Programme zur Verfügung – etwa um Domains zu registrieren, DNS-Einträge aus einer Anwendung heraus zu pflegen oder Zonen für viele Domains anzulegen.

Voraussetzung: IP-Freigabe

Die SOAP-API nimmt nur Anfragen von IP-Adressen an, die Sie vorher freigegeben haben. Diese Sicherheitsmaßnahme lässt sich nicht umgehen.

  1. Melden Sie sich im fair4DNS-Domainmanager an.
  2. Öffnen Sie Start › Account › IP-Freigaben API und klicken Sie auf Erstellen.
  3. Tragen Sie die öffentliche IP-Adresse des Rechners ein, auf dem Ihr Skript läuft – IPv4 oder IPv6. Sie können mehrere Adressen hinterlegen, z. B. Ihren Server und Ihren Arbeitsplatz für Tests.
Tipp: Verbindet sich Ihr Server per IPv6 mit dem Internet, muss auch seine IPv6-Adresse freigegeben sein. Ändert sich die IP-Adresse Ihres Anschlusses regelmäßig, passen Sie die Freigabe entsprechend an.

Verbindung und Login in PHP

Die Schnittstelle ist per WSDL beschrieben:

https://www.fair4dns.de/soap_server.php?WSDL

In PHP nutzen Sie die eingebaute Klasse SoapClient; dafür muss die PHP-Erweiterung SOAP aktiv sein (prüfen Sie das z. B. mit php -m). Nach dem Verbindungsaufbau melden Sie sich mit login() an. Das folgende Grundgerüst verwenden auch alle weiteren Beispiele:

<?php
// Zugangsdaten aus einer Datei außerhalb des Web-Verzeichnisses laden (siehe unten)
$zugang = require '/PFAD/ZU/private/fair4dns-zugang.php';

$wsdl = 'https://www.fair4dns.de/soap_server.php?WSDL';

try {
    $client = new SoapClient($wsdl, array(
        'keep_alive'         => false,
        'connection_timeout' => 20,
    ));
    $client->login($zugang['benutzer'], $zugang['passwort']);

    // Hier folgen Ihre Aufrufe, z. B.:
    $result = $client->process('domain,list,domain', null, array('domain' => '*'));
    print_r($result);
} catch (SoapFault $e) {
    // Verbindungs- oder API-Fehler protokollieren – ohne Zugangsdaten auszugeben
    error_log('fair4DNS-API: ' . $e->getMessage());
    exit(1);
}

Fehler, die als SoapFault gemeldet werden – etwa wenn die Verbindung nicht zustande kommt –, fangen Sie mit try { … } catch (SoapFault $e) { … } ab. Wie die Rückgabe einer Aktion im Einzelnen aufgebaut ist, auch im Fehlerfall, beschreibt die API-Dokumentation. Zum Ausprobieren eignet sich print_r($result).

Eine Funktion für alles: process()

Nach dem Login rufen Sie jede Aktion über dieselbe Methode auf:

$result = $client->process($action, $object, $values);
ParameterBedeutung
$actionDie Aktion als Text: Bereich, Vorgang und je nach Aktion das Objekt, durch Kommas getrennt – z. B. 'dns,create,record' oder 'tool,query,whois'.
$objectWorauf sich die Aktion bezieht, meist der Domainname (z. B. 'beispiel.de'). Bei Listen ohne festes Objekt null.
$valuesEin Array mit den Werten der Aktion, z. B. die Felder eines DNS-Eintrags oder ein Listenfilter. Braucht die Aktion keine Werte, übergeben Sie null.

Zugangsdaten sicher ablegen

Schreiben Sie Benutzername und Passwort nicht direkt in Ihr Skript, sondern in eine eigene Datei:

<?php
// fair4dns-zugang.php – außerhalb des Web-Verzeichnisses speichern
return array(
    'benutzer' => 'IHR-BENUTZERNAME',
    'passwort' => 'IHR-PASSWORT',
);
Sicherheit: Legen Sie diese Datei außerhalb des Web-Verzeichnisses ab, damit sie nicht über den Browser abrufbar ist – bei ISPConfig-Websites eignet sich z. B. der Ordner private neben dem Ordner web. Setzen Sie restriktive Dateirechte (z. B. chmod 600) und nehmen Sie die Datei nicht in eine Versionsverwaltung auf. Skripte, die nur im Hintergrund laufen sollen, starten Sie am besten per Kommandozeile oder Cronjob statt über eine öffentlich erreichbare URL.

SOAP-Aktionen und PHP-Beispiele

Die wichtigsten Aktionen

Die Tabelle zeigt eine Auswahl. Welche Werte eine Aktion in $values erwartet, steht in der API-Dokumentation.

Aktion ($action)Wofür?
Domains
domain,create,domainDomain registrieren
domain,transfer,domainDomain zu fair4DNS umziehen (Transfer)
domain,modify,domainDomaindaten ändern
domain,delete,domainDomain löschen
domain,delete,releaseDomain freigeben (Release)
domain,info,domainDaten einer Domain abfragen, inkl. Auth-Info
domain,list,domainDomains auflisten, optional mit Filter
domain,list,goneDomains auflisten, die nicht mehr im Bestand sind
domain,modify,lock_statusSperrstatus (Lock) ändern
domain,modify,auth_infoAuth-Info (Transfer-Code) erzeugen
DNS-Zonen und -Einträge
dns,createZone anlegen
dns,deleteZone löschen
dns,infoZone abfragen
dns,create,recordEintrag (Record) anlegen
dns,modify,recordEintrag ändern
dns,delete,recordEintrag löschen
dns,modify,soaSOA-Daten der Zone ändern
Kontakte (Handles)
contact,create,contactKontakt anlegen
contact,modify,contactKontakt ändern
contact,info,contactKontakt abfragen
contact,delete,contactKontakt löschen
Listen und Informationen
transaction,list,transaction_logTransaktionsprotokoll auflisten
transaction,info,transactionTransaktion (Auftrag) abfragen
transaction,info,transaction_logEintrag im Transaktionsprotokoll abfragen
user,info,userBenutzerdaten abfragen
user,list,userBenutzer auflisten (z. B. Unterbenutzer)
user,list,pricingPreise abrufen
Werkzeuge
tool,query,whoisWhois-Abfrage zu einer Domain

Formate und erlaubte Werte

  • Listenfilter unterstützen den Platzhalter *, z. B. re* für alle Domains, die mit „re“ beginnen.
  • Datumsangaben im Format JJJJ-MM-TT, z. B. 2026-11-02.
  • Telefon- und Faxnummern im Format +49.123456: Ländervorwahl mit „+“, Punkt, dann die Rufnummer ohne führende 0.
  • Lock-Status: OK (entfernt alle Sperren), LOCK (Sperre für Änderungen), HOLD (Sperre für einen Umzug), HOLD-LOCK (Sperre für Änderungen und Umzug). Eine Sperre lässt sich nicht für alle Domainendungen setzen.
  • Renewal-Mode (Verlängerung): AUTORENEW (automatische Verlängerung, Standard), AUTORELEASE und AUTODELETE. Was beim Laufzeitende jeweils geschieht, beschreibt die API-Dokumentation.
Hinweis: Das System verarbeitet Aufträge asynchron. Ergebnisse wie eine neu erzeugte Auth-Info stehen deshalb unter Umständen erst nach einigen Minuten bereit. Den Stand Ihrer Aufträge sehen Sie über die Transaktions-Aktionen oder im Auftragsstapel des Domainmanagers.

Die folgenden Beispiele setzen voraus, dass $client wie im Grundgerüst verbunden und angemeldet ist. Setzen Sie die Aufrufe dort in den try-Block ein.

Beispiel: Domains mit Filter auflisten

// Alle Domains, die mit „re“ beginnen
$result = $client->process('domain,list,domain', null, array('domain' => 're*'));
print_r($result);

Beispiel: A-Record anlegen, ändern und löschen

Anlegen von www.beispiel.de mit der IP-Adresse 192.0.2.10:

$client->process('dns,create,record', 'beispiel.de', array(
    'source' => 'www',
    'ttl'    => '86400',
    'type'   => 'A',
    'prio'   => '0',
    'target' => '192.0.2.10',
));

Ändern auf die IP-Adresse 192.0.2.20. Mit search/name und search/type wählen Sie den bestehenden Eintrag aus; die übrigen Felder enthalten die neuen Werte:

$client->process('dns,modify,record', 'beispiel.de', array(
    'search/name' => 'www',
    'search/type' => 'A',
    'name'        => 'www',
    'ttl'         => '86400',
    'type'        => 'A',
    'priority'    => '0',
    'content'     => '192.0.2.20',
));
Achtung: Beim Ändern heißen die Felder anders als beim Anlegen: name, content und priority statt source, target und prio.

Löschen des Eintrags:

$client->process('dns,delete,record', 'beispiel.de', array(
    'source' => 'www',
    'type'   => 'A',
));

Beispiel: Zone mit unseren Nameservern anlegen

Die Zone für beispiel.de mit den Nameservern ns1.fair4dns.de und ns2.fair4dns.de, zwei A-Records (Domain und www) und einem MX-Eintrag. Mehrere Einträge desselben Typs werden durchnummeriert (a::1, a::2), nach dem Schrägstrich folgt das Feld:

$client->process('dns,create', 'beispiel.de', array(
    'ns::1'        => 'ns1.fair4dns.de',
    'ns::2'        => 'ns2.fair4dns.de',
    'a::1/source'  => '@',
    'a::1/target'  => '192.0.2.10',
    'a::2/source'  => 'www',
    'a::2/target'  => '192.0.2.10',
    'mx::1/source' => '@',
    'mx::1/target' => 'mail.beispiel.de',
));

Beispiel: Auth-Info erzeugen und abfragen

Die Auth-Info (auch Auth-Code) benötigen Sie, wenn eine Domain zu einem anderen Anbieter umziehen soll.

// Auth-Info erzeugen
$client->process('domain,modify,auth_info', 'beispiel.de', null);

// Einige Minuten später: Domaindaten inkl. Auth-Info abfragen
$info = $client->process('domain,info,domain', 'beispiel.de', null);
print_r($info);

Wird auch nach einigen Minuten keine Auth-Info angezeigt, liegt in der Regel ein Kommunikationsproblem mit der zuständigen Registrierungsstelle vor. Bitte wenden Sie sich dann an unseren Support.

Beispiel: Whois-Abfrage

$whois = $client->process('tool,query,whois', 'beispiel.de', null);
print_r($whois);

DNS-Challenge-API einrichten und aufrufen

Die DNS-Challenge-API ist für die automatische Ausstellung von Zertifikaten per ACME-DNS-01-Challenge gedacht. Diese Prüfmethode ist z. B. für Let’s-Encrypt-Wildcard-Zertifikate (*.beispiel.de) vorgeschrieben und funktioniert auch für Server, die von außen nicht per HTTP erreichbar sind. Statt mit Benutzername und Passwort melden Sie sich mit einem Access-Token an, der nur für die Zonen gilt, denen Sie ihn zugeordnet haben.

Access-Token anlegen und der Zone zuordnen

  1. Melden Sie sich im fair4DNS-Domainmanager an und öffnen Sie im Bereich SSL-Zertifikate die Automation-API-Verwaltung.
  2. Klicken Sie auf API-Zugang anlegen. Kopieren Sie den Access-Token und bewahren Sie ihn sicher auf.
  3. Öffnen Sie die Zone der Domain unter DNS / Nameserver › Zonen mit Zone bearbeiten.
  4. Wählen Sie auf dem Reiter DNS-01-Challenge den Access-Token aus und speichern Sie.
  5. Wiederholen Sie die Schritte 3 und 4 für jede weitere Domain, für die der Token Zertifikate anfordern soll.
Endpunkt: Die Adresse (URL) der DNS-Challenge-API finden Sie in der DNS-Challenge-API-Dokumentation im Domainmanager unter Start › DNS-Challenge-API-Dokumentation. In den Beispielen steht dafür der Platzhalter https://API-ENDPUNKT.

Anfrageformat

  • Methode POST
  • Header Content-Type: application/json
  • Header X-API-TOKEN: IHR-ACCESS-TOKEN
  • Im Body ein JSON-Objekt mit der Aktion (action) und ihren Parametern

Die API ist zustandslos: Jede Anfrage steht für sich, es gibt keinen Login und keine Sitzung. Ein vollständiger Anfrage-Body sieht so aus:

{"action":"addChallengeRecord","domain":"beispiel.de","subdomain":"www","challenge_token":"abcde123xyz"}

Parameter

ParameterPflicht?Regeln
actionjaaddChallengeRecord, removeChallengeRecord oder listChallengeRecords
domainjaDie Domain, deren Zone der Access-Token zugeordnet ist, z. B. beispiel.de
subdomainneinKein Punkt am Anfang oder Ende; jedes Label höchstens 63 Zeichen; kein Bindestrich am Anfang oder Ende eines Labels. Ohne Subdomain lassen Sie den Parameter ganz weg – nicht leer übergeben.
challenge_tokenbei add… und remove…Der Prüfwert des ACME-Clients: 10 bis 64 Zeichen, keine Leerzeichen. Bei listChallengeRecords nicht erlaubt.

Andere Parameter sind nicht zulässig und führen zu einem Fehler.

Die drei Aktionen mit curl

Für die Beispiele legen Sie den Access-Token in der Umgebungsvariable F4DNS_TOKEN ab. Mit read -rs wird er nicht angezeigt und landet nicht in der Shell-History:

read -rs F4DNS_TOKEN && export F4DNS_TOKEN

addChallengeRecord legt einen Challenge-Eintrag an:

curl -sS -X POST 'https://API-ENDPUNKT' \
  -H 'Content-Type: application/json' \
  -H "X-API-TOKEN: $F4DNS_TOKEN" \
  -d '{"action":"addChallengeRecord","domain":"beispiel.de","subdomain":"www","challenge_token":"abcde123xyz"}'

removeChallengeRecord entfernt ihn wieder – mit denselben Parametern:

curl -sS -X POST 'https://API-ENDPUNKT' \
  -H 'Content-Type: application/json' \
  -H "X-API-TOKEN: $F4DNS_TOKEN" \
  -d '{"action":"removeChallengeRecord","domain":"beispiel.de","subdomain":"www","challenge_token":"abcde123xyz"}'

listChallengeRecords listet die vorhandenen Challenge-Einträge auf – optional nur für eine Subdomain, aber immer ohne challenge_token:

curl -sS -X POST 'https://API-ENDPUNKT' \
  -H 'Content-Type: application/json' \
  -H "X-API-TOKEN: $F4DNS_TOKEN" \
  -d '{"action":"listChallengeRecords","domain":"beispiel.de"}'

Die Antwort ist JSON; das Ergebnis steht im Feld data.result_code. Mit dem Hilfsprogramm jq lesen Sie es z. B. so aus: … | jq '.data.result_code'.

Ergebnis- und Fehlercodes

Ergebniscodes (data.result_code)

CodeBedeutungAktion
1Challenge-Eintrag wurde angelegtaddChallengeRecord
2Eintrag existiert bereitsaddChallengeRecord
3Eintrag wurde entferntremoveChallengeRecord
4Eintrag war bereits aus dem DNS entferntremoveChallengeRecord
5Eintrag nicht gefunden bzw. nicht per API angelegtremoveChallengeRecord
6Liste der Challenge-EinträgelistChallengeRecords

Fehlercodes (HTTP-Status)

StatusUrsache
400Ungültige Aktion, unbekannter oder ungültiger Parameter, fehlerhaftes JSON oder ungültiges Token-Format
401Access-Token fehlt, ist ungültig oder der Domain nicht zugeordnet
405Die Anfrage wurde nicht per POST gesendet
415Falscher Content-Type – erwartet wird application/json
500Interner Fehler – versuchen Sie es später erneut; bleibt der Fehler bestehen, wenden Sie sich an den Support
Wichtig: Per API lassen sich nur Challenge-Einträge entfernen, die auch per API angelegt wurden. Einträge, die Sie von Hand in der Zone angelegt haben, löschen Sie in der Zonenverwaltung des Domainmanagers; removeChallengeRecord meldet dafür den Code 5.

Mit einem ACME-Client nutzen

Bei der DNS-01-Challenge gibt die Zertifizierungsstelle (z. B. Let’s Encrypt) einen Prüfwert vor, der als TXT-Eintrag unter _acme-challenge. plus Domainname veröffentlicht werden muss. Ein Hook-Skript übernimmt das automatisch: Vor der Prüfung legt es den Eintrag per addChallengeRecord an, danach entfernt es ihn per removeChallengeRecord.

Das Beispiel nutzt den ACME-Client certbot auf einem Linux-Server mit Root-Rechten. Andere ACME-Clients mit Hook-Unterstützung binden die API nach demselben Prinzip ein.

Ablauf

  1. Legen Sie einen Access-Token an und ordnen Sie ihn der Zone zu (siehe oben).
  2. Speichern Sie den Access-Token in einer Datei, die nur root lesen kann.
  3. Legen Sie das Hook-Skript an und tragen Sie den Endpunkt und Ihre Zone ein.
  4. Testen Sie die Ausstellung mit --dry-run und fordern Sie danach das Zertifikat an.

Access-Token sicher ablegen

Schreiben Sie den Access-Token nicht in das Skript selbst – vor allem nicht, wenn es in einer Versionsverwaltung liegt. Legen Sie ihn in einer Datei ab, die nur root lesen kann (alternativ in einer Umgebungsvariable):

sudo touch /root/.fair4dns-token
sudo chmod 600 /root/.fair4dns-token
sudo nano /root/.fair4dns-token      # Access-Token einfügen und speichern

Hook-Skript für certbot

certbot übergibt dem Skript die Domain in $CERTBOT_DOMAIN und den Prüfwert in $CERTBOT_VALIDATION. Speichern Sie das Skript z. B. als /usr/local/bin/fair4dns-hook.sh und machen Sie es mit sudo chmod 700 /usr/local/bin/fair4dns-hook.sh ausführbar:

#!/bin/bash
# fair4dns-hook.sh – DNS-01-Challenge über die fair4DNS-DNS-Challenge-API
# Aufruf durch certbot: "fair4dns-hook.sh add" (vor der Prüfung)
#                       "fair4dns-hook.sh remove" (nach der Prüfung)
set -euo pipefail

API_URL='https://API-ENDPUNKT'        # Endpunkt laut DNS-Challenge-API-Dokumentation
ZONE='beispiel.de'                    # Zone, der der Access-Token zugeordnet ist
API_TOKEN=$(tr -d '[:space:]' < /root/.fair4dns-token)

case "${1:-}" in
  add)    ACTION='addChallengeRecord' ;;
  remove) ACTION='removeChallengeRecord' ;;
  *)      echo "Aufruf: $0 add|remove" >&2; exit 1 ;;
esac

# Subdomain relativ zur Zone bestimmen (bei der Domain selbst entfällt sie)
case "$CERTBOT_DOMAIN" in
  "$ZONE")   SUB='' ;;
  *."$ZONE") SUB="${CERTBOT_DOMAIN%.$ZONE}" ;;
  *)         echo "$CERTBOT_DOMAIN gehört nicht zur Zone $ZONE" >&2; exit 1 ;;
esac

# Wichtig: Prüfen Sie mit listChallengeRecords, unter welchem Namen der Eintrag
# angelegt wird, und passen Sie SUB bei Bedarf an (siehe Hinweis unten).
if [ -n "$SUB" ]; then
  JSON=$(printf '{"action":"%s","domain":"%s","subdomain":"%s","challenge_token":"%s"}' \
    "$ACTION" "$ZONE" "$SUB" "$CERTBOT_VALIDATION")
else
  # Ohne Subdomain den Parameter weglassen statt leer übergeben
  JSON=$(printf '{"action":"%s","domain":"%s","challenge_token":"%s"}' \
    "$ACTION" "$ZONE" "$CERTBOT_VALIDATION")
fi

curl -sS --fail -X POST "$API_URL" \
  -H 'Content-Type: application/json' \
  -H "X-API-TOKEN: $API_TOKEN" \
  -d "$JSON"
echo

# Nach dem Anlegen warten, bis der Eintrag auf den Nameservern sichtbar ist
if [ "$ACTION" = 'addChallengeRecord' ]; then
  sleep 30
fi

Die Pause von 30 Sekunden gibt den Nameservern Zeit, den neuen Eintrag auszuliefern. Schlägt die Prüfung fehl, weil der Eintrag noch nicht sichtbar war, erhöhen Sie den Wert.

Name des Challenge-Eintrags prüfen: Die Zertifizierungsstelle sucht den Prüfwert für beispiel.de unter _acme-challenge.beispiel.de und für www.beispiel.de unter _acme-challenge.www.beispiel.de. Ob die API das Präfix _acme-challenge selbst ergänzt oder ob Sie es im Parameter subdomain angeben müssen, entnehmen Sie bitte der DNS-Challenge-API-Dokumentation im Domainmanager. Legen Sie vor dem ersten echten Einsatz einen Testeintrag an und prüfen Sie mit listChallengeRecords oder in der Zonenansicht des Domainmanagers, unter welchem Namen er erscheint. Passen Sie das Skript bei Bedarf an.

Ob der Eintrag auf unseren Nameservern abrufbar ist, prüfen Sie z. B. mit dig:

dig +short TXT _acme-challenge.beispiel.de @ns1.fair4dns.de

Zertifikat anfordern

Ein Wildcard-Zertifikat für *.beispiel.de wird über die Domain selbst validiert: certbot übergibt dem Skript in $CERTBOT_DOMAIN den Namen beispiel.de (ohne *.), das Skript lässt subdomain deshalb weg. Testen Sie den Ablauf zuerst mit --dry-run gegen die Testumgebung von Let’s Encrypt:

sudo certbot certonly --manual --preferred-challenges dns \
  --manual-auth-hook '/usr/local/bin/fair4dns-hook.sh add' \
  --manual-cleanup-hook '/usr/local/bin/fair4dns-hook.sh remove' \
  -d beispiel.de -d '*.beispiel.de' \
  --dry-run

Läuft der Test fehlerfrei, wiederholen Sie den Befehl ohne --dry-run. certbot speichert die Hook-Befehle und verwendet sie bei der Verlängerung mit certbot renew automatisch wieder.

Häufige Fragen

Die DNS-Challenge-API antwortet mit 401 – was ist falsch?

Der Access-Token fehlt, ist ungültig oder ist der Domain nicht zugeordnet. Prüfen Sie:

  • Wird der Header X-API-TOKEN mitgesendet und enthält er den vollständigen Token (ohne Leerzeichen oder Zeilenumbruch)?
  • Ist der Token in der Zone auf dem Reiter DNS-01-Challenge ausgewählt und gespeichert?
  • Steht im Parameter domain genau die Domain, deren Zone der Token zugeordnet ist?
Ich erhalte 400 wegen eines unbekannten Parameters.

Erlaubt sind nur action, domain, subdomain und challenge_token – jeder weitere Parameter führt zu einem Fehler. Bei listChallengeRecords ist challenge_token nicht erlaubt. Eine leere subdomain lassen Sie ganz weg. Prüfen Sie außerdem, ob der JSON-Body gültig ist und der Challenge-Token 10 bis 64 Zeichen ohne Leerzeichen hat.

Was bedeutet der Fehler 415?

Die Anfrage wurde nicht mit dem Content-Type application/json gesendet. curl verwendet bei -d ohne weitere Angabe einen anderen Content-Type – ergänzen Sie deshalb immer -H 'Content-Type: application/json'. Den Fehler 405 erhalten Sie, wenn die Anfrage nicht per POST gesendet wird.

Die SOAP-API lehnt meine Anfragen ab.

Meist fehlt die IP-Freigabe. Tragen Sie die öffentliche IP-Adresse des Rechners, auf dem Ihr Skript läuft, unter Start › Account › IP-Freigaben API ein. Verbindet sich der Rechner per IPv6, geben Sie auch die IPv6-Adresse frei. Prüfen Sie außerdem Benutzername und Passwort sowie, ob die PHP-Erweiterung SOAP aktiv ist.

Kann ich von Hand angelegte Challenge-Einträge per API löschen?

Nein. Per API lassen sich nur Einträge entfernen, die auch per API angelegt wurden; für andere meldet removeChallengeRecord den Code 5. Löschen Sie solche Einträge in der Zonenverwaltung des Domainmanagers.

Wo finde ich die vollständige API-Referenz?

Im fair4DNS-Domainmanager unter dem Menüpunkt Start: die API-Dokumentation für die SOAP-API mit allen Aktionen und Feldern und die DNS-Challenge-API-Dokumentation mit dem Endpunkt und allen Details zur DNS-Challenge. Bei Fragen hilft Ihnen unser Support.