Handbuch · Für Entwickler · v1.0.0

DomainWarn API

Alles, was im Dashboard steht, gibt es auch per REST-API: Domains anlegen und pausieren, Prüfungen anstoßen, Incidents quittieren, DNS-Änderungen und Verfügbarkeit auswerten. Authentifizierung mit einem API-Token je Organisation, Antworten als JSON, beschrieben in einer OpenAPI-3.1-Spezifikation.

Basis-Adresse
https://api.domainwarn.com/api/v1
Authentifizierung
Authorization: Bearer
Format
JSON · OpenAPI 3.1
Auf dieser Seite

Authentifizierung

API-Tokens erzeugen Admins und Owner im Dashboard unter Einstellungen → API. Das Token wird genau einmal im Klartext angezeigt; danach ist nur noch Name, Recht, letzte Nutzung und Ablauf sichtbar. Jeder Aufruf schickt das Token als Bearer-Token und fordert JSON an:

  • Ein Token gilt für genau eine Organisation. Aufrufe für eine andere Organisation antworten mit 404, als gäbe es sie nicht.
  • Optionales Ablaufdatum von 1 bis 730 Tagen; empfohlen sind 90 Tage mit regelmäßiger Erneuerung. Abgelaufene und widerrufene Tokens antworten mit 401.
  • Verlässt der Ersteller die Organisation oder wird die Organisation gelöscht, sind seine Tokens sofort ungültig.
  • Höchstens 20 Tokens je Organisation. Jedes Anlegen und Widerrufen steht im Audit-Log.
HTTP
Authorization: Bearer <Token>
Accept: application/json

Rechte: read und write

Beim Anlegen wählst du zwischen zwei Rechten. Ein Token hat nie mehr Rechte als ein Mitglied, auch wenn ein Owner es erzeugt hat.

  • read: wie die Rolle Viewer. Alle GET-Endpunkte; jede schreibende Methode antwortet mit 403.
  • write: wie die Rolle Mitglied. Zusätzlich Domains und Kunden anlegen, ändern und löschen, Monitore verwalten, Prüfungen anstoßen und Incidents quittieren.
  • Nie per Token, auch nicht mit write: Konto, Passwort, Zwei-Faktor, Passkeys, Mitglieder, Einladungen, Abrechnung, Benachrichtigungskanäle, Audit-Log, Datenexport und die Token-Verwaltung selbst. Diese Routen antworten mit 403.

Basis-Adresse und Sprache

Alle Endpunkte liegen unter https://api.domainwarn.com/api/v1; die Daten einer Organisation unter /orgs/{organization}. Den Slug findest du in der Adresse des Dashboards, unter Einstellungen → API oder über GET /organizations, das mit einem Token genau die eine Organisation liefert.

Befunde (findings) sind übersetzt: mit dem Header Accept-Language: de oder en bestimmst du die Sprache, ohne Header ist sie Englisch. Alle Zeitpunkte sind ISO 8601 in UTC (Endung Z), IDs sind UUIDs.

Limits

  • 300 Anfragen je Minute und Token, unabhängig von der Dashboard-Sitzung des Erstellers. Die Header X-RateLimit-Limit und X-RateLimit-Remaining zeigen den Stand; bei Überschreitung antwortet der Server mit 429 und Retry-After in Sekunden.
  • Jetzt prüfen: 5 Aufrufe je Domain und Stunde, 60 je Organisation und Stunde.
  • Sammelimport: 200 Domains je Aufruf, 3 Aufrufe je Stunde und Organisation.
  • Das Domainlimit des Tarifs gilt auch für die API. Darüber hinaus angelegte Domains antworten mit 422; Domains über dem Limit eines kleineren Tarifs sind plan_paused.

Antworten und Fehler

Erfolgreiche Antworten tragen die Nutzdaten unter data; Listen zusätzlich links und meta. Anlegen antwortet mit 201, Löschen mit 204 ohne Inhalt, Prüfungen anstoßen mit 202. Jeder Fehler kommt als application/problem+json (RFC 9457) mit type, title, status und meist detail:

  • 401: Token fehlt, ist abgelaufen oder widerrufen.
  • 402: Die Organisation ist gesperrt oder hat keinen aktiven Tarif; plan und suspended sagen, warum.
  • 403: Das Token darf das nicht (Lese-Token bei schreibender Methode, gesperrter Bereich).
  • 404: Organisation oder Objekt nicht gefunden, auch bei einer fremden Organisation.
  • 422: Eingabe ungültig; errors enthält die Meldungen je Feld.
  • 429: Limit überschritten, siehe Retry-After.
JSON
{
  "type": "https://domainwarn.com/errors/validation",
  "title": "Die Eingabe ist ungültig.",
  "status": 422,
  "detail": "Der Name muss ausgefüllt sein.",
  "errors": { "name": ["Der Name muss ausgefüllt sein."] }
}

Paginierung

Domains und Kunden sind seitenweise paginiert: page und per_page als Parameter, meta.current_page, meta.last_page und meta.total in der Antwort. Incidents, Ereignisse und Prüfergebnisse sind nach Zeit sortiert und cursor-paginiert: die Antwort nennt in meta.next_cursor (bei Prüfergebnissen links.next) den Cursor der nächsten Seite, den du als Parameter cursor mitgibst; null heißt Ende.

HTTP
GET /orgs/meine-agentur/incidents?status=open&per_page=100
GET /orgs/meine-agentur/incidents?status=open&per_page=100&cursor=eyJzdGFydGVkX2F0Ijoi…

Beispiel: kritische Domains abfragen

Alle Domains mit kritischem Zustand, sortiert nach Zustand, als Grundlage für ein Ticket-System oder einen Slack-Bot:

Shell
curl -H "Authorization: Bearer $DOMAINWARN_TOKEN" -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains?status=critical,warning&sort=health_status"

Beispiel: Domain aus der CI anlegen und prüfen

Nach dem Go-live einer Kundenseite legt die Pipeline die Domain an und stößt sofort die erste Prüfung an. Die Antwort auf das Anlegen enthält die id für alle weiteren Aufrufe:

Shell
curl -X POST -H "Authorization: Bearer $DOMAINWARN_TOKEN" -H "Accept: application/json" \
  -H "Content-Type: application/json" -d '{"name":"kunde.de","customer_id":"3f9c1a52-6a2e-4c0e-9d4b-1c9a1a0e5b77"}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains"

curl -X POST -H "Authorization: Bearer $DOMAINWARN_TOKEN" -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/check-now"

Code-Beispiele für curl, PHP, Python, JavaScript, Go und PowerShell

Sprache bzw. Werkzeug und Anwendungsfall auswählen; <TOKEN> durch dein Token ersetzen. Anwendungsfälle mit Schreibzugriff sind markiert und brauchen ein Token mit Schreibrecht.

GET /domainsLese-Token genügt
curl
curl "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains?status=critical,warning&sort=health_status" \
  -H "Authorization: Bearer <TOKEN>" \
  -H "Accept: application/json"

„meine-agentur“ steht für den Slug deiner Organisation; im Dashboard unter Einstellungen → API stehen die Beispiele mit deiner Adresse.

Im Editor fragen (MCP)

DomainWarn ist selbst ein MCP-Server: POST /mcp spricht das Model Context Protocol, und Editoren und Assistenten binden es mit einer Adresse und dem Token ein – nichts zu installieren. Der Assistent beantwortet damit Fragen wie „Welche Kundendomains sind gerade kritisch?“ oder „Prüf kunde.de“ mit deinen echten Daten.

Neun Werkzeuge in drei Stufen: Ohne Token laufen die kostenlosen Prüfungen (check_domain, run_check), mit Token kommen list_domains, get_domain, list_incidents und get_dns_history dazu, und ein Token mit Schreibrecht schaltet add_domain, check_now und acknowledge_incident frei. Mit einem Lese-Token erscheinen die schreibenden Werkzeuge gar nicht erst.

Im Terminal ausführen; mit --scope user steht DomainWarn in allen Projekten bereit.

Claude Code
claude mcp add --transport http domainwarn https://api.domainwarn.com/api/v1/mcp \
  --header "Authorization: Bearer <TOKEN>"

Monitoring-Systeme anbinden

Prometheus, Grafana Alloy, VictoriaMetrics, Telegraf und Datadog lesen die Kennzahlen aller Domains im Prometheus-Format unter /orgs/{organization}/metrics; Checkmk, Nagios/Icinga, Uptime Kuma und PRTG fragen die JSON-Übersicht /orgs/{organization}/dashboard ab und schlagen an, sobald eine Domain kritisch ist. System auswählen und die fertige Konfiguration übernehmen:

Scrape-Job für die prometheus.yml; danach stehen alle Kennzahlen für Grafana und Alertmanager bereit. (Nutzt die Prometheus-Metriken)

prometheus.yml
scrape_configs:
  - job_name: domainwarn
    scheme: https
    metrics_path: /api/v1/orgs/meine-agentur/metrics
    scrape_interval: 60s
    static_configs: [{ targets: ['api.domainwarn.com'] }]
    authorization: { credentials: '<TOKEN>' }

„meine-agentur“ steht für den Slug deiner Organisation; im Dashboard unter Einstellungen → API stehen die Beispiele mit deiner Adresse.

OpenAPI-Spezifikation

Die vollständige Beschreibung aller Endpunkte, Parameter, Schemata und Fehler gibt es als OpenAPI 3.1 unter /openapi.json in der Sprache dieser Seite. Damit erzeugst du Clients (openapi-generator, orval, Kiota), importierst die API in Postman, Insomnia oder Bruno oder öffnest sie im Swagger Editor. Die Spezifikation wird aus derselben Quelle wie diese Seite gebaut und ändert sich mit jedem Release der API.

Endpunkte

Alle Pfade relativ zur Basis-Adresse https://api.domainwarn.com/api/v1. Der Platzhalter {organization} ist der Slug der Organisation, wie er in der Adresse des Dashboards steht.

read: mit jedem Token; write: nur mit Schreibrecht. Pflichtfelder sind mit * markiert.

Organisation

get/organizationsreadOrganisation des Tokens

Liefert genau die Organisation, für die das Token gilt, mit Slug, Tarif und der Rolle des Tokens. Praktisch, um den Slug für alle weiteren Aufrufe zu ermitteln.

Parameter

NameOrtTypBeschreibung

Antwort

200

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/organizations"
get/orgs/{organization}/mail-deliveriesreadE-Mail-Zustellungen je Empfänger

Jede E-Mail der Organisation (Alarme, Berichte, Einladungen, Status-Seiten-Mails) je Empfänger, neueste zuerst, cursor-paginiert, 90 Tage lang. meta.unreachable nennt Adressen, die nach drei Bounces in 30 Tagen oder einer Beschwerde keine Mails mehr bekommen; meta.stats zählt die Status im Zeitraum und nennt die Zustellquote (rate). Nicht für Kundenzugänge.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
statusquerystring (sent, failed, bounced, complained, suppressed)Nur Einträge mit diesem Status
daysqueryinteger · Standard 30Zeitraum in Tagen
cursorquerystringCursor der nächsten Seite aus meta.next_cursor der vorigen Antwort

Antwort

200 · { data: MailDelivery[], links, meta }

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/mail-deliveries"
post/orgs/{organization}/mail-deliveries/reactivatewriteUnerreichbare Adresse wieder freigeben

Hebt die Sperre einer als unerreichbar markierten Adresse auf; Bounces davor zählen nicht mehr. Steht im Sicherheitsprotokoll. 404, wenn die Adresse nicht gesperrt ist. Braucht das Recht, Einstellungen zu verwalten.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.

