Grupos
Un grupo es a quién se muestra la campaña: sus lugares (países, subdivisiones ISO 3166-2 y ciudades, para incluir o excluir), idiomas y, en Google, sus palabras clave o temas; en Meta, sus intereses, ubicaciones, edades y públicos. Las regiones y las ubicaciones valen para toda la campaña: el primer grupo las fija y los demás nombran las mismas o las omiten. Sin
demographics
ni
placements
, la red optimiza sola. Un grupo puede crear su campaña en la misma solicitud (
ad_campaign
).
Listar grupos#
/api/v1/ad_groups
Bearer
De la más antigua a la más reciente, por páginas:
limit
(1 a 100, 25 por defecto) y
after
(el
next_cursor
de la página anterior).
ad_campaign_id
string
Solo los grupos de esta campaña.
status
string
active
o
paused
.
limit
integer
Cuántos por página, de 1 a 100.
after
string
El
next_cursor
de la página anterior.
Devuelve
·
200
con la lista (
data
,
has_more
,
next_cursor
) ·
422
con un filtro inválido.
curl "https://edge.datil.com/api/v1/ad_groups" \
-H "Authorization: Bearer $DATIL_API_KEY"
{
"object": "list",
"data": [
{
"id": "2a3b4c5d-6e7f-4a8b-9c0d-1e2f3a4b5c6d",
"object": "ad_group",
"ad_campaign": {
"id": "3b4c5d6e-7f8a-4b9c-8d0e-2f3a4b5c6d7e"
},
"title": "Ecuador · contadores",
"platform": "meta",
"status": "active",
"delivery_status": "processing",
"issues": [],
"conversion_location": "website",
"budget_type": null,
"budget_amount": null,
"budget_amount_local": null,
"budget_currency": "USD",
"budget_local_currency": "USD",
"regions": {
"include": [
"EC"
],
"exclude": []
},
"languages": [
"es"
],
"google": null,
"meta": {
"interests": [
{
"id": "6003107902433",
"name": "Contabilidad"
}
],
"placements": [],
"demographics": {
"age_min": 25,
"age_max": 55,
"genders": "all"
},
"audiences": {
"include": [],
"exclude": []
}
},
"metrics": {
"window_days": 30,
"impressions": 12480,
"clicks": 311,
"spend": "74.20",
"conversions": 9.0,
"conversion_value": "180.00",
"roas": 2.43,
"reach": 8400,
"frequency": 1.49,
"unique_clicks": 280,
"ctr": 0.0249,
"cpc": "0.24",
"cpm": "5.95",
"cpa": "8.24",
"events": [
{
"name": "purchase",
"count": 9,
"value": "180.00"
}
],
"reached_people": 640
},
"created_at": "2026-09-27T14:03:01Z",
"updated_at": "2026-09-27T14:03:01Z"
}
],
"has_more": false,
"next_cursor": null
}
Crear un grupo#
/api/v1/ad_groups
Bearer
Agrega un grupo a una campaña (
ad_campaign_id
) o crea la campaña con él (
ad_campaign
), en una transacción.
Content-Type: application/json
title
string
requerido
El nombre del grupo, hasta 60 caracteres.
ad_campaign_id
string
La campaña del grupo.
ad_campaign
objeto
O la campaña nueva, con el cuerpo de
POST /ad_campaigns
.
status
string
Por defecto
active
.
activepaused
conversion_location
string
Dónde ocurre la conversión: el sitio.
website
budget_amount
string
El presupuesto en USD, cuando el grupo lo tiene.
budget_amount_local
string
El presupuesto en la moneda de la cuenta.
budget_type
string
Diario o total.
dailylifetime
regions
objeto
include
y
exclude
: códigos ISO 3166-1 de país y ISO 3166-2 de subdivisión (
["EC", "EC-P"]
), o un objeto con
countries
,
subdivisions
(códigos o
{name, country}
) y
cities
(
{name, country}
). Cada lugar se resuelve en la red de la campaña; uno que la red no conoce responde
400 unknown_location
con cómo nombrarlo (
GET /ad_groups/targeting_search?type=location
).
languages
array
Códigos ISO 639-1 (
["es"]
).
google
objeto
Google:
keywords
(
[{text, match_type}]
,
exact
/
phrase
/
broad
) para Search,
themes
para Demand Gen,
negative_keywords
.
meta
objeto
Meta:
interests
(
[{id, name}]
de la búsqueda de segmentación),
placements
(
facebook_feed
,
instagram_feed
,
stories
,
reels
,
audience_network
),
demographics
(
age_min
,
age_max
,
genders
),
audiences
(
include
,
exclude
: ids de públicos).
Devuelve
·
201
con el grupo ·
400 budget_level
con el presupuesto en el nivel equivocado ·
400 regions_mismatch
·
400 network_not_connected
·
422
con
errors
.
curl -X POST https://edge.datil.com/api/v1/ad_groups \
-H "Authorization: Bearer $DATIL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Ecuador · contadores",
"ad_campaign_id": "3b4c5d6e-7f8a-4b9c-8d0e-2f3a4b5c6d7e",
"regions": {
"include": {
"countries": [
"EC"
]
}
},
"languages": [
"es"
],
"meta": {
"interests": [
{
"id": "6003107902433",
"name": "Contabilidad"
}
],
"demographics": {
"age_min": 25,
"age_max": 55,
"genders": "all"
}
}
}'
{
"id": "2a3b4c5d-6e7f-4a8b-9c0d-1e2f3a4b5c6d",
"object": "ad_group",
"ad_campaign": {
"id": "3b4c5d6e-7f8a-4b9c-8d0e-2f3a4b5c6d7e"
},
"title": "Ecuador · contadores",
"platform": "meta",
"status": "active",
"delivery_status": "processing",
"issues": [],
"conversion_location": "website",
"budget_type": null,
"budget_amount": null,
"budget_amount_local": null,
"budget_currency": "USD",
"budget_local_currency": "USD",
"regions": {
"include": [
"EC"
],
"exclude": []
},
"languages": [
"es"
],
"google": null,
"meta": {
"interests": [
{
"id": "6003107902433",
"name": "Contabilidad"
}
],
"placements": [],
"demographics": {
"age_min": 25,
"age_max": 55,
"genders": "all"
},
"audiences": {
"include": [],
"exclude": []
}
},
"metrics": {
"window_days": 30,
"impressions": 12480,
"clicks": 311,
"spend": "74.20",
"conversions": 9.0,
"conversion_value": "180.00",
"roas": 2.43,
"reach": 8400,
"frequency": 1.49,
"unique_clicks": 280,
"ctr": 0.0249,
"cpc": "0.24",
"cpm": "5.95",
"cpa": "8.24",
"events": [
{
"name": "purchase",
"count": 9,
"value": "180.00"
}
],
"reached_people": 640
},
"created_at": "2026-09-27T14:03:01Z",
"updated_at": "2026-09-27T14:03:01Z"
}
Consultar un grupo#
/api/v1/ad_groups/:id
Bearer
Un objeto de tu organización, con su estado de entrega.
id
string
requerido
El
id
del objeto.
Devuelve
·
200
con el objeto ·
404 not_found
para uno que no es de tu organización.
curl "https://edge.datil.com/api/v1/ad_groups/7b0f6a52-3c1e-4d7e-9a57-0c1f5c2e9b10" \
-H "Authorization: Bearer $DATIL_API_KEY"
{
"id": "2a3b4c5d-6e7f-4a8b-9c0d-1e2f3a4b5c6d",
"object": "ad_group",
"ad_campaign": {
"id": "3b4c5d6e-7f8a-4b9c-8d0e-2f3a4b5c6d7e"
},
"title": "Ecuador · contadores",
"platform": "meta",
"status": "active",
"delivery_status": "processing",
"issues": [],
"conversion_location": "website",
"budget_type": null,
"budget_amount": null,
"budget_amount_local": null,
"budget_currency": "USD",
"budget_local_currency": "USD",
"regions": {
"include": [
"EC"
],
"exclude": []
},
"languages": [
"es"
],
"google": null,
"meta": {
"interests": [
{
"id": "6003107902433",
"name": "Contabilidad"
}
],
"placements": [],
"demographics": {
"age_min": 25,
"age_max": 55,
"genders": "all"
},
"audiences": {
"include": [],
"exclude": []
}
},
"metrics": {
"window_days": 30,
"impressions": 12480,
"clicks": 311,
"spend": "74.20",
"conversions": 9.0,
"conversion_value": "180.00",
"roas": 2.43,
"reach": 8400,
"frequency": 1.49,
"unique_clicks": 280,
"ctr": 0.0249,
"cpc": "0.24",
"cpm": "5.95",
"cpa": "8.24",
"events": [
{
"name": "purchase",
"count": 9,
"value": "180.00"
}
],
"reached_people": 640
},
"created_at": "2026-09-27T14:03:01Z",
"updated_at": "2026-09-27T14:03:01Z"
}
Cambiar un grupo#
/api/v1/ad_groups/:id
Bearer
Cambia su nombre, su segmentación, su presupuesto o su estado.
Content-Type: application/json
id
string
requerido
El
id
del grupo.
title
string
requerido
El nombre del grupo, hasta 60 caracteres.
status
string
Por defecto
active
.
activepaused
conversion_location
string
Dónde ocurre la conversión: el sitio.
website
budget_amount
string
El presupuesto en USD, cuando el grupo lo tiene.
budget_amount_local
string
El presupuesto en la moneda de la cuenta.
budget_type
string
Diario o total.
dailylifetime
regions
objeto
include
y
exclude
: códigos ISO 3166-1 de país y ISO 3166-2 de subdivisión (
["EC", "EC-P"]
), o un objeto con
countries
,
subdivisions
(códigos o
{name, country}
) y
cities
(
{name, country}
). Cada lugar se resuelve en la red de la campaña; uno que la red no conoce responde
400 unknown_location
con cómo nombrarlo (
GET /ad_groups/targeting_search?type=location
).
languages
array
Códigos ISO 639-1 (
["es"]
).
google
objeto
Google:
keywords
(
[{text, match_type}]
,
exact
/
phrase
/
broad
) para Search,
themes
para Demand Gen,
negative_keywords
.
meta
objeto
Meta:
interests
(
[{id, name}]
de la búsqueda de segmentación),
placements
(
facebook_feed
,
instagram_feed
,
stories
,
reels
,
audience_network
),
demographics
(
age_min
,
age_max
,
genders
),
audiences
(
include
,
exclude
: ids de públicos).
Devuelve
·
200
con el grupo ·
400
por una regla de la campaña ·
422
con
errors
.
curl -X PATCH https://edge.datil.com/api/v1/ad_groups/7b0f6a52-3c1e-4d7e-9a57-0c1f5c2e9b10 \
-H "Authorization: Bearer $DATIL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"google": {
"keywords": [
{
"text": "firma electrónica",
"match_type": "phrase"
}
]
}
}'
{
"id": "2a3b4c5d-6e7f-4a8b-9c0d-1e2f3a4b5c6d",
"object": "ad_group",
"ad_campaign": {
"id": "3b4c5d6e-7f8a-4b9c-8d0e-2f3a4b5c6d7e"
},
"title": "Ecuador · contadores",
"platform": "meta",
"status": "active",
"delivery_status": "processing",
"issues": [],
"conversion_location": "website",
"budget_type": null,
"budget_amount": null,
"budget_amount_local": null,
"budget_currency": "USD",
"budget_local_currency": "USD",
"regions": {
"include": [
"EC"
],
"exclude": []
},
"languages": [
"es"
],
"google": null,
"meta": {
"interests": [
{
"id": "6003107902433",
"name": "Contabilidad"
}
],
"placements": [],
"demographics": {
"age_min": 25,
"age_max": 55,
"genders": "all"
},
"audiences": {
"include": [],
"exclude": []
}
},
"metrics": {
"window_days": 30,
"impressions": 12480,
"clicks": 311,
"spend": "74.20",
"conversions": 9.0,
"conversion_value": "180.00",
"roas": 2.43,
"reach": 8400,
"frequency": 1.49,
"unique_clicks": 280,
"ctr": 0.0249,
"cpc": "0.24",
"cpm": "5.95",
"cpa": "8.24",
"events": [
{
"name": "purchase",
"count": 9,
"value": "180.00"
}
],
"reached_people": 640
},
"created_at": "2026-09-27T14:03:01Z",
"updated_at": "2026-09-27T14:03:01Z"
}
Eliminar un grupo#
/api/v1/ad_groups/:id
Bearer
El grupo se pausa y se retira de la red (su grupo de anuncios en Google,
REMOVED
; su conjunto en Meta,
DELETED
) con sus anuncios; queda en el registro.
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_groups/7b0f6a52-3c1e-4d7e-9a57-0c1f5c2e9b10 \
-H "Authorization: Bearer $DATIL_API_KEY"
{
"id": "3b4c5d6e-7f8a-4b9c-8d0e-2f3a4b5c6d7e",
"object": "ad_campaign",
"deleted": true
}
Pausar un grupo#
/api/v1/ad_groups/:id/pause
Bearer
Pausa sus anuncios publicados y los recuerda.
Content-Type: application/json
id
string
requerido
El
id
del objeto.
Devuelve
·
200
con el objeto ·
400
por una regla de lanzamiento ·
404
·
409
por su estado.
curl -X POST https://edge.datil.com/api/v1/ad_groups/7b0f6a52-3c1e-4d7e-9a57-0c1f5c2e9b10/pause \
-H "Authorization: Bearer $DATIL_API_KEY"
{
"id": "2a3b4c5d-6e7f-4a8b-9c0d-1e2f3a4b5c6d",
"object": "ad_group",
"ad_campaign": {
"id": "3b4c5d6e-7f8a-4b9c-8d0e-2f3a4b5c6d7e"
},
"title": "Ecuador · contadores",
"platform": "meta",
"status": "active",
"delivery_status": "processing",
"issues": [],
"conversion_location": "website",
"budget_type": null,
"budget_amount": null,
"budget_amount_local": null,
"budget_currency": "USD",
"budget_local_currency": "USD",
"regions": {
"include": [
"EC"
],
"exclude": []
},
"languages": [
"es"
],
"google": null,
"meta": {
"interests": [
{
"id": "6003107902433",
"name": "Contabilidad"
}
],
"placements": [],
"demographics": {
"age_min": 25,
"age_max": 55,
"genders": "all"
},
"audiences": {
"include": [],
"exclude": []
}
},
"metrics": {
"window_days": 30,
"impressions": 12480,
"clicks": 311,
"spend": "74.20",
"conversions": 9.0,
"conversion_value": "180.00",
"roas": 2.43,
"reach": 8400,
"frequency": 1.49,
"unique_clicks": 280,
"ctr": 0.0249,
"cpc": "0.24",
"cpm": "5.95",
"cpa": "8.24",
"events": [
{
"name": "purchase",
"count": 9,
"value": "180.00"
}
],
"reached_people": 640
},
"created_at": "2026-09-27T14:03:01Z",
"updated_at": "2026-09-27T14:03:01Z"
}
Reanudar un grupo#
/api/v1/ad_groups/:id/unpause
Bearer
Vuelve a aprobar los anuncios que su pausa retuvo.
Content-Type: application/json
id
string
requerido
El
id
del objeto.
Devuelve
·
200
con el objeto ·
400
por una regla de lanzamiento ·
404
·
409
por su estado.
curl -X POST https://edge.datil.com/api/v1/ad_groups/7b0f6a52-3c1e-4d7e-9a57-0c1f5c2e9b10/unpause \
-H "Authorization: Bearer $DATIL_API_KEY"
{
"id": "2a3b4c5d-6e7f-4a8b-9c0d-1e2f3a4b5c6d",
"object": "ad_group",
"ad_campaign": {
"id": "3b4c5d6e-7f8a-4b9c-8d0e-2f3a4b5c6d7e"
},
"title": "Ecuador · contadores",
"platform": "meta",
"status": "active",
"delivery_status": "processing",
"issues": [],
"conversion_location": "website",
"budget_type": null,
"budget_amount": null,
"budget_amount_local": null,
"budget_currency": "USD",
"budget_local_currency": "USD",
"regions": {
"include": [
"EC"
],
"exclude": []
},
"languages": [
"es"
],
"google": null,
"meta": {
"interests": [
{
"id": "6003107902433",
"name": "Contabilidad"
}
],
"placements": [],
"demographics": {
"age_min": 25,
"age_max": 55,
"genders": "all"
},
"audiences": {
"include": [],
"exclude": []
}
},
"metrics": {
"window_days": 30,
"impressions": 12480,
"clicks": 311,
"spend": "74.20",
"conversions": 9.0,
"conversion_value": "180.00",
"roas": 2.43,
"reach": 8400,
"frequency": 1.49,
"unique_clicks": 280,
"ctr": 0.0249,
"cpc": "0.24",
"cpm": "5.95",
"cpa": "8.24",
"events": [
{
"name": "purchase",
"count": 9,
"value": "180.00"
}
],
"reached_people": 640
},
"created_at": "2026-09-27T14:03:01Z",
"updated_at": "2026-09-27T14:03:01Z"
}
Buscar segmentación#
/api/v1/ad_groups/targeting_search
Bearer
Los intereses que Meta puede segmentar para una búsqueda, o las palabras clave que el Planificador de Google sugiere, con sus búsquedas mensuales; con
type: location
, los lugares que cada red conoce (regiones y ciudades de Meta, constantes geográficas de Google), para nombrarlos en
regions
. Lee la cuenta de la organización; no escribe nada.
platform
string
requerido
google
o
meta
.
q
string
requerido
Lo que buscas.
type
string
location
busca lugares; sin él, intereses o palabras clave.
location
country
string
El país (ISO 3166-1) de las búsquedas o de los lugares (
EC
por defecto en Google).
Devuelve
·
200
con la lista ·
400 network_not_connected
·
422
sin
platform
o
q
.
curl "https://edge.datil.com/api/v1/ad_groups/targeting_search" \
-H "Authorization: Bearer $DATIL_API_KEY"
{
"object": "list",
"data": [
{
"type": "interest",
"id": "6003107902433",
"name": "Contabilidad",
"audience_low": 1200000,
"audience_high": 1400000,
"path": [
"Negocios"
]
}
]
}
Estimar el alcance#
/api/v1/ad_groups/reach_estimate
Bearer
Cuántas personas alcanzaría un grupo en Meta en un mes, o cuántas búsquedas mensuales tienen sus palabras clave en Google. Recibe el cuerpo de un grupo y
platform
; no crea nada.
Content-Type: application/json
platform
string
requerido
google
o
meta
.
conversion_location
string
Dónde ocurre la conversión: el sitio.
website
budget_amount
string
El presupuesto en USD, cuando el grupo lo tiene.
budget_amount_local
string
El presupuesto en la moneda de la cuenta.
budget_type
string
Diario o total.
dailylifetime
regions
objeto
include
y
exclude
: códigos ISO 3166-1 de país y ISO 3166-2 de subdivisión (
["EC", "EC-P"]
), o un objeto con
countries
,
subdivisions
(códigos o
{name, country}
) y
cities
(
{name, country}
). Cada lugar se resuelve en la red de la campaña; uno que la red no conoce responde
400 unknown_location
con cómo nombrarlo (
GET /ad_groups/targeting_search?type=location
).
languages
array
Códigos ISO 639-1 (
["es"]
).
google
objeto
Google:
keywords
(
[{text, match_type}]
,
exact
/
phrase
/
broad
) para Search,
themes
para Demand Gen,
negative_keywords
.
meta
objeto
Meta:
interests
(
[{id, name}]
de la búsqueda de segmentación),
placements
(
facebook_feed
,
instagram_feed
,
stories
,
reels
,
audience_network
),
demographics
(
age_min
,
age_max
,
genders
),
audiences
(
include
,
exclude
: ids de públicos).
Devuelve
·
200
con la estimación ·
400 network_not_connected
·
422
con
errors
.
curl -X POST https://edge.datil.com/api/v1/ad_groups/reach_estimate \
-H "Authorization: Bearer $DATIL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"platform": "meta",
"regions": {
"include": [
"EC"
]
},
"meta": {
"interests": [
{
"id": "6003107902433",
"name": "Contabilidad"
}
]
}
}'
{
"object": "reach_estimate",
"platform": "meta",
"audience_low": 410000,
"audience_high": 480000,
"ready": true
}