Autenticación
Envía tu clave de API como token Bearer. Crea y gestiona tus claves en la configuración de tu cuenta; la clave completa se muestra una sola vez al crearla, así que guárdala de forma segura.
Authorization: Bearer dpk_live_<selector>_<secret>
Las claves tienen el formato dpk_<env>_<selector>_<secret>, donde env es live o test.
Una sesión de navegador con la sesión iniciada puede llamar a los mismos endpoints; las escrituras autenticadas por sesión requieren además una cabecera X-CSRF-Token. Las solicitudes con token Bearer no la necesitan.
Ámbitos y límites de tasa
Cada clave lleva un conjunto de ámbitos. Una llamada debe hacerse con una clave que tenga el ámbito del endpoint. Los límites de tasa se aplican por ámbito y por clave.
| Ámbito | Concede | Límite de tasa | Nivel |
|---|---|---|---|
domain.check |
Check a single .pay domain — availability + pricing | 50/sec | Público |
catalog.search |
AI keyword search against the curated catalog | 30/min | Público |
orders.read |
List + read the account's own orders | 60/min | Público |
orders.write |
Create a pre-order against a saved payment method | 10/min | Público |
payment_methods.read |
List saved cards (Stripe payment methods) | 20/min | Público |
payment_methods.write |
Add (SetupIntent) + remove saved cards | 20/min | Público |
account.read |
Read account profile: email, role, vip_tier, granted scopes | 60/min | Público |
webhooks.read |
List configured webhook endpoints | 20/min | Público |
webhooks.write |
Create + delete webhook endpoints | 10/min | Público |
zone_file.download |
Download the full daily .pay DNS zone-file snapshot | 24/day | Restringido |
premium.list |
Paginated registry premium catalogue (incl. reserved/blocked) | 60/min | Restringido |
registered.list |
Paginated registered .pay names (from the DNS zone file) + AI brand context | 60/min | Restringido |
Los ámbitos restringidos tienen doble control: una clave puede incluir el ámbito, pero las llamadas solo funcionan una vez que un administrador lo ha concedido a tu cuenta. Solicítalo desde la configuración de tu cuenta.
Zonas de dominio compatibles
Una sola cuenta y una sola clave API funcionan en todas las zonas siguientes — la URL base que llames selecciona la zona.
.pay |
https://domain.pay/api/v1 |
.latino |
https://domain.latino/api/v1 |
.dot |
https://domain.dot/api/v1 |
Inicio rápido
Dos llamadas rápidas para empezar:
# Comprobar un nombre
curl -s https://domain.latino/api/v1/check-domain \
-H "Authorization: Bearer dpk_live_…" \
-H "Content-Type: application/json" \
-d '{"domain":"acme.latino"}'
# Quién soy y qué puedo hacer
curl -s https://domain.latino/api/v1/account \
-H "Authorization: Bearer dpk_live_…"
Endpoints
Todos los endpoints están activos. Los esquemas de solicitud y respuesta, los parámetros y los códigos de estado están descritos por completo en el documento OpenAPI.
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. |
Para el contrato completo de solicitud/respuesta, importa la especificación OpenAPI: Descargar OpenAPI (JSON).
Webhooks
Registra un endpoint HTTPS y te enviaremos eventos firmados a medida que ocurran. El secreto de firma se muestra una sola vez al crearlo.
| Evento | Descripción |
|---|---|
order.created | A new order (pre-order) was created on the account |
order.status_changed | An order changed payment status |
payment.succeeded | A payment for an order succeeded |
payment.failed | A payment for an order failed or was canceled |
payment.refunded | A charge for an order was refunded |
appraisal.completed | A domain appraisal for an order finished |
Enviamos el sobre del evento por POST como JSON:
{
"id": "evt_…",
"event": "payment.succeeded",
"created": "2026-05-28T12:00:00+00:00",
"data": { "order": { … } }
}
Verifica cada entrega recalculando el HMAC-SHA256 sobre el cuerpo bruto de la solicitud con tu secreto de firma y comparándolo en tiempo constante:
X-Domain-Pay-Signature: sha256=<HMAC_SHA256(raw_body, signing_secret)>
Las respuestas distintas de 2xx (o los tiempos de espera agotados) se reintentan con retroceso exponencial (1 min to 24 h) hasta 6 intentos. Tras 5 entregas fallidas consecutivas, el endpoint se desactiva automáticamente y se avisa a su propietario.
Errores
Todos los errores comparten una misma estructura. El request_id se devuelve en cada error; indícalo en tus solicitudes de soporte.
{ "error": "scope_required", "message": "…", "request_id": "req_ab12…", "scope": "orders.read" }
| HTTP | error | Significado |
|---|---|---|
| 400 | invalid_request | Malformed or missing parameters. |
| 401 | unauthorized / invalid_key | No or invalid credential. |
| 402 | card_declined / authentication_required | Payment failed or needs SCA. |
| 403 | scope_required | The key lacks the endpoint's scope. |
| 403 | access_not_granted | Restricted scope not yet approved for this account. |
| 403 | csrf_required | Session write without a valid X-CSRF-Token. |
| 404 | not_found | No such endpoint or resource. |
| 405 | method_not_allowed | Wrong HTTP verb. |
| 409 | request_in_progress | An idempotency key's first request is still in flight. |
| 422 | idempotency_key_reused | Same idempotency key, different parameters. |
| 422 | contact_incomplete | GA zones: add a registrant contact under /account/contacts first. |
| 423 | account_locked | Account is locked — contact support. |
| 429 | rate_limited | Slow down; see the Retry-After header. |
| 500 | server_error | Our fault. |
Acceso restringido
Los endpoints de zone-file, premium y registrados requieren una concesión aprobada además del ámbito:
- Crea (o ten ya) una clave de API que incluya el ámbito restringido.
- En la configuración de tu cuenta, abre Acceso restringido a la API, elige el ámbito y explica cómo usarás los datos.
- Nuestro equipo lo revisa y te envía una decisión por correo electrónico.
- Una vez aprobado, cualquier clave de tu cuenta que incluya ese ámbito podrá usarlo de inmediato. Sin nivel de pago: la aprobación es por cuenta.