Anfrage (JSON)

FeldTypBeschreibung
emailstring (email)Die Adresse (oder recipient_hash)
recipient_hashstringKennung aus dem Zustellprotokoll (oder email)

Antwort

200

Beispiel

Shell
curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"email":"bereitschaft@agentur.de"}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/mail-deliveries/reactivate"

Übersicht

get/orgs/{organization}/dashboardreadÜbersicht

Zähler je Zustand, offene Incidents, Änderungen der letzten 24 Stunden, Auslastung des Tarifs und Verlauf der letzten 14 Tage. Die Antwort trägt einen ETag; mit If-None-Match antwortet der Server bei unverändertem Stand mit 304.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.

Antwort

200 · { data: Dashboard }

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/dashboard"
get/orgs/{organization}/usagereadAuslastung des Tarifs

Grenzen des wirksamen Tarifs und die aktuelle Nutzung: Domains, Monitore, Mitglieder, Kanäle und Prüfungen der letzten 24 Stunden.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.

Antwort

200 · { data: Usage }

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/usage"

Domains

get/orgs/{organization}/domainsreadDomains auflisten

Alle Domains der Organisation mit Zustand, Kunde und Anzahl offener Incidents, seitenweise. Monitore sind hier nicht enthalten, dafür den Einzelabruf nutzen.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
statusquerystringZustände, kommagetrennt: healthy, warning, critical, unknown
customerquerystring (uuid)Nur Domains dieses Kunden
cmsquerystringCMS-Schlüssel, kommagetrennt; none für erreichbar ohne bekanntes System, unknown für noch nicht erkannt
searchquerystringTeil des Domainnamens
sortquerystring (name, -name, health_status, -health_status, created_at, -created_at, last_checked_at, -last_checked_at) · Standard nameSortierung, Minus für absteigend
pagequeryinteger · Standard 1Seitennummer
per_pagequeryinteger · Standard 50Einträge je Seite (1 bis 200)

Antwort

200 · { data: Domain[], links, meta }

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains"
get/orgs/{organization}/domains/export.csvreadDomains als CSV

Dieselbe Liste wie beim Auflisten als CSV-Datei mit allen Zeilen statt Seiten (UTF-8 mit BOM, Content-Disposition: attachment). Spalten: domain, customer, health, cms, cms_version, registrar, domain_expires_at, certificate_target, certificate_valid_to, certificate_days_left, open_incidents, last_checked_at, paused, dashboard_url. Das Zertifikat ist das der Apex-Domain auf Port 443, sonst das des ersten aktiven Zertifikatsmonitors (certificate_target nennt es).

Limit: 30 Aufrufe je Stunde und Organisation

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
statusquerystringZustände, kommagetrennt: healthy, warning, critical, unknown
customerquerystring (uuid)Nur Domains dieses Kunden
cmsquerystringCMS-Schlüssel, kommagetrennt; none für erreichbar ohne bekanntes System, unknown für noch nicht erkannt
searchquerystringTeil des Domainnamens
sortquerystring (name, -name, health_status, -health_status, created_at, -created_at, last_checked_at, -last_checked_at) · Standard nameSortierung, Minus für absteigend
delimiterquerystring (comma, semicolon)Trennzeichen; ohne Angabe Semikolon bei Sprache de (Excel), sonst Komma

Antwort

200 · { data: csv } · CSV-Datei

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/export.csv"
get/orgs/{organization}/expirationsreadAbläufe auflisten

Was in den nächsten Tagen abläuft, nach Datum: Domainregistrierung (RDAP), Zertifikat (TLS-Check), Vertragsende und letzter Kündigungstermin (Vertragsende minus Kündigungsfrist) aus den Vertragsdaten, je Zeile mit Kunde, Zuständigem und Kosten. Überfälliges bleibt mit negativen Resttagen sichtbar. meta.totals summiert die Kosten je Jahr je Kunde und Währung über die Domains der Liste. Ein Kundenzugang sieht nur Domain- und Zertifikatsabläufe seiner Domains.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
daysqueryinteger · Standard 90Horizont in Kalendertagen ab heute
customerquerystring (uuid)Nur Domains dieses Kunden
kindquerystringArten, kommagetrennt: domain, certificate, contract_end, notice_deadline
action_requiredquerybooleanNur Zeilen mit Handlungsbedarf

Antwort

200

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/expirations"
get/orgs/{organization}/expirations/export.csvreadAbläufe als CSV

Dieselbe Liste wie beim Auflisten als CSV-Datei (UTF-8 mit BOM, Content-Disposition: attachment). Spalten: date, days_left, kind, domain, customer, target, provider, auto_renews, responsible, annual_cost, currency, cost_reference, action_required, dashboard_url.

Limit: 30 Aufrufe je Stunde und Organisation

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
daysqueryinteger · Standard 90Horizont in Kalendertagen ab heute
customerquerystring (uuid)Nur Domains dieses Kunden
kindquerystringArten, kommagetrennt: domain, certificate, contract_end, notice_deadline
action_requiredquerybooleanNur Zeilen mit Handlungsbedarf
delimiterquerystring (comma, semicolon)Trennzeichen; ohne Angabe Semikolon bei Sprache de (Excel), sonst Komma

Antwort

200 · { data: csv } · CSV-Datei

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/expirations/export.csv"
post/orgs/{organization}/domainswriteDomain anlegen

Legt die Domain mit den Standard-Monitoren an und startet die erste Prüfung. Das Domainlimit des Tarifs gilt; darüber antwortet der Server mit 422.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.

Anfrage (JSON)

FeldTypBeschreibung
name*stringDomain, Unicode oder Punycode; Subdomains und Schemata werden entfernt
customer_idstring | null (uuid)Kunde, dem die Domain zugeordnet wird
run_checksbooleanErste Prüfung sofort starten

Antwort

201 · { data: Domain }

Beispiel

Shell
curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"name":"kunde.de","customer_id":null}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains"
get/orgs/{organization}/domains/cmsreadErkannte Systeme

Welche CMS und Shopsysteme auf den Domains erkannt wurden, mit Anzahl; meta.none zählt erreichbare Domains ohne bekanntes System, meta.unknown noch nicht erkannte. Werte für den Filter cms der Domainliste.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.

Antwort

200

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/cms"
post/orgs/{organization}/domains/bulkwriteDomains gesammelt anlegen

Bis zu 200 Domains je Aufruf, als Liste oder als Text mit einer Domain je Zeile (Trennzeichen auch Komma, Semikolon, Leerzeichen; Zeilen mit # werden übersprungen). Ungültige oder doppelte Domains landen in meta.errors, die übrigen werden angelegt.

Limit: 3 Aufrufe je Stunde und Organisation

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.

Anfrage (JSON)

FeldTypBeschreibung
domainsarrayListe von Domains (alternativ zu text)
textstringDomains als Text (alternativ zu domains)
customer_idstring | null (uuid)Kunde für alle angelegten Domains

Antwort

201 · Angelegte Domains und Fehler je Eingabe

Beispiel

Shell
curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"text":"kunde-a.de\nkunde-b.de\nshop.kunde-c.com","customer_id":null}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/bulk"
post/orgs/{organization}/domains/bulk-actionswriteMassenaktion auf Domains

Eine Aktion auf bis zu 500 Domains der Organisation: pause (optional until), resume, assign_customer (customer_id oder null), set_areas (groups wie bei PATCH /domains/{domain}/monitoring), set_interval (type und interval_seconds, nicht unter der Untergrenze des Tarifs), check_now (höchstens 50 Domains, zählt in dieselben Limits wie „Jetzt prüfen“; Domains ohne freies Kontingent werden übersprungen) und delete (nur mit confirm: true, gibt Tarifplätze frei). Bis 100 Domains antwortet der Server mit 200 und dem Ergebnis je Domain, darüber mit 202 und der Massenaktion im Status queued; den Fortschritt liefert GET /domains/bulk-actions/{operation}. IDs fremder Organisationen oder unbekannte IDs stehen als übersprungen (not_found) ohne Namen im Ergebnis. Das Sicherheitsprotokoll erhält einen zusammenfassenden Eintrag.

Limit: 10 Aufrufe je Minute und Organisation

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.

Anfrage (JSON)

FeldTypBeschreibung
action*string (pause, resume, assign_customer, set_areas, set_interval, check_now, delete)Aktion
ids*arrayDomain-IDs (bei check_now höchstens 50)
untilstring | null (date-time)pause: bis zu diesem Zeitpunkt, ohne Angabe unbefristet
customer_idstring | null (uuid)assign_customer: Kunde der Organisation oder null (Zuordnung entfernen); Pflicht bei dieser Aktion
groupsobjectset_areas: Bereiche ein oder aus
typestringset_interval: Check-Typ (alle außer heartbeat)
interval_secondsintegerset_interval: Intervall in Sekunden
confirmbooleandelete: muss true sein

Antwort

200 · { data: DomainBulkOperation } · Ergebnis je Domain (status done); bei mehr als 100 Domains 202 mit status queued

Beispiel

Shell
curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"action":"set_areas","ids":["9a1c6d2e-4b7f-4e1a-9c3d-2f5e8a7b6c10","9a1c6d2e-4b7f-4e1a-9c3d-2f5e8a7b6c11"],"groups":{"mail":false}}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/bulk-actions"
get/orgs/{organization}/domains/bulk-actions/{operation}readFortschritt einer Massenaktion

Stand einer Massenaktion im Hintergrund: Zähler und das bisherige Ergebnis je Domain. Alle paar Sekunden abfragen, bis status done oder failed ist. Innenansicht der Agentur: Kundenzugänge sehen Massenaktionen nicht.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
operationpathstring (uuid)ID der Massenaktion aus der Antwort auf das Anstoßen

Antwort

200 · { data: DomainBulkOperation }

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/bulk-actions/<operation-id>"
post/orgs/{organization}/domains/import/zone-filewriteZonendatei auswerten

Liest eine BIND-Zonendatei und liefert die Website-Hostnamen (A, AAAA, CNAME) als Vorschau, je Eintrag mit dem Hinweis, ob er schon überwacht wird. Höchstens 200 je Aufruf, weitere Seiten über offset = next_offset. Legt nichts an: die bestätigte Auswahl geht an den Import.

Limit: 60 Aufrufe je Minute und Organisation

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.

Anfrage (JSON)

FeldTypBeschreibung
text*stringInhalt der Zonendatei
originstring | nullZone für Dateien ohne $ORIGIN (z. B. kunde.de); fehlt sie bei relativen Namen, antwortet der Server mit 422
offsetinteger | nullErster Eintrag der Seite (aus next_offset)

Antwort

200

Beispiel

Shell
curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"text":"$ORIGIN kunde.de.\n@ IN A 203.0.113.10\nwww IN CNAME kunde.de.\nshop IN A 203.0.113.11"}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/import/zone-file"
post/orgs/{organization}/domains/import/commitwriteImport bestätigen

Legt die bestätigte Liste aus einer Zonendatei im Hintergrund an, bis zu 5000 Domains je Import. Die Antwort (202) ist der Import mit seiner ID; den Fortschritt liefert GET /domains/import/{import}, bis status done oder failed ist. Anders als beim gesammelten Anlegen starten die Monitore zu ihrem regulären Zeitpunkt statt sofort. Ist das Domainlimit des Tarifs erreicht, gelten die restlichen Namen mit demselben Grund als abgelehnt.

