Desarrolladores

domain.latino API

Una API HTTP estable y versionada para comprobar la disponibilidad de dominios .latino, buscar en el catálogo curado, realizar reservas anticipadas con una tarjeta guardada y gestionar tarjetas y webhooks. JSON de entrada, JSON de salida.

Descargar OpenAPI (JSON) Obtener una clave de API

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

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.

EventoDescripción
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

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" }
HTTPerrorSignificado
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.

Acceso restringido

Los endpoints de zone-file, premium y registrados requieren una concesión aprobada además del ámbito:

  1. Crea (o ten ya) una clave de API que incluya el ámbito restringido.
  2. En la configuración de tu cuenta, abre Acceso restringido a la API, elige el ámbito y explica cómo usarás los datos.
  3. Nuestro equipo lo revisa y te envía una decisión por correo electrónico.
  4. 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.

Obtener una clave de API Descargar OpenAPI (JSON)