Documentación

Cuenta publicitaria

Cómo paga tu organización sus anuncios —con su Saldo publicitario cuando Datil opera sus cuentas, o directamente a la red con cuentas propias—, si un pago falló, qué redes conectó, las cuentas sociales de sus anuncios de Meta y los webhooks de entrega: ad_campaign.updated , ad_group.updated , ad.updated (cambió delivery_status o se abrió o cerró un problema), ad_campaign.payment_failed y lead.created (alguien respondió un formulario), firmados con X-Datil-Signature: sha256=<HMAC del cuerpo> .

Consultar la cuenta#

GET /api/v1/ad_account Bearer

El saldo, cómo se paga, las redes conectadas, el píxel y launch : el primer paso que falta ( connect , fund , brand , mandate ) o live cuando ya puede anunciarse. Conectar una red, autorizar el mandato o pagar una recarga arranca ese ciclo al momento.

Devuelve · 200 con la cuenta.

cURL
curl "https://edge.datil.com/api/v1/ad_account" \
  -H "Authorization: Bearer $DATIL_API_KEY"
Respuesta · 200
{
  "object": "ad_account",
  "organization": "mi-socio",
  "billing": "ad_balance",
  "ad_balance": {
    "available": "120.00",
    "reserved": "30.00",
    "total": "150.00",
    "currency": "USD",
    "deposit_url": "https://datil.com/campaigns/balance?tenant=acme"
  },
  "payment_failed": false,
  "platforms": {
    "google": {
      "connected": true,
      "currency": "USD"
    },
    "meta": {
      "connected": true,
      "currency": "USD"
    }
  },
  "pixel": {
    "install_url": "https://datil.com/ads/pixel?tenant=acme"
  },
  "launch": {
    "status": "live",
    "ready": true
  }
}

Reintentar los pagos fallidos#

POST /api/v1/ad_account/retry_failed_payments Bearer

Encola una conciliación de tus campañas contra tu saldo actual; no confirma el pago. Las campañas activas vuelven a publicarse con saldo; las pausadas siguen pausadas.

Content-Type: application/json

Devuelve · 202 con el reintento encolado.

cURL
curl -X POST https://edge.datil.com/api/v1/ad_account/retry_failed_payments \
  -H "Authorization: Bearer $DATIL_API_KEY"
Respuesta · 202
{
  "object": "payment_retry",
  "queued": true,
  "payment_failed": false,
  "deposit_url": "https://datil.com/campaigns/balance?tenant=acme"
}

Listar cuentas sociales#

GET /api/v1/social_accounts Bearer

La página de Facebook y la cuenta de Instagram por las que hablan tus anuncios de Meta.

Devuelve · 200 con la lista.

cURL
curl "https://edge.datil.com/api/v1/social_accounts" \
  -H "Authorization: Bearer $DATIL_API_KEY"
Respuesta · 200
{
  "object": "list",
  "data": [
    {
      "id": "facebook:104012345678901",
      "platform": "facebook",
      "external_id": "104012345678901",
      "object": "social_account"
    }
  ],
  "has_more": false,
  "next_cursor": null
}

Listar webhooks#

GET /api/v1/ad_webhook_endpoints Bearer

Las direcciones que reciben los eventos de entrega de tu organización.

Devuelve · 200 con la lista.

cURL
curl "https://edge.datil.com/api/v1/ad_webhook_endpoints" \
  -H "Authorization: Bearer $DATIL_API_KEY"
Respuesta · 200
{
  "object": "list",
  "data": [
    {
      "id": "9b0c1d2e-3f4a-4b5c-9d6e-7f8a9b0c1d2e",
      "object": "webhook_endpoint",
      "url": "https://hooks.example.com/datil",
      "events": [
        "ad.updated",
        "ad_campaign.payment_failed"
      ],
      "active": true,
      "last_status": null,
      "last_delivered_at": null,
      "created_at": "2026-09-27T14:03:01Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}

Registrar un webhook#

POST /api/v1/ad_webhook_endpoints Bearer

Registra una dirección https externa. El secret firma cada evento y se muestra una sola vez.

Content-Type: application/json

Cuerpo de la solicitud

url string requerido

La dirección https.

events array

Los eventos que recibe; vacío, todos.

Devuelve · 201 con el webhook y su secret · 422 con errors .

cURL
curl -X POST https://edge.datil.com/api/v1/ad_webhook_endpoints \
  -H "Authorization: Bearer $DATIL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "url": "https://hooks.example.com/datil",
  "events": [
    "ad.updated",
    "ad_campaign.payment_failed"
  ]
}'
Respuesta · 201
{
  "id": "9b0c1d2e-3f4a-4b5c-9d6e-7f8a9b0c1d2e",
  "object": "webhook_endpoint",
  "url": "https://hooks.example.com/datil",
  "events": [
    "ad.updated",
    "ad_campaign.payment_failed"
  ],
  "active": true,
  "last_status": null,
  "last_delivered_at": null,
  "created_at": "2026-09-27T14:03:01Z",
  "secret": "whsec_3kJ9x2m1p8q4r7s0t5u6"
}

Eliminar un webhook#

DELETE /api/v1/ad_webhook_endpoints/:id Bearer

La dirección deja de recibir eventos.

Parámetros

id string requerido

El id del objeto.

Devuelve · 200 con deleted: true · 404 · 409 por su estado.

cURL
curl -X DELETE https://edge.datil.com/api/v1/ad_webhook_endpoints/7b0f6a52-3c1e-4d7e-9a57-0c1f5c2e9b10 \
  -H "Authorization: Bearer $DATIL_API_KEY"
Respuesta · 200
{
  "id": "3b4c5d6e-7f8a-4b9c-8d0e-2f3a4b5c6d7e",
  "object": "ad_campaign",
  "deleted": true
}
Sin conexión — reintentando…

Esenciales

Sesión, seguridad, idioma y tema. Sin ellas el sitio no funciona.

Siempre activas