Limit: 10 Imports je Stunde und Organisation

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.

Anfrage (JSON)

FeldTypBeschreibung
domains*arrayBestätigte Domains oder Hostnamen
customer_idstring | null (uuid)Kunde für alle angelegten Domains

Antwort

202 · { data: DomainImport } · Der angelegte Import (status queued)

Beispiel

Shell
curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"domains":["kunde.de","shop.kunde.de"],"customer_id":null}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/import/commit"
get/orgs/{organization}/domains/import/{import}readImport-Fortschritt abrufen

Stand eines Imports: Zähler je Block, nach dem Ende die Liste der abgelehnten oder übersprungenen Namen mit Grund. Alle paar Sekunden abfragen, bis status done oder failed ist. Innenansicht der Agentur: Kundenzugänge sehen Imports nicht.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
importpathstring (uuid)ID des Imports aus der Antwort auf das Bestätigen

Antwort

200 · { data: DomainImport }

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/import/<import-id>"
get/orgs/{organization}/domains/{domain}readDomain abrufen

Eine Domain mit allen Monitoren, deren letzten Befunden und der Anzahl offener Incidents.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Antwort

200 · { data: Domain }

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>"
patch/orgs/{organization}/domains/{domain}writeDomain ändern

Kunde zuordnen, Überwachung ein- oder ausschalten oder Benachrichtigungsregeln nur für diese Domain setzen. Nur mitgesendete Felder ändern sich.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Anfrage (JSON)

FeldTypBeschreibung
customer_idstring | null (uuid)Kunde oder null zum Lösen
is_activebooleanfalse pausiert die Überwachung dauerhaft, true nimmt sie wieder auf
notification_overridesobject | nullAbweichende Benachrichtigungsregeln

Antwort

200 · { data: Domain }

Beispiel

Shell
curl -X PATCH \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"customer_id":"3f9c1a52-6a2e-4c0e-9d4b-1c9a1a0e5b77","notification_overrides":{"min_severity":"critical"}}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>"
delete/orgs/{organization}/domains/{domain}writeDomain löschen

Entfernt die Domain mit Monitoren, Ergebnissen, Incidents und Ereignissen endgültig.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Antwort

204

Beispiel

Shell
curl -X DELETE \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>"
get/orgs/{organization}/domains/{domain}/contractreadVertrag und Kosten abrufen

Vertrags- und Kostendaten der Domain: Registrar, Hosting-Anbieter, Vertragsende, Kündigungsfrist, automatische Verlängerung, Kosten je Jahr, Kostenstelle, zuständiges Mitglied, Notiz. Ohne gespeicherten Vertrag kommen leere Felder mit exists: false und dem vom Domain-Check erkannten Registrar als Vorschlag. Innenansicht der Agentur: Kundenzugänge erreichen die Route nicht.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Antwort

200 · { data: DomainContract }

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/contract"
put/orgs/{organization}/domains/{domain}/contractwriteVertrag und Kosten setzen

Ersetzt den ganzen Vertrag: weggelassene Felder werden leer, ein Aufruf ohne Felder löscht den Vertrag. Der letzte Kündigungstermin ist Vertragsende minus Frist; 30 und 7 Tage davor (und ohne automatische Verlängerung vor dem Vertragsende) erinnert DomainWarn über die Benachrichtigungsregeln der Organisation, beide Termine stehen im Kalender-Abo.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Anfrage (JSON)

FeldTypBeschreibung
registrarstring | nullRegistrar (Freitext)
hosting_providerstring | nullHosting-Anbieter
ends_atstring | null (date)Vertragsende als YYYY-MM-DD
notice_period_daysinteger | nullKündigungsfrist in Tagen
auto_renewsbooleanVerlängert sich automatisch
annual_costnumber | nullKosten je Jahr
currencystringWährung (ISO 4217)
cost_referencestring | nullKostenstelle oder Referenz
responsible_user_idstring | null (uuid)Mitglied der Organisation (kein Kundenzugang)
notesstring | nullNotiz

Antwort

200 · { data: DomainContract }

Beispiel

Shell
curl -X PUT \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"registrar":"IONOS SE","hosting_provider":"Hetzner","ends_at":"2026-12-31","notice_period_days":90,"auto_renews":false,"annual_cost":119.5,"currency":"EUR","cost_reference":"KST-4711","responsible_user_id":"3f9c1a52-6a2e-4c0e-9d4b-1c9a1a0e5b77"}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/contract"
post/orgs/{organization}/domains/{domain}/pausewriteDomain pausieren

Setzt die Überwachung bis zu einem Zeitpunkt aus, etwa während eines Umzugs. Ohne until wird die Pause aufgehoben. Offene Incidents bleiben bestehen.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Anfrage (JSON)

FeldTypBeschreibung
untilstring | null (date-time)Ende der Pause, in der Zukunft; null hebt die Pause auf

Antwort

200 · { data: Domain }

Beispiel

Shell
curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"until":"2026-10-01T06:00:00Z"}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/pause"
post/orgs/{organization}/domains/{domain}/movewriteDomain in andere Organisation verschieben

Hängt die Domain mit Monitoren, Ergebnissen, Verlauf, Incidents und Zertifikaten in eine andere Organisation um, in der der Aufrufer Schreibrecht hat. Kundenzuordnung, domainbezogene Regeln und Wartungsfenster bleiben zurück; danach gelten Tarif und Intervalle des Ziels (über dem Limit wird die Domain dort pausiert). 409 domain-exists, wenn das Ziel die Domain bereits überwacht.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Anfrage (JSON)

FeldTypBeschreibung
organization*stringSlug der Zielorganisation

Antwort

200

Beispiel

Shell
curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"organization":"zweite-agentur"}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/move"
patch/orgs/{organization}/domains/{domain}/monitoringwriteÜberwachungsbereiche schalten

Schaltet die Bereiche Website (web: http, tls, ct_log, redirects, ipv6), Mail (mail: mx, spf, dkim, dmarc, mta_sts, tls_rpt, bimi, reverse_dns, smtp, dane, autodiscover) und DNS (dns: dns, dnssec, domain, blacklist, caa, nameservers) ein oder aus. Ausgeschaltete Bereiche schließen ihre offenen Incidents.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Anfrage (JSON)

FeldTypBeschreibung
groups*objectBereiche mit gewünschtem Zustand; nicht genannte bleiben unverändert

Antwort

200 · { data: Domain }

Beispiel

Shell
curl -X PATCH \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"groups":{"mail":false}}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/monitoring"
post/orgs/{organization}/domains/{domain}/detect-cmswriteSystem neu erkennen

Reiht die Erkennung von CMS und Shopsystem für die Domain ein; das Ergebnis erscheint in cms der Domain.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Antwort

202 · Erkennung eingereiht

Beispiel

Shell
curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/detect-cms"
post/orgs/{organization}/domains/{domain}/check-nowwriteJetzt prüfen

Stellt alle aktiven Monitore der Domain sofort in die Warteschlange, z. B. nach einem Deploy oder einer DNS-Änderung. Ergebnisse erscheinen wenige Sekunden später in den Monitoren.

Limit: 5 je Domain und Stunde, 60 je Organisation und Stunde

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Antwort

202 · Prüfungen eingereiht

Beispiel

Shell
curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/check-now"
get/orgs/{organization}/domains/{domain}/site-insightsreadInnensicht der Website

Was eine Erweiterung im System selbst meldet (Shopware, WordPress): genaue Version, PHP, installierte Erweiterungen mit verfügbarem Update, Mailversand, Wartungsmodus – dazu die Bewertung. Von außen ist davon nichts sichtbar. null, solange nichts gemeldet wurde.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Antwort

200

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/site-insights"
get/orgs/{organization}/plugin-installationsreadErweiterungen und ihr Meldestand

Alle Installationen des WordPress-Plugins und der Shopware-Erweiterung über die Domains der Organisation: Plattform und Version, Version der Erweiterung, letzte Meldung und deren Stand (current bis zwei Stunden, late bis ein Tag, stale älter) sowie der Heartbeat, den die Erweiterung für ihren geplanten Lauf angelegt hat. Meldet eine Installation an zwei Domains, steht sie zweimal da.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.

Antwort

200

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/plugin-installations"
post/orgs/{organization}/domains/{domain}/site-insightswriteInnensicht melden

Die Erweiterung im System meldet nur Tatsachen; bewertet wird in DomainWarn, damit sich das Urteil ändern kann, ohne dass jemand an der Website etwas aktualisiert. Je Domain wird die letzte Meldung behalten.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Anfrage (JSON)

FeldTypBeschreibung
platform*string (shopware, wordpress)System
platform_versionstring | nullVersion des Systems
php_versionstring | nullPHP-Version
maintenancebooleanWartungsmodus aktiv
extensionsarrayInstallierte Erweiterungen; latest_version ist die Version, die das System als Update kennt
mailerobjectMailversand der Website
channelsarrayVerkaufskanäle (Shopware) bzw. Seiten eines Netzwerks (WordPress)
agentstring | nullMeldende Erweiterung
agent_versionstring | nullVersion der Erweiterung

Antwort

200

Beispiel

Shell
curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"platform":"shopware","platform_version":"6.7.3.1","php_version":"8.3.26","maintenance":false,"extensions":[{"name":"SwagPayPal","version":"9.0.0","latest_version":"9.1.0","active":true}],"mailer":{"transport":"smtp","host":"smtp.hoster.de","sender":"shop@kunde.de"},"agent":"shopware","agent_version":"1.2.0"}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/site-insights"
get/orgs/{organization}/domains/{domain}/mta-stsreadMTA-STS-Policy der Domain

Einstellung und die beiden Records, die der Kunde setzen muss (CNAME auf die Website, TXT mit der Kennung). Liefert DomainWarn die Policy aus, steht sie als Text dabei.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Antwort

200

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/mta-sts"
patch/orgs/{organization}/domains/{domain}/mta-stswriteMTA-STS bei DomainWarn hosten

Die Policy-Datei muss unter https://mta-sts.<domain>/.well-known/mta-sts.txt mit gültigem Zertifikat liegen; DomainWarn liefert sie aus. Jede Änderung vergibt eine neue Kennung – der TXT-Record muss nachgezogen werden (über eine Integration per Klick oder automatisch, siehe hosting-dns). Ohne bekannte MX-Hosts wird bewusst nichts ausgeliefert.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Anfrage (JSON)

FeldTypBeschreibung
hosted*booleanPolicy von DomainWarn ausliefern lassen
modestring (testing, enforce)testing meldet Fehler nur, enforce lässt sendende Server abbrechen
max_ageintegerLaufzeit in Sekunden
mxarrayMX-Hosts der Policy; leer = die aufgelösten MX-Records der Domain

Antwort

200

Beispiel

Shell
curl -X PATCH \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"hosted":true,"mode":"enforce","max_age":604800}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/mta-sts"
get/orgs/{organization}/domains/{domain}/bimireadBIMI-Logo der Domain

Ob DomainWarn ein BIMI-Logo für die Domain ausliefert, unter welcher Adresse, und der TXT-Record default._bimi.<domain>, den der Kunde setzen muss.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Antwort

200

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/bimi"
post/orgs/{organization}/domains/{domain}/bimi/previewwriteBIMI-Logo umwandeln (Vorschau)

