Entwickler

domain.dot API

Eine stabile, versionierte HTTP API, um die .dot-Verfügbarkeit zu prüfen, den kuratierten Katalog zu durchsuchen, Vorbestellungen mit einer gespeicherten Karte aufzugeben sowie Karten und Webhooks zu verwalten. JSON rein, JSON raus.

OpenAPI (JSON) herunterladen API-Schlüssel anfordern

Base URL https://domain.dot/api/v1

Authentifizierung

Senden Sie Ihren API-Schlüssel als Bearer-Token. Erstellen und verwalten Sie Schlüssel in Ihren Kontoeinstellungen — der vollständige Schlüssel wird nur einmal bei der Erstellung angezeigt, bewahren Sie ihn daher sicher auf.

Authorization: Bearer dpk_live_<selector>_<secret>

Schlüssel haben die Form dpk_<env>_<selector>_<secret>, wobei env entweder live oder test ist.

Eine angemeldete Browser-Sitzung kann dieselben Endpunkte aufrufen; sitzungsauthentifizierte Schreibvorgänge erfordern zusätzlich einen X-CSRF-Token-Header. Bearer-Token-Anfragen nicht.

Scopes & Rate-Limits

Jeder Schlüssel trägt eine Reihe von Scopes. Ein Aufruf muss mit einem Schlüssel erfolgen, der den Scope des Endpunkts besitzt. Rate-Limits werden pro Scope und pro Schlüssel angewendet.

Scope Berechtigt zu Rate-Limit Stufe
domain.check Check a single .pay domain — availability + pricing 50/sec Öffentlich
catalog.search AI keyword search against the curated catalog 30/min Öffentlich
orders.read List + read the account's own orders 60/min Öffentlich
orders.write Create a pre-order against a saved payment method 10/min Öffentlich
payment_methods.read List saved cards (Stripe payment methods) 20/min Öffentlich
payment_methods.write Add (SetupIntent) + remove saved cards 20/min Öffentlich
account.read Read account profile: email, role, vip_tier, granted scopes 60/min Öffentlich
webhooks.read List configured webhook endpoints 20/min Öffentlich
webhooks.write Create + delete webhook endpoints 10/min Öffentlich
zone_file.download Download the full daily .pay DNS zone-file snapshot 24/day Eingeschränkt
premium.list Paginated registry premium catalogue (incl. reserved/blocked) 60/min Eingeschränkt
registered.list Paginated registered .pay names (from the DNS zone file) + AI brand context 60/min Eingeschränkt

Eingeschränkte Scopes sind doppelt abgesichert: Ein Schlüssel kann den Scope zwar auflisten, aber Aufrufe gelingen erst, wenn ein Administrator ihn Ihrem Konto gewährt hat. Beantragen Sie ihn in Ihren Kontoeinstellungen.

Unterstützte Domain-Zonen

Ein Konto und ein API-Schlüssel funktionieren in allen Zonen unten — die aufgerufene Basis-URL bestimmt die Zone.

.pay https://domain.pay/api/v1
.latino https://domain.latino/api/v1
.dot https://domain.dot/api/v1

Schnellstart

Zwei schnelle Aufrufe für den Einstieg:

# Einen Namen prüfen
curl -s https://domain.dot/api/v1/check-domain \
  -H "Authorization: Bearer dpk_live_…" \
  -H "Content-Type: application/json" \
  -d '{"domain":"acme.dot"}'

# Wer bin ich + was darf ich
curl -s https://domain.dot/api/v1/account \
  -H "Authorization: Bearer dpk_live_…"

Endpunkte

Alle Endpunkte sind live. Anfrage- und Antwortschemata, Parameter und Statuscodes sind im OpenAPI-Dokument vollständig beschrieben.

Account

GET /account account.read Your profile + the scopes effective for this key.

Domains

POST /check-domain domain.check Availability + pricing for one name in a supported zone. Fast DB-only lookup (no live registry call) — POST /orders re-verifies live.

Catalog

POST /catalog/search catalog.search Keyword search over the curated catalogue.

Orders

GET /orders orders.read List your orders, newest first.
GET /orders/{id} orders.read One order + its customer message thread.
POST /orders orders.write Create a pre-order + charge a saved card (send an Idempotency-Key).

Payment methods

