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#
/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 "https://edge.datil.com/api/v1/ad_account" \
-H "Authorization: Bearer $DATIL_API_KEY"
{
"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#
/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 -X POST https://edge.datil.com/api/v1/ad_account/retry_failed_payments \
-H "Authorization: Bearer $DATIL_API_KEY"
{
"object": "payment_retry",
"queued": true,
"payment_failed": false,
"deposit_url": "https://datil.com/campaigns/balance?tenant=acme"
}
Listar webhooks#
/api/v1/ad_webhook_endpoints
Bearer
Las direcciones que reciben los eventos de entrega de tu organización.
Devuelve
·
200
con la lista.
curl "https://edge.datil.com/api/v1/ad_webhook_endpoints" \
-H "Authorization: Bearer $DATIL_API_KEY"
{
"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#
/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
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 -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"
]
}'
{
"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#
/api/v1/ad_webhook_endpoints/:id
Bearer
La dirección deja de recibir eventos.
id
string
requerido
El
id
del objeto.
Devuelve
·
200
con
deleted: true
·
404
·
409
por su estado.
curl -X DELETE https://edge.datil.com/api/v1/ad_webhook_endpoints/7b0f6a52-3c1e-4d7e-9a57-0c1f5c2e9b10 \
-H "Authorization: Bearer $DATIL_API_KEY"
{
"id": "3b4c5d6e-7f8a-4b9c-8d0e-2f3a4b5c6d7e",
"object": "ad_campaign",
"deleted": true
}