Wandelt ein SVG in SVG Tiny PS um, ohne etwas zu speichern: Profil, title-Element (Name des Kunden, sonst die Domain), quadratische viewBox, CSS als Attribute, ohne Skripte, Animationen, Editor-Daten und externe Verweise. Die Antwort enthält das Ergebnis (svg, preview als data-URL, size) und changes: je Änderung code, params, message in der Sprache der Anfrage und severity (warning, wenn sich das Aussehen ändern kann). Dasselbe SVG an updateBimi gespeichert ergibt genau dieses Ergebnis. Rasterbilder lassen sich nicht umwandeln: 422. Höchstens 30 Umwandlungen je Minute und Organisation, Vorschau und Hochladen zusammen (429).

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Anfrage (JSON)

FeldTypBeschreibung
svg*stringDas Logo als SVG-Text, bis 512 KB

Antwort

200

Beispiel

Shell
curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"200\" height=\"100\"><circle cx=\"100\" cy=\"50\" r=\"40\" fill=\"#0a7\"/></svg>"}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/bimi/preview"
post/orgs/{organization}/domains/{domain}/bimiwriteBIMI-Logo bei DomainWarn hosten

Lädt das Logo hoch oder tauscht es aus. DomainWarn wandelt es in SVG Tiny PS um (wie previewBimi) und speichert das Ergebnis; changes in der Antwort nennt, was geändert wurde. Ein Logo, das schon Tiny PS ist, bleibt unverändert. Was sich nicht umwandeln lässt (Rasterbilder, Entities, kein SVG, über 512 KB oder umgewandelt über 32 KB), lehnt die API mit 422 und allen Gründen ab. Die Adresse behält beim Austausch ihr Token, nur die Version im Dateinamen ändert sich.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Anfrage (JSON)

FeldTypBeschreibung
svg*stringDas Logo als SVG-Text, bis 512 KB

Antwort

200

Beispiel

Shell
curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.2\" baseProfile=\"tiny-ps\" viewBox=\"0 0 100 100\"><title>Kunde GmbH</title><circle cx=\"50\" cy=\"50\" r=\"40\" fill=\"#0a7\"/></svg>"}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/bimi"
delete/orgs/{organization}/domains/{domain}/bimiwriteBIMI-Logo entfernen

Die Adresse des Logos antwortet ab sofort mit 404. Ein späterer Upload bekommt eine neue Adresse.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Antwort

200

Beispiel

Shell
curl -X DELETE \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/bimi"
get/orgs/{organization}/domains/{domain}/pagespeedreadPageSpeed-Verlauf

Punktzahl (0–100) und Kernmetriken je wöchentlicher Messung für mobil und desktop (points, beide Strategien eines Laufs tragen denselben Zeitpunkt t), dazu je Strategie die letzte und die vorletzte Messung (latest, previous) für den Trend. Metriken: lcp_ms, fcp_ms, tbt_ms, cls, speed_index_ms aus dem Labor, field mit overall, lcp_ms, inp_ms und cls echter Nutzer (Chrome UX Report) oder null. Bewertet wird die Strategie monitor.rated_strategy (Vorgabe mobil). Ohne PageSpeed-Monitor ist monitor null und der Verlauf leer.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain
monthsqueryintegerZeitraum in Monaten (Vorgabe 12; der Verlauf bleibt 13 Monate gespeichert)
monitorquerystring (uuid)Bestimmter PageSpeed-Monitor der Domain (Vorgabe: der erste eingeschaltete)

Antwort

200

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/pagespeed"
get/orgs/{organization}/domains/{domain}/security-txtreadsecurity.txt der Domain

Ob DomainWarn eine security.txt (RFC 9116) für die Domain ausliefert, die gepflegten Angaben, die erzeugte Datei (content) und die Adresse (url), auf die der Kunde /.well-known/security.txt weiterleitet.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Antwort

200

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/security-txt"
patch/orgs/{organization}/domains/{domain}/security-txtwritesecurity.txt bei DomainWarn hosten

Speichert die Angaben und schaltet die Auslieferung. Nur mitgeschickte Felder ändern sich, null leert ein optionales Feld. Canonical (die Adresse beim Kunden) und Expires (Tagesbeginn plus 180 Tage, bei jedem Abruf neu) erzeugt DomainWarn. Werte mit Zeilenumbrüchen oder Steuerzeichen lehnt die API mit 422 ab. Die Adresse behält ihr Token über alle Änderungen, auch beim Aus- und Einschalten.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Anfrage (JSON)

FeldTypBeschreibung
enabled*booleanDatei ausliefern
contactsarray1 bis 10 Kontakte: mailto:, tel: (ohne Leerzeichen) oder https://; beim ersten Speichern Pflicht
encryptionstring | nullHTTPS-Adresse des OpenPGP-Schlüssels
policystring | nullHTTPS-Adresse der Melderichtlinie
acknowledgmentsstring | nullHTTPS-Adresse der Danksagungen
hiringstring | nullHTTPS-Adresse der Stellenangebote
preferred_languagesarray | nullSprachkürzel nach RFC 5646, höchstens 10

Antwort

200

Beispiel

Shell
curl -X PATCH \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"enabled":true,"contacts":["mailto:security@kunde.de","https://kunde.de/sicherheit"],"policy":"https://kunde.de/disclosure","preferred_languages":["de","en"]}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/security-txt"
get/orgs/{organization}/domains/{domain}/hosted-spfreadSPF-Flattening der Domain

Stand des gehosteten SPF-Flattenings: die Quelle (source_record), die aufgelösten Netze (networks), die TXT-Records unter _spf.<domain> (bei langen Ergebnissen geteilt in _spf1, _spf2 …, records), der SPF-Record, den der Kunde an der Domain setzt (pointer), DNS-Lookups vorher und nachher, Hinweise, Fehler der letzten Auflösung und der Verlauf der Änderungen. published und pointer_active kommen frisch aus dem DNS. Ausgeschaltet (enabled: false) eine Vorschau aus dem SPF-Record der Domain, error sagt dann, warum sie sich nicht abflachen lässt (Makros, exists, ptr, Schleifen, Grenzen). Nicht für Kundenzugänge.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Antwort

200

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/hosted-spf"
put/orgs/{organization}/domains/{domain}/hosted-spfwriteSPF-Flattening einschalten

Schaltet das Flattening ein oder ändert die Quelle. Ohne source nimmt DomainWarn den SPF-Record der Domain (steht dort schon der Verweis auf _spf.<domain>, die bisherige Quelle). Lässt er sich nicht abflachen, 422 mit der Erklärung. Die Records beim DNS-Anbieter legt applyHostingDns mit der Funktion spf an: erst die Teile, zuletzt den Verweis an der Domain – den SPF-Record des Kunden ersetzt DomainWarn nur mit replace: true. Ab Freelancer (Tariffeature hosted_spf, sonst 402).

Limit: 20 je Minute

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Anfrage (JSON)

FeldTypBeschreibung
sourcestring | nullSPF-Record, den DomainWarn abflacht (beginnt mit v=spf1); ohne Angabe der Record der Domain

Antwort

200

Beispiel

Shell
curl -X PUT \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"source":"v=spf1 include:_spf.google.com include:spf.protection.outlook.com include:servers.mcsv.net -all"}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/hosted-spf"
delete/orgs/{organization}/domains/{domain}/hosted-spfwriteSPF-Flattening ausschalten

DomainWarn zieht die Records danach nicht mehr nach. Solange der SPF-Record der Domain noch _spf.<domain> einbindet, 422 – erst den ursprünglichen Record wieder eintragen, sonst blieben die Netze eingefroren. Die Records unter _spf.<domain> bleiben stehen.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Antwort

204 · Ausgeschaltet

Beispiel

Shell
curl -X DELETE \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/hosted-spf"
post/orgs/{organization}/domains/{domain}/hosted-spf/syncwriteSPF-Flattening sofort neu auflösen

Löst sofort neu auf (sonst täglich und nach jeder SPF-Prüfung). meta.result: changed (neue Netze – mit eingeschaltetem Nachziehen stellt DomainWarn die Records um, sonst gibt es die Warnung „Abgeflachter SPF-Record veraltet“), unchanged oder failed (Grund in data.error, die veröffentlichten Netze bleiben). 422, wenn das Flattening aus ist.

Limit: 6 je 10 Minuten und Domain

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Antwort

200

Beispiel

Shell
curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/hosted-spf/sync"
get/orgs/{organization}/domains/{domain}/hostingreadGehostete Funktionen auf einen Blick

Stand von security.txt, MTA-STS und BIMI in einer Antwort, gedacht für Erweiterungen auf der Website (WordPress, Shopware): je Funktion enabled, state (wie im Dashboard: off, pending, active, missing, outdated, elsewhere, unreachable, noMx), die Seite im Dashboard (dashboard_url), bei security.txt das Ziel der Weiterleitung (url, nur solange ausgeliefert wird) und die Hostnamen, die weiterleiten sollen (hosts), bei MTA-STS und BIMI die Records zum Abschreiben (records). Nicht für Kundenzugänge.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Antwort

200

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/hosting"
get/orgs/{organization}/domains/{domain}/mail-reportsreadDMARC- und TLS-RPT-Berichte

Kennzahlen der eingegangenen Berichte: Nachrichten, ausgerichtet, Quellen je IP mit DKIM- und SPF-Ergebnis, TLS-Sitzungen und Fehlschläge. Die Berichtsadresse der Domain steht in der Antwort.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain
daysqueryinteger · Standard 30Zeitraum in Tagen (1 bis 90, Vorgabe 30)

Antwort

200

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/mail-reports"
post/orgs/{organization}/domains/{domain}/mail-reportswriteBericht hochladen

Für Domains ohne Postfach: ein DMARC-Aggregatbericht (XML, gzip, ZIP oder die ganze Mail) oder ein TLS-RPT-Bericht (JSON). Doppelte Berichte werden erkannt.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Anfrage (JSON)

FeldTypBeschreibung
contentstringBericht als Text (XML, JSON oder Mail)
content_base64stringBericht als Base64 (gzip, ZIP)
filenamestringDateiname, hilft bei der Zuordnung

Antwort

200

Beispiel

Shell
curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"content":"<?xml version=\"1.0\"?><feedback>…</feedback>","filename":"google.com!kunde.de!1!2.xml"}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/mail-reports"
get/orgs/{organization}/domains/{domain}/dmarc-assistantreadDMARC-Assistent

Wertet die DMARC-Berichte im Zeitfenster aus (Nachrichten, Quote legitimer Nachrichten, Quellen je IP mit Einordnung aligned, partial, unaligned oder unauthenticated, Tage mit Daten) und empfiehlt den nächsten Schritt von p=none über quarantine zu reject (mit pct-Rampe 25/50/100, wenn der Record pct nutzt; ein schwächeres sp wandert mit). recommendation.status: not_checked, no_record, invalid_record, no_reports, collecting, blocked, ready oder done; checks nennt jede Voraussetzung (Tage mit Berichten seit der aktuellen Policy, Mindestzahl an Nachrichten, 98 % bestanden, kein nennenswerter legitim wirkender Absender, der durchfällt). proposed ist der Record nach dem Schritt, alle anderen Tags bleiben. meta mit Integrationen nur für das Team der Agentur.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain
daysqueryintegerZeitfenster in Tagen (Vorgabe 30)

Antwort

200

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/dmarc-assistant"

Monitore

get/orgs/{organization}/domains/{domain}/suggestionsreadHostnamen-Vorschläge

Hostnamen unter der Domain, die in Certificate-Transparency-Logs auftauchen, aber noch nicht überwacht werden. Standardmäßig nur offene; mit all=1 auch angenommene und verworfene, seitenweise zu 200.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain
allqueryboolean · Standard falseAuch entschiedene Vorschläge
pagequeryinteger · Standard 1Seitennummer