GET /account/payment-methods payment_methods.read List saved cards.
POST /account/payment-methods payment_methods.write Start a Stripe SetupIntent to add a card.
DELETE /account/payment-methods/{id} payment_methods.write Remove a saved card.

Webhooks

GET /webhooks webhooks.read List webhook endpoints.
POST /webhooks webhooks.write Register an endpoint (signing secret shown once).
DELETE /webhooks/{id} webhooks.write Delete an endpoint.

Restricted

GET /zone-file zone_file.download Daily DNS zone-file snapshot for the zone of the host you call.
GET /premium premium.list Registry premium catalogue.
GET /registered registered.list Registered names in the called zone + AI brand context.

Für den vollständigen Anfrage-/Antwort-Vertrag importieren Sie die OpenAPI-Spezifikation: OpenAPI (JSON) herunterladen.

Webhooks

Registrieren Sie einen HTTPS-Endpunkt, und wir senden signierte Ereignisse, sobald sie eintreten. Das Signaturgeheimnis wird nur einmal bei der Erstellung angezeigt.

EreignisBeschreibung
order.createdA new order (pre-order) was created on the account
order.status_changedAn order changed payment status
payment.succeededA payment for an order succeeded
payment.failedA payment for an order failed or was canceled
payment.refundedA charge for an order was refunded
appraisal.completedA domain appraisal for an order finished

Wir senden den Ereignis-Umschlag per POST als JSON:

{
  "id": "evt_…",
  "event": "payment.succeeded",
  "created": "2026-05-28T12:00:00+00:00",
  "data": { "order": { … } }
}

Verifizieren Sie jede Zustellung, indem Sie den HMAC-SHA256 über den unveränderten Anfrage-Body mit Ihrem Signaturgeheimnis neu berechnen und in konstanter Zeit vergleichen:

X-Domain-Pay-Signature: sha256=<HMAC_SHA256(raw_body, signing_secret)>

Nicht-2xx-Antworten (oder Timeouts) werden mit exponentiellem Backoff (1 min to 24 h) bis zu 6 Mal wiederholt. Nach 5 aufeinanderfolgenden fehlgeschlagenen Zustellungen wird der Endpunkt automatisch deaktiviert und der Eigentümer benachrichtigt.

Fehler

Alle Fehler haben dieselbe Form. Die request_id wird bei jedem Fehler zurückgegeben — geben Sie sie in Support-Anfragen an.

{ "error": "scope_required", "message": "…", "request_id": "req_ab12…", "scope": "orders.read" }
HTTPerrorBedeutung
400invalid_requestMalformed or missing parameters.
401unauthorized / invalid_keyNo or invalid credential.
402card_declined / authentication_requiredPayment failed or needs SCA.
403scope_requiredThe key lacks the endpoint's scope.
403access_not_grantedRestricted scope not yet approved for this account.
403csrf_requiredSession write without a valid X-CSRF-Token.
404not_foundNo such endpoint or resource.
405method_not_allowedWrong HTTP verb.
409request_in_progressAn idempotency key's first request is still in flight.
422idempotency_key_reusedSame idempotency key, different parameters.
422contact_incompleteGA zones: add a registrant contact under /account/contacts first.
423account_lockedAccount is locked — contact support.
429rate_limitedSlow down; see the Retry-After header.
500server_errorOur fault.

Eingeschränkter Zugriff

Die Endpunkte für Zonendatei, Premium und registrierte Domains benötigen zusätzlich zum Scope eine genehmigte Freigabe:

  1. Erstellen Sie einen API-Schlüssel (oder verwenden Sie einen vorhandenen), der den eingeschränkten Scope auflistet.
  2. Öffnen Sie in Ihren Kontoeinstellungen den Eingeschränkten API-Zugriff, wählen Sie den Scope aus und erläutern Sie, wie Sie die Daten nutzen werden.
  3. Unser Team prüft die Anfrage und teilt Ihnen die Entscheidung per E-Mail mit.
  4. Nach der Genehmigung kann jeder Schlüssel in Ihrem Konto, der diesen Scope auflistet, ihn sofort verwenden. Keine kostenpflichtige Stufe — die Genehmigung erfolgt pro Konto.

API-Schlüssel anfordern OpenAPI (JSON) herunterladen