Antwort

200

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/suggestions"
post/orgs/{organization}/suggestions/{suggestion}/acceptwriteVorschlag annehmen

Legt einen Website-Monitor auf den Hostnamen an und markiert den Vorschlag als angenommen. 422, wenn der Hostname nicht zur Domain gehört oder das Limit an Hostnamen je Domain erreicht ist.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
suggestionpathstring (uuid)ID des Hostnamen-Vorschlags

Antwort

200 · Angenommen

Beispiel

Shell
curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/suggestions/<suggestion-id>/accept"
post/orgs/{organization}/suggestions/{suggestion}/dismisswriteVorschlag verwerfen

Markiert den Vorschlag als verworfen; der Hostname wird nicht erneut vorgeschlagen.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
suggestionpathstring (uuid)ID des Hostnamen-Vorschlags

Antwort

200 · { data: HostnameSuggestion } · Verworfen

Beispiel

Shell
curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/suggestions/<suggestion-id>/dismiss"
get/orgs/{organization}/domains/{domain}/monitorsreadMonitore einer Domain

Alle Monitore der Domain mit Zustand, letzten Befunden und Rohdaten, sortiert nach Prüfart und Ziel.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Antwort

200

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/monitors"
post/orgs/{organization}/domains/{domain}/monitorswriteMonitor anlegen

Zusätzlicher Monitor, etwa eine weitere URL oder ein Mailserver-Zertifikat. Ziele müssen zur Domain gehören; nur bei tls ist jeder öffentliche Hostname erlaubt. Das Intervall wird auf das Minimum des Tarifs begrenzt.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Anfrage (JSON)

FeldTypBeschreibung
type*string (http, tls, dns, mx, spf, dmarc, domain, dkim, dnssec, mta_sts, blacklist, tls_rpt, bimi, smtp, reverse_dns, ct_log, redirects, caa, nameservers, ipv6, dane, cms, privacy, pagespeed, heartbeat, security_txt, ports, lookalike, crawl, journey)Prüfart
target*stringURL (http) oder Hostname; ohne Schema wird https:// ergänzt
interval_secondsintegerPrüfintervall in Sekunden
configobjectNur bei tls: Port und STARTTLS-Protokoll

Antwort

201 · { data: Monitor }

Beispiel

Shell
curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"type":"tls","target":"mail.kunde.de","config":{"port":587,"starttls":"smtp"}}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/monitors"
patch/orgs/{organization}/monitors/{monitor}writeMonitor ändern

Intervall, Aktivierung und Konfiguration je Prüfart: expected_status und slow_ms (http), selectors (dkim). Ein deaktivierter Monitor schließt seine offenen Incidents.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
monitorpathstring (uuid)ID des Monitors

Anfrage (JSON)

FeldTypBeschreibung
interval_secondsintegerPrüfintervall in Sekunden
is_enabledbooleanAktiv
configobjectErwartete HTTP-Status, Schwelle für „langsam“ in ms (http) oder DKIM-Selektoren (dkim)

Antwort

200 · { data: Monitor }

Beispiel

Shell
curl -X PATCH \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"config":{"expected_status":[200,301],"slow_ms":2000}}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/monitors/<monitor-id>"
delete/orgs/{organization}/monitors/{monitor}writeMonitor löschen

Entfernt den Monitor und schließt seine offenen Incidents.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
monitorpathstring (uuid)ID des Monitors

Antwort

204

Beispiel

Shell
curl -X DELETE \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/monitors/<monitor-id>"
get/orgs/{organization}/domains/{domain}/journeysreadKlickwege einer Domain

Klickwege (Transaktionsprüfungen) der Domain: ein echter Browser lädt die Startadresse und arbeitet die Schritte ab (Produkt in den Warenkorb, zur Kasse, Login). Alle 15 Minuten; ein Fehlschlag wird durch einen zweiten Lauf bestätigt, erst dann entsteht der Incident journey_failed. Ab Tarif Agency (einer je Domain, Agency Pro drei).

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Antwort

200

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/journeys"
post/orgs/{organization}/domains/{domain}/journeyswriteKlickweg anlegen

Name, Startadresse (muss zur Domain gehören) und Schritte. Werte von fill-Schritten werden verschlüsselt gespeichert und nie zurückgegeben. Ohne das Tariffeature journeys antwortet die API mit 402, über dem Limit je Domain mit 422.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Anfrage (JSON)

FeldTypBeschreibung
name*stringName, je Domain eindeutig
start_url*stringStartadresse; ohne Schema wird https:// ergänzt
steps*arraySchritte in Reihenfolge (1 bis 30)
slow_msintegerSchwelle für „langsam“ in ms (Vorgabe 20000)
interval_secondsintegerPrüfintervall in Sekunden (vom Tarif begrenzt)

Antwort

201 · { data: Journey }

Beispiel

Shell
curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"name":"Warenkorb bis Kasse","start_url":"https://shop.kunde.de/","steps":[{"type":"click","selector":".product-box a.product-name"},{"type":"click","selector":".btn-buy"},{"type":"expect_text","text":"Warenkorb"},{"type":"goto","url":"/checkout/cart"},{"type":"expect_url","contains":"/checkout"}]}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/journeys"
post/orgs/{organization}/domains/{domain}/journeys/testwriteKlickweg testen

Führt Startadresse und Schritte sofort im Browser aus, ohne etwas zu speichern (Budget 60 s), und liefert den Ausgang je Schritt; mit journey übernimmt ein fill-Schritt mit keep_value den gespeicherten Wert dieses Klickwegs. Höchstens 20 Testläufe je Domain und 60 je Organisation pro Stunde (429).

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Anfrage (JSON)

FeldTypBeschreibung
start_url*stringStartadresse
steps*arraySchritte
journeystring (uuid)Gespeicherter Klickweg, dessen fill-Werte für keep_value gelten
slow_msintegerSchwelle für „langsam“ in ms

Antwort

200

Beispiel

Shell
curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"start_url":"https://shop.kunde.de/","steps":[{"type":"click","text":"In den Warenkorb"},{"type":"expect_text","text":"Warenkorb"}]}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/journeys/test"
get/orgs/{organization}/journeys/{journey}readKlickweg abrufen

Ein Klickweg mit Schritten (ohne fill-Werte), letztem Ergebnis je Schritt und den letzten Läufen.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
journeypathstring (uuid)ID des Klickwegs (zugleich die ID seines Monitors vom Typ journey)

Antwort

200 · { data: Journey }

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/journeys/<journey-id>"
patch/orgs/{organization}/journeys/{journey}writeKlickweg ändern

Name, Startadresse, Schritte, Schwelle, Intervall und Aktivierung. Neue Schritte setzen die Fehlerserie zurück; ein fill-Schritt mit keep_value behält den gespeicherten Wert (gleicher Index und Selektor). Ein deaktivierter Klickweg schließt seine offenen Incidents.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
journeypathstring (uuid)ID des Klickwegs (zugleich die ID seines Monitors vom Typ journey)

Anfrage (JSON)

FeldTypBeschreibung
namestringName
start_urlstringStartadresse
stepsarraySchritte
slow_msintegerSchwelle für „langsam“ in ms
interval_secondsintegerPrüfintervall in Sekunden
is_enabledbooleanAktiv

Antwort

200 · { data: Journey }

Beispiel

Shell
curl -X PATCH \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"is_enabled":false}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/journeys/<journey-id>"
delete/orgs/{organization}/journeys/{journey}writeKlickweg löschen

Entfernt den Klickweg und schließt seine offenen Incidents.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
journeypathstring (uuid)ID des Klickwegs (zugleich die ID seines Monitors vom Typ journey)

Antwort

204

Beispiel

Shell
curl -X DELETE \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/journeys/<journey-id>"
get/orgs/{organization}/maintenance-windowsreadWartungsfenster auflisten

Alle Wartungsfenster der Organisation, aktive zuerst; mit domain nur die, die diese Domain betreffen (eigene, die ihres Kunden und die der ganzen Organisation).

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainquerystring (uuid)Nur Fenster, die diese Domain betreffen

Antwort

200

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/maintenance-windows"
post/orgs/{organization}/maintenance-windowswriteWartungsfenster anlegen

Einmalig (starts_at, ends_at) oder wöchentlich (weekdays, time_from, time_to in timezone). Mit domain_id gilt es für eine Domain, mit customer_id für alle Domains des Kunden, ohne beides für die ganze Organisation. Während des Fensters entstehen keine Incidents und Meldungen.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.

Anfrage (JSON)

FeldTypBeschreibung
name*stringBezeichnung
kind*string (once, weekly)Einmalig oder wöchentlich
customer_idstring | null (uuid)Kunde, dessen Domains betroffen sind
domain_idstring | null (uuid)Einzelne Domain (setzt customer_id zurück)
starts_atstring | null (date-time)Beginn, einmalig (Pflicht bei once)
ends_atstring | null (date-time)Ende, einmalig, nach dem Beginn (Pflicht bei once)
weekdaysarray | nullWochentage 1 (Montag) bis 7 (Sonntag) (Pflicht bei weekly)
time_fromstring | nullBeginn HH:MM (Pflicht bei weekly)
time_tostring | nullEnde HH:MM, ungleich Beginn; vor dem Beginn reicht das Fenster über Mitternacht (Pflicht bei weekly)
timezonestringZeitzone für Wochentage und Uhrzeiten
is_enabledbooleanAktiv

Antwort

201 · { data: MaintenanceWindow }

Beispiel

Shell
curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"name":"Nächtliches Deploy","kind":"weekly","customer_id":"3f9c1a52-6a2e-4c0e-9d4b-1c9a1a0e5b77","weekdays":[2,4],"time_from":"02:00","time_to":"03:00","timezone":"Europe/Berlin"}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/maintenance-windows"
patch/orgs/{organization}/maintenance-windows/{window}writeWartungsfenster ändern

Dieselben Felder wie beim Anlegen, alle optional; nur mitgesendete Felder ändern sich. Die Regeln je Art gelten für den Stand nach der Änderung.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
windowpathstring (uuid)ID des Wartungsfensters

Anfrage (JSON)

FeldTypBeschreibung
namestringBezeichnung
kindstring (once, weekly)Einmalig oder wöchentlich
customer_idstring | null (uuid)Kunde oder null
domain_idstring | null (uuid)Domain oder null
starts_atstring | null (date-time)Beginn, einmalig
ends_atstring | null (date-time)Ende, einmalig
weekdaysarray | nullWochentage 1 bis 7
time_fromstring | nullBeginn HH:MM
time_tostring | nullEnde HH:MM
timezonestringZeitzone
is_enabledbooleanAktiv

Antwort

200 · { data: MaintenanceWindow }

Beispiel

Shell
curl -X PATCH \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"is_enabled":false}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/maintenance-windows/<window-id>"
delete/orgs/{organization}/maintenance-windows/{window}writeWartungsfenster löschen

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
windowpathstring (uuid)ID des Wartungsfensters

Antwort

204

Beispiel

Shell
curl -X DELETE \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/maintenance-windows/<window-id>"
get/orgs/{organization}/monitors/{monitor}/resultsreadPrüfergebnisse

Einzelne Prüfungen eines Monitors, neueste zuerst, cursor-paginiert. Der Cursor der nächsten Seite steht in links.next.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
monitorpathstring (uuid)ID des Monitors
fromquerystring (date-time)Nur Prüfungen ab diesem Zeitpunkt
toquerystring (date-time)Nur Prüfungen bis zu diesem Zeitpunkt; nicht vor from und höchstens 366 Tage danach
per_pagequeryinteger · Standard 100Einträge je Seite (1 bis 500)
cursorquerystringCursor der nächsten Seite aus meta.next_cursor der vorigen Antwort

Antwort

200

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/monitors/<monitor-id>/results"
get/orgs/{organization}/monitors/{monitor}/uptimereadVerfügbarkeit und Antwortzeit

Verfügbarkeit, Antwortzeiten (Median, 95. Perzentil) und Ausfallzeit je Zeitraum, dazu Messpunkte für Diagramme.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
monitorpathstring (uuid)ID des Monitors
rangequerystring (24h, 7d, 30d, 90d) · Standard 24hZeitraum

Antwort

200 · { data: Uptime }

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/monitors/<monitor-id>/uptime"
get/orgs/{organization}/metricsreadPrometheus-Metriken

Zustand, Verfügbarkeit (24 h), Antwortzeit, Zertifikat- und Domainablauf sowie offene Incidents aller Domains im Prometheus-Textformat (Version 0.0.4) für Grafana, Zabbix, Checkmk, PRTG & Co. Labels domain, customer, bei Monitoren type und target. 30 Abfragen je Minute.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.

Antwort

200 · { data: prometheus } · Prometheus-Textformat

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/metrics"

DNS

get/orgs/{organization}/domains/{domain}/fixesreadVorschläge zu Befunden

Vorschläge aus den aktuellen Befunden der Domain – fehlende DNS-Records (DMARC, SPF, TLS-RPT, CAA), ~all statt eines freizügigen SPF-Endes, die ausstellende CA für einen aussperrenden CAA-Satz –, mit den verbundenen Integrationen und dem DNS-Anbieter, bei dem die Zone laut Nameservern liegt (dns_provider); nur eine Integration dieses Anbieters kann Records anlegen.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Antwort

200

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/fixes"
post/orgs/{organization}/domains/{domain}/fixes/{fix}/applywriteVorschlag beim DNS-Anbieter umsetzen

Legt den vorgeschlagenen Record über die angegebene Integration an (action create). Einen bestehenden Record ändert der Server nur bei action update, mit replace: true und dem gezeigten Wert in current; steht der Record beim Anbieter inzwischen anders da, antwortet er mit 422. Gelöscht wird nie etwas; ist bereits ein passender Record vorhanden oder liegt die Zone nicht (mehr) beim Anbieter der Integration, ebenfalls 422. Jede Anwendung steht im Audit-Log, der Monitor wird anschließend neu geprüft.

Limit: 20 je Minute

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain
fixpathstringSchlüssel des Vorschlags aus der Liste der fehlenden Records

Anfrage (JSON)

FeldTypBeschreibung
integration_id*string (uuid)Integration der Organisation (Einstellungen → Integrationen)
ruastringBerichtsadresse für dmarc_missing und tls_rpt_missing (Pflicht bei diesen Vorschlägen)
sendersstringWeitere SPF-Mechanismen für spf_missing und spf_all, durch Komma getrennt (include:…, ip4:…, ip6:…, a, mx); leer bestätigt, dass keine weiteren Dienste senden
replacebooleanAusdrückliche Bestätigung, einen bestehenden Record zu ändern (Pflicht bei action update)
currentstringDer bestehende Wert, wie der Vorschlag ihn nennt (Pflicht bei action update); weicht der Record ab, ändert DomainWarn nichts

Antwort

200 · Record angelegt

Beispiel

Shell
curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"integration_id":"3f9c1a52-6a2e-4c0e-9d4b-1c9a1a0e5b77","rua":"dmarc-reports@agentur.de"}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/fixes/<fix-id>/apply"
get/orgs/{organization}/domains/{domain}/hosting-dns/{feature}readRecords einer gehosteten Funktion beim DNS-Anbieter

Vergleicht die Records, die MTA-STS, BIMI, das SPF-Flattening (spf) oder die security.txt-Weiterleitung brauchen, mit dem Stand beim Anbieter der Integration, ohne etwas zu ändern. Je Record state: missing (wird angelegt), current, outdated (von DomainWarn, alter Stand oder doppelt – wird aktualisiert bzw. aufgeräumt), conflict (fremder Inhalt, etwa A-Records neben dem CNAME oder mehrere Policy-Records – nur mit replace), blocked (den Zugangsdaten fehlt eine Berechtigung) oder manual (Anbieter ohne Weiterleitungsregeln). deletes nennt je Record, was ein Klick löschen würde. Fragt den Anbieter mit den Zugangsdaten der Integration; Kundenzugänge sehen das nicht.

Limit: 30 je Minute

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain
featurepathstring (mta_sts, bimi, security_txt)Gehostete Funktion: mta_sts (CNAME und TXT), bimi (TXT) oder security_txt (Weiterleitung, nur bei Anbietern mit Weiterleitungsregeln wie Cloudflare)
integration_id*querystring (uuid)Integration der Organisation, bei deren Anbieter die Zone laut Nameservern liegt

Antwort

200

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/hosting-dns/<feature-id>?integration_id=<integration_id>"
post/orgs/{organization}/domains/{domain}/hosting-dns/{feature}/applywriteRecords einer gehosteten Funktion anlegen oder aktualisieren

Legt fehlende Records an und aktualisiert veraltete, die von DomainWarn stammen (neue MTA-STS-Kennung, neue Logo-Adresse). Doppelte eigene Records räumt DomainWarn dabei auf (deletes der Vorschau nennt sie); Records mit fremdem Inhalt – auch A/AAAA neben dem CNAME oder mehrere Policy-Records – ersetzt oder löscht es nur mit replace: true. Gelöschte Records stehen in changes mit action: deleted; andere Records unter demselben Namen bleiben unberührt. Bei Cloudflare liegt der MTA-STS-CNAME ohne Proxy („DNS only“), die security.txt-Weiterleitung ist eine eigene Regel mit der Kennung domainwarn_security_txt (Berechtigung „Zone → Single Redirect → Edit“). 422, wenn den Zugangsdaten Rechte fehlen, ohne Bestätigung eines Konflikts oder wenn die Zone nicht (mehr) beim Anbieter liegt.

Limit: 20 je Minute

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain
featurepathstring (mta_sts, bimi, security_txt)Gehostete Funktion: mta_sts (CNAME und TXT), bimi (TXT) oder security_txt (Weiterleitung, nur bei Anbietern mit Weiterleitungsregeln wie Cloudflare)

Anfrage (JSON)

FeldTypBeschreibung
integration_id*string (uuid)Integration der Organisation
replacebooleanRecords mit fremdem Inhalt (state conflict) ersetzen

Antwort

200 · Records geschrieben

Beispiel

Shell
curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"integration_id":"3f9c1a52-6a2e-4c0e-9d4b-1c9a1a0e5b77"}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/hosting-dns/<feature-id>/apply"
patch/orgs/{organization}/domains/{domain}/hosting-dns/{feature}/syncwriteTXT-Record automatisch nachziehen

Nur mta_sts, bimi und spf: Mit einer Integration zieht DomainWarn den TXT-Record bei jeder Änderung der Policy, des Logos bzw. der aufgelösten Netze selbst nach (beim SPF-Flattening nur die Teile unter _spf.<domain>, nie den SPF-Record der Domain) (im Hintergrund, mit Wiederholungen; scheitert es, entsteht ein Änderungs-Event). Voraussetzung ist ein Record, der schon von DomainWarn stammt; fehlt er oder ist er fremd, erst per apply einrichten. null schaltet ab.

Limit: 20 je Minute

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain
featurepathstring (mta_sts, bimi, security_txt)Gehostete Funktion: mta_sts (CNAME und TXT), bimi (TXT) oder security_txt (Weiterleitung, nur bei Anbietern mit Weiterleitungsregeln wie Cloudflare)

Anfrage (JSON)

FeldTypBeschreibung
integration_id*string | null (uuid)Integration, über die geschrieben wird; null schaltet ab

Antwort

200

Beispiel

Shell
curl -X PATCH \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"integration_id":"3f9c1a52-6a2e-4c0e-9d4b-1c9a1a0e5b77"}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/hosting-dns/<feature-id>/sync"
get/orgs/{organization}/domains/{domain}/dmarc-assistant/previewreadDMARC-Schritt beim DNS-Anbieter prüfen

Liest den DMARC-Record beim Anbieter der Integration und zeigt, was ein Klick daraus machen würde (current, proposed, changes), ohne etwas zu ändern. status ready oder blocked mit reason: missing, multiple, changed (weicht von der letzten Prüfung ab), not_ready, unauthorized, no_address oder up_to_date. Kundenzugänge sehen das nicht.

Limit: 30 je Minute

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain
integration_id*querystring (uuid)Integration der Organisation, bei deren Anbieter die Zone liegt
action*querystring (advance, add_rua)advance: nächster Policy-Schritt; add_rua: Berichtsadresse als weiteres rua-Ziel
daysqueryintegerZeitfenster der Empfehlung (Vorgabe 30)

Antwort

200

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/dmarc-assistant/preview?integration_id=<integration_id>&action=<action>"
post/orgs/{organization}/domains/{domain}/dmarc-assistant/applywriteDMARC-Schritt beim DNS-Anbieter umsetzen

Ändert genau den einen vorhandenen DMARC-Record so, wie die Vorschau es zeigt. Verlangt confirm: true und expected (den Inhalt aus current der Vorschau): Steht beim Anbieter inzwischen etwas anderes, gibt es keinen oder mehrere DMARC-Records oder ist der Schritt nicht empfohlen, antwortet der Server mit 422. Nur p, pct und sp (bzw. rua) ändern sich; DomainWarn legt keine Records an und löscht keine.

Limit: 20 je Minute

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Anfrage (JSON)

FeldTypBeschreibung
integration_id*string (uuid)Integration der Organisation
action*string (advance, add_rua)Wie bei der Vorschau
expected*stringDer DMARC-Record, wie die Vorschau ihn gelesen hat
confirm*booleanAusdrückliche Bestätigung
daysintegerZeitfenster der Empfehlung (Vorgabe 30)

Antwort

200 · Record geändert

Beispiel

Shell
curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"integration_id":"3f9c1a52-6a2e-4c0e-9d4b-1c9a1a0e5b77","action":"advance","expected":"v=DMARC1; p=none; rua=mailto:dmarc@kunde.de","confirm":true}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/dmarc-assistant/apply"
get/orgs/{organization}/domains/{domain}/mail-reports/connect/previewreadBerichtsadresse beim DNS-Anbieter prüfen

Liest DMARC-Record (_dmarc) und TLS-RPT-Record (_smtp._tls) beim Anbieter der Integration und zeigt je Record, was ein Klick daraus machen würde (current, proposed, changes, operation update oder create), ohne etwas zu ändern. mode add trägt die Berichtsadresse zusätzlich ein, replace als einziges rua-Ziel. status ready oder blocked mit reason: missing (kein DMARC-Record), multiple, invalid, unauthorized (Berichtsdomain nimmt keine fremden Berichte an), no_address oder up_to_date. Kundenzugänge sehen das nicht.

Limit: 30 je Minute

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain
integration_id*querystring (uuid)Integration der Organisation, bei deren Anbieter die Zone liegt
mode*querystring (add, replace)add: zusätzlich zu vorhandenen Zielen; replace: einziges rua-Ziel

Antwort

200

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/mail-reports/connect/preview?integration_id=<integration_id>&mode=<mode>"
post/orgs/{organization}/domains/{domain}/mail-reports/connectwriteBerichtsadresse beim DNS-Anbieter eintragen

Schreibt alle Records, die die Vorschau als ready zeigt: den vorhandenen DMARC-Record (nur rua ändert sich) und den TLS-RPT-Record (wird angelegt, wenn er fehlt). Verlangt confirm: true und expected mit dem Inhalt aus current der Vorschau je Record (null, wenn dort keiner stand): Steht beim Anbieter inzwischen etwas anderes oder ist nichts zu tun, antwortet der Server mit 422. DomainWarn löscht keine Records.

Limit: 20 je Minute

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Anfrage (JSON)

FeldTypBeschreibung
integration_id*string (uuid)Integration der Organisation
mode*string (add, replace)Wie bei der Vorschau
expected*objectDie Records, wie die Vorschau sie gelesen hat
confirm*booleanAusdrückliche Bestätigung

Antwort

200 · Records geschrieben

Beispiel

Shell
curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"integration_id":"3f9c1a52-6a2e-4c0e-9d4b-1c9a1a0e5b77","mode":"add","expected":{"dmarc":"v=DMARC1; p=quarantine; rua=mailto:dmarc@kunde.de","tls_rpt":null},"confirm":true}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/mail-reports/connect"
get/orgs/{organization}/domains/{domain}/dnsreadAktuelle DNS-Records

Der jüngste DNS-Schnappschuss der Domain mit allen Records je Typ; null, solange noch keiner vorliegt.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Antwort

200

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/dns"
get/orgs/{organization}/domains/{domain}/dns/snapshotsreadDNS-Verlauf

Alle Schnappschüsse der Domain, neueste zuerst, ohne Records (dafür den Vergleich nutzen). Jeder Schnappschuss steht für einen Zeitraum mit unveränderter Konfiguration.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain
limitqueryinteger · Standard 50Höchstzahl

Antwort

200

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/dns/snapshots"
get/orgs/{organization}/domains/{domain}/dns/diffreadZwei DNS-Stände vergleichen

Beide Schnappschüsse mit Records und die Unterschiede dazwischen (hinzugefügte, entfernte und geänderte Records je Typ).

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain
from*querystring (uuid)ID des älteren Schnappschusses
to*querystring (uuid)ID des neueren Schnappschusses

Antwort

200

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/dns/diff?from=<from>&to=<to>"
get/orgs/{organization}/domains/{domain}/zone-backupsreadZonen-Backup: Stände

Vollständige Stände der Zone, gelesen über die Integration des DNS-Anbieters (auch Records, die von außen niemand sieht), neueste zuerst, mit der Zusammenfassung des Unterschieds zum Vorgänger. Ein neuer Stand entsteht nur, wenn sich die Zone ändert; sonst rückt last_seen_at nach. meta.state sagt, ob ein Backup möglich ist: available, not_delegated (Zone bei keinem angebundenen Anbieter), no_integration (keine geprüfte Integration für den Anbieter) oder unsupported; meta.last_error nennt den Fehler des letzten Laufs. Auch für Kundenzugänge.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain
limitqueryinteger · Standard 50Höchstzahl

Antwort

200

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/zone-backups"
get/orgs/{organization}/domains/{domain}/zone-backups/{backup}readZonen-Backup: ein Stand

Ein Stand mit allen Records (key = „name|TYP“, wie ihn das Wiederherstellen erwartet) und dem Unterschied zum vorigen Stand je Name und Typ: added, removed oder changed mit den Werten vorher und nachher.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain
backuppathstring (uuid)ID des Stands im Zonen-Backup

Antwort

200 · { data: ZoneBackup }

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/zone-backups/<backup-id>"
get/orgs/{organization}/domains/{domain}/zone-backups/{backup}/export.zonereadZonen-Backup als BIND-Zonendatei

Der Stand als Zonendatei nach RFC 1035 ($ORIGIN, $TTL, Namen relativ zur Zone, @ für die Domain, TXT in Anführungszeichen in Teilstrings zu 255 Bytes), als Download (Content-Disposition: attachment). Lässt sich bei jedem Anbieter mit Zonenimport wieder einlesen; Records hinter dem Cloudflare-Proxy tragen den Kommentar ; proxied.

Limit: 30 Exporte je Stunde und Organisation

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain
backuppathstring (uuid)ID des Stands im Zonen-Backup

Antwort

200 · { data: zonefile } · Zonendatei (text/plain)

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/zone-backups/<backup-id>/export.zone"
get/orgs/{organization}/domains/{domain}/zone-backups/{backup}/export.jsonreadZonen-Backup als JSON

Der Stand als JSON-Datei zum Herunterladen: Zone, Anbieter, Zeitpunkte, Hash und die kanonische Record-Liste.

Limit: 30 Exporte je Stunde und Organisation

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain
backuppathstring (uuid)ID des Stands im Zonen-Backup

Antwort

200

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/zone-backups/<backup-id>/export.json"
post/orgs/{organization}/domains/{domain}/zone-backups/runwriteZonen-Backup jetzt festhalten

Liest die Zone sofort beim Anbieter (sonst geschieht das täglich): status ist created bei geänderter Zone (dann mit Zeitleisten-Event zone.changed) oder unchanged. 422, wenn die Zone bei keinem angebundenen Anbieter liegt oder sich nicht lesen lässt.

Limit: 10 je Stunde und Domain, 60 je Stunde und Organisation

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Antwort

200

Beispiel

Shell
curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/zone-backups/run"
post/orgs/{organization}/domains/{domain}/zone-backups/{backup}/restorewriteRecords aus dem Zonen-Backup wiederherstellen

Schreibt Records dieses Stands über die Integration zurück in die Zone: je Schlüssel („name|TYP“) bekommt die Zone genau die Werte des Stands – fehlende werden angelegt (mit der TTL des Stands), überzählige gelöscht, bei gleicher Anzahl geändert. all: true nimmt alle Unterschiede zwischen Stand und Zone in einem Lauf, höchstens 200 Änderungen. Vorher werden die Nameserver frisch aufgelöst; Records hinter dem Cloudflare-Proxy fasst DomainWarn nicht an (skipped). Steht im Audit-Log und in der Zeitleiste (zone.restored). Kundenzugänge dürfen das nicht.

Limit: 20 je Minute

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain
backuppathstring (uuid)ID des Stands im Zonen-Backup

Anfrage (JSON)

FeldTypBeschreibung
keysarraySchlüssel der Records (Name|Typ); Pflicht ohne all
allbooleanAlle Unterschiede zwischen Stand und Zone wiederherstellen

Antwort

200

Beispiel

Shell
curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"keys":["kunde.de|MX","_dmarc.kunde.de|TXT"]}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/zone-backups/<backup-id>/restore"

Incidents

get/orgs/{organization}/incidentsreadIncidents auflisten

Standardmäßig nur offene und quittierte Incidents, offene und kritische zuerst; cursor-paginiert.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
statusquerystring · Standard openopen (offen und quittiert), all oder Status kommagetrennt: open, acknowledged, resolved
severityquerystringSchweregrade, kommagetrennt: info, warning, critical
domainquerystring (uuid)Nur Incidents dieser Domain
customerquerystring (uuid)Nur Domains dieses Kunden
per_pagequeryinteger · Standard 50Einträge je Seite (1 bis 200)
cursorquerystringCursor der nächsten Seite aus meta.next_cursor der vorigen Antwort

Antwort

200 · { data: Incident[], links, meta }

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/incidents"
get/orgs/{organization}/incidents/{incident}readIncident abrufen

Ein Incident mit Domain, Monitor, Ursache und dem Namen des Quittierenden.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
incidentpathstring (uuid)ID des Incidents

Antwort

200 · { data: Incident }

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/incidents/<incident-id>"
post/orgs/{organization}/incidents/{incident}/acknowledgewriteIncident quittieren

Markiert den Incident als gesehen; Erinnerungen hören auf, die Entwarnung kommt weiterhin.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
incidentpathstring (uuid)ID des Incidents

Antwort

200 · { data: Incident }

Beispiel

Shell
curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/incidents/<incident-id>/acknowledge"
put/orgs/{organization}/incidents/{incident}/reportwriteIncident im Kundenbericht

Freitext „Ursache und Maßnahmen“ für den Kunden (leer oder null entfernt ihn) und ob der Incident im Monatsbericht ausgeblendet wird. Mindestens eins von beiden. Was der Kunde davon sieht, regeln die Berichtseinstellungen des Kunden. Der Stand steht im Incident unter report.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
incidentpathstring (uuid)ID des Incidents

Anfrage (JSON)

FeldTypBeschreibung
notestring | nullUrsache und Maßnahmen
hiddenbooleanIm Kundenbericht ausblenden

Antwort

200

Beispiel

Shell
curl -X PUT \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"note":"Der Hoster hat das Rechenzentrum gewechselt; die Website war 95 Minuten nicht erreichbar."}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/incidents/<incident-id>/report"

Ereignisse

get/orgs/{organization}/eventsreadEreignisse auflisten

Erkannte Änderungen und Incident-Übergänge aller Domains, neueste zuerst, cursor-paginiert. Geeignet für eigene Auswertungen oder ein Änderungsprotokoll.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
severityquerystringSchweregrade, kommagetrennt: info, warning, critical
typequerystringEreignisarten, kommagetrennt
domainquerystring (uuid)Nur Ereignisse dieser Domain
customerquerystring (uuid)Nur Domains dieses Kunden
fromquerystring (date-time)Nur Ereignisse ab diesem Zeitpunkt
toquerystring (date-time)Nur Ereignisse bis zu diesem Zeitpunkt; nicht vor from und höchstens 366 Tage danach
per_pagequeryinteger · Standard 50Einträge je Seite (1 bis 200)
cursorquerystringCursor der nächsten Seite aus meta.next_cursor der vorigen Antwort

Antwort

200 · { data: Event[], links, meta }

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/events"
get/orgs/{organization}/domains/{domain}/timelinereadZeitleiste einer Domain

Ereignisse einer Domain, neueste zuerst; dieselben Filter wie bei allen Ereignissen.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain
severityquerystringSchweregrade, kommagetrennt: info, warning, critical
typequerystringEreignisarten, kommagetrennt
fromquerystring (date-time)Ab Zeitpunkt
toquerystring (date-time)Bis Zeitpunkt; nicht vor from und höchstens 366 Tage danach
per_pagequeryinteger · Standard 100Einträge je Seite (1 bis 200)
cursorquerystringCursor der nächsten Seite aus meta.next_cursor der vorigen Antwort

Antwort

200 · { data: Event[], links, meta }

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/timeline"

Kunden

get/orgs/{organization}/customers/{customer}/announcementsreadMeldungen der Status-Seite

Störungen, Wartungen und Hinweise in eigenen Worten, wie sie oben auf der Status-Seite stehen: laufende sofort, angekündigte Wartungen bis 14 Tage im Voraus.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
customerpathstring (uuid)ID des Kunden

Antwort

200

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/customers/<customer-id>/announcements"
post/orgs/{organization}/customers/{customer}/announcementswriteMeldung veröffentlichen

Erscheint auf der Status-Seite des Kunden. Ohne Beginn gilt sie sofort, ohne Ende bis sie als behoben markiert wird.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
customerpathstring (uuid)ID des Kunden

Anfrage (JSON)

FeldTypBeschreibung
kind*string (incident, maintenance, info)Art der Meldung
title*stringTitel
bodystring | nullText
starts_atstring | null (date-time)Beginn; leer = jetzt
ends_atstring | null (date-time)Ende

Antwort

201

Beispiel

Shell
curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"kind":"maintenance","title":"Serverumzug am Samstag","body":"Von 8 bis 10 Uhr ist der Shop nicht erreichbar.","starts_at":"2026-10-03T06:00:00Z","ends_at":"2026-10-03T08:00:00Z"}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/customers/<customer-id>/announcements"
patch/orgs/{organization}/customers/{customer}/announcements/{announcement}writeMeldung ändern

Text, Zeitraum oder Art ändern; als behoben markieren beendet sie.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
customerpathstring (uuid)ID des Kunden
announcementpathstring (uuid)ID der Meldung auf der Status-Seite

Antwort

200

Beispiel

Shell
curl -X PATCH \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/customers/<customer-id>/announcements/<announcement-id>"
delete/orgs/{organization}/customers/{customer}/announcements/{announcement}writeMeldung löschen

Entfernt die Meldung von der Status-Seite.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
customerpathstring (uuid)ID des Kunden
announcementpathstring (uuid)ID der Meldung auf der Status-Seite

Antwort

204

Beispiel

Shell
curl -X DELETE \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/customers/<customer-id>/announcements/<announcement-id>"
get/orgs/{organization}/customers/{customer}/status-subscribersreadAbonnenten der Status-Seite

E-Mail-Adressen, die sich auf der Status-Seite des Kunden für Störungsmeldungen eingetragen haben, mit Sprache und Zeitpunkt der Bestätigung (leer = noch unbestätigt). Höchstens 500, neueste zuerst.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
customerpathstring (uuid)ID des Kunden

Antwort

200

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/customers/<customer-id>/status-subscribers"
delete/orgs/{organization}/customers/{customer}/status-subscribers/{subscriber}writeAbonnenten entfernen

Entfernt die Adresse; sie bekommt keine Störungsmeldungen mehr und kann sich auf der Seite neu eintragen.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
customerpathstring (uuid)ID des Kunden
subscriberpathstring (uuid)ID des Abonnenten der Status-Seite

Antwort

204

Beispiel

Shell
curl -X DELETE \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/customers/<customer-id>/status-subscribers/<subscriber-id>"
get/orgs/{organization}/customersreadKunden auflisten

Kunden der Organisation mit Anzahl der Domains, alphabetisch; archivierte nur auf Wunsch.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
searchquerystringTeil von Name oder Referenz
archivedquerybooleantrue liefert nur archivierte, false nur aktive (Standard)
pagequeryinteger · Standard 1Seitennummer
per_pagequeryinteger · Standard 100Einträge je Seite (1 bis 200)

Antwort

200 · { data: Customer[], links, meta }

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/customers"
post/orgs/{organization}/customerswriteKunden anlegen

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.

Anfrage (JSON)

FeldTypBeschreibung
name*stringName, eindeutig je Organisation
referencestring | nullEigene Referenz
notesstring | nullNotizen
contact_emailstring | null (email)Kontaktadresse für Berichte
logostring | nullLogo als Data-URL (PNG, JPEG oder SVG ohne Skripte, bis 300 KB); null entfernt es
monthly_reportbooleanMonatlichen Bericht senden
report_localestring | null (de, en)Sprache des Berichts

Antwort

201 · { data: Customer }

Beispiel

Shell
curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"name":"Musterfirma GmbH","reference":"K-1042","contact_email":"it@musterfirma.de","monthly_report":true,"report_locale":"de"}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/customers"
get/orgs/{organization}/customers/{customer}readKunden abrufen

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
customerpathstring (uuid)ID des Kunden

Antwort

200 · { data: Customer }

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/customers/<customer-id>"
get/orgs/{organization}/customers/{customer}/reportreadMonatsbericht abrufen

Der Monatsbericht des Kunden als Daten: Zusammenfassung, je Domain Verfügbarkeit, Ausfallzeit, Incidents und Zertifikat, dazu Incidents, Änderungen und anstehende Abläufe. Ohne month der Vormonat, Sprache über locale.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
customerpathstring (uuid)ID des Kunden
monthquerystringBerichtsmonat als YYYY-MM; Standard ist der Vormonat
localequerystring (de, en)Sprache des Berichts (Texte, Datumsformate); ohne Angabe die Berichtssprache des Kunden, sonst die der Organisation. Accept-Language gilt hier nicht.

Antwort

200 · { data: CustomerReport }

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/customers/<customer-id>/report"
get/orgs/{organization}/customers/{customer}/report/pdfreadMonatsbericht als PDF

Derselbe Bericht als PDF; download=1 liefert ihn als Anhang statt inline.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
customerpathstring (uuid)ID des Kunden
monthquerystringBerichtsmonat als YYYY-MM; Standard ist der Vormonat
localequerystring (de, en)Sprache des Berichts (Texte, Datumsformate); ohne Angabe die Berichtssprache des Kunden, sonst die der Organisation. Accept-Language gilt hier nicht.
downloadqueryboolean · Standard falseAls Download (Content-Disposition attachment)

Antwort

200 · { data: pdf } · PDF-Datei

Beispiel

Shell
curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/customers/<customer-id>/report/pdf"
post/orgs/{organization}/customers/{customer}/report/sharewriteBericht freigeben

Erzeugt einen signierten Link auf das PDF, 60 Tage gültig, ohne Login abrufbar – zum Weitergeben an den Kunden.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
customerpathstring (uuid)ID des Kunden
monthquerystringBerichtsmonat als YYYY-MM; Standard ist der Vormonat
localequerystring (de, en)Sprache des Berichts (Texte, Datumsformate); ohne Angabe die Berichtssprache des Kunden, sonst die der Organisation. Accept-Language gilt hier nicht.

Antwort

200

Beispiel

Shell
curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/customers/<customer-id>/report/share"
put/orgs/{organization}/customers/{customer}/report/settingswriteInhalt des Monatsberichts

Was der Bericht des Kunden zeigt – Vorschau, PDF, Link und Versand: Abschnitte, Details je Incident und welche Incidents. Fehlende Schlüssel bleiben unverändert; der Standard entspricht dem Bericht ohne Einstellung (alle Abschnitte, Incidents mit Dauer, ohne weitere Details). Der Stand steht am Kunden unter report_settings.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
customerpathstring (uuid)ID des Kunden

Anfrage (JSON)

FeldTypBeschreibung
sectionsobjectAbschnitte des Berichts
incident_detailsobjectDetails je Incident: Dauer, Verlauf, benachrichtigte Kanalarten, wer quittiert hat, Ursache und Maßnahmen, Änderungen mit Vorher/Nachher
incident_filterobjectWelche Incidents: alle oder nur kritische, alle oder nur behobene

Antwort

200

Beispiel

Shell
curl -X PUT \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"sections":{"changes":false},"incident_details":{"timeline":true,"note":true},"incident_filter":{"severity":"critical"}}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/customers/<customer-id>/report/settings"
patch/orgs/{organization}/customers/{customer}writeKunden ändern

Dieselben Felder wie beim Anlegen, dazu is_archived. name muss immer mitgesendet werden.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
customerpathstring (uuid)ID des Kunden

Anfrage (JSON)

FeldTypBeschreibung
name*stringName
referencestring | nullEigene Referenz
notesstring | nullNotizen
contact_emailstring | null (email)Kontaktadresse
logostring | nullLogo als Data-URL; null entfernt es, ohne das Feld bleibt es
is_archivedbooleanArchivieren oder wiederherstellen
monthly_reportbooleanMonatlichen Bericht senden
report_localestring | null (de, en)Sprache des Berichts

Antwort

200 · { data: Customer }

Beispiel

Shell
curl -X PATCH \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"name":"Musterfirma GmbH","is_archived":true}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/customers/<customer-id>"
delete/orgs/{organization}/customers/{customer}writeKunden löschen

Entfernt den Kunden; seine Domains bleiben erhalten und verlieren nur die Zuordnung.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
customerpathstring (uuid)ID des Kunden

Antwort

204

Beispiel

Shell
curl -X DELETE \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/customers/<customer-id>"
post/orgs/{organization}/customers/{customer}/status-pagewriteStatus-Seite einschalten

Erzeugt das Token der öffentlichen Status-Seite des Kunden (ohne Login erreichbar); ein bestehendes wird ersetzt, die alte Adresse gilt dann nicht mehr. Die Adresse steht in status_page_url. Für archivierte Kunden antwortet der Server mit 422.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
customerpathstring (uuid)ID des Kunden

Antwort

200 · { data: Customer } · Eingeschaltet, Adresse in `status_page_url`

Beispiel

Shell
curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/customers/<customer-id>/status-page"
delete/orgs/{organization}/customers/{customer}/status-pagewriteStatus-Seite abschalten

Löscht das Token; die Adresse antwortet danach mit 404. Liefert den Kunden zurück (status_page_url ist null).

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
customerpathstring (uuid)ID des Kunden

Antwort

200 · { data: Customer } · Abgeschaltet

Beispiel

Shell
curl -X DELETE \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/customers/<customer-id>/status-page"
post/orgs/{organization}/customers/{customer}/status-page/host/verifywriteEigene Adresse der Status-Seite nachweisen

Prüft den TXT-Record aus status_page_host_record (Name _domainwarn.<Adresse>). Erst nach dem Nachweis liefert die Website die Status-Seite unter status_page_host aus. Fehlt der Record oder ist das DNS gerade nicht abfragbar, antwortet der Server mit 422.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
customerpathstring (uuid)ID des Kunden

Antwort

200 · { data: Customer } · Nachgewiesen, `status_page_host_verified` ist true

Beispiel

Shell
curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/customers/<customer-id>/status-page/host/verify"

Häufige Fragen

Gibt es Webhooks?
Nicht als Teil der API, aber als Benachrichtigungskanal: Unter Benachrichtigungen im Dashboard richtest du einen Webhook ein, der jeden Incident und jede Änderung als JSON an deine Adresse sendet; daneben gibt es E-Mail, Slack, Microsoft Teams, Discord, Telegram, Mattermost, PagerDuty, Opsgenie, ntfy, SMS und einen Atom-Feed. Kanäle lassen sich nur mit einer Sitzung verwalten, nicht per Token.
Kann ich mit einem Token mehrere Organisationen abfragen?
Nein, ein Token gehört zu genau einer Organisation. Für mehrere Organisationen erzeugst du je Organisation ein Token.
Ist die API im Free-Tarif enthalten?
Ja, die API steht in jedem Tarif zur Verfügung, mit denselben Domainlimits wie das Dashboard.
Wie erfahre ich von Änderungen an der API?
Neue Felder und Endpunkte kommen ohne Versionswechsel dazu; bestehende Felder werden nicht entfernt oder umgedeutet. Sollte ein Bruch nötig werden, bekommt er ein neues Präfix (/api/v2), und v1 bleibt für eine Übergangszeit parallel erreichbar. Die OpenAPI-Spezifikation trägt die aktuelle Version im Feld `info.version`.
Wo sehe ich, wann ein Token zuletzt benutzt wurde?
Im Dashboard unter Einstellungen → API steht je Token die letzte Nutzung. Unbenutzte Tokens solltest du widerrufen.

Bereit für die erste Anfrage?

Registrieren, Domains anlegen, unter Einstellungen → API ein Token erzeugen und in wenigen Minuten die erste Abfrage aus deinem Skript schicken. Die API ist in jedem Tarif enthalten.