Documentación

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#

GET /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).

Parámetros

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
curl "https://edge.datil.com/api/v1/ad_groups" \
  -H "Authorization: Bearer $DATIL_API_KEY"
Respuesta · 200
{
  "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#

POST /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

Cuerpo de la solicitud

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
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"
    }
  }
}'
Respuesta · 201
{
  "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#

GET /api/v1/ad_groups/:id Bearer

Un objeto de tu organización, con su estado de entrega.

Parámetros

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
curl "https://edge.datil.com/api/v1/ad_groups/7b0f6a52-3c1e-4d7e-9a57-0c1f5c2e9b10" \
  -H "Authorization: Bearer $DATIL_API_KEY"
Respuesta · 200
{
  "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#

PATCH /api/v1/ad_groups/:id Bearer

Cambia su nombre, su segmentación, su presupuesto o su estado.

Content-Type: application/json

Parámetros

id string requerido

El id del grupo.

Cuerpo de la solicitud

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
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"
      }
    ]
  }
}'
Respuesta · 200
{
  "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#

DELETE /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.

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_groups/7b0f6a52-3c1e-4d7e-9a57-0c1f5c2e9b10 \
  -H "Authorization: Bearer $DATIL_API_KEY"
Respuesta · 200
{
  "id": "3b4c5d6e-7f8a-4b9c-8d0e-2f3a4b5c6d7e",
  "object": "ad_campaign",
  "deleted": true
}

Pausar un grupo#

POST /api/v1/ad_groups/:id/pause Bearer

Pausa sus anuncios publicados y los recuerda.

Content-Type: application/json

Parámetros

id string requerido

El id del objeto.

Devuelve · 200 con el objeto · 400 por una regla de lanzamiento · 404 · 409 por su estado.

cURL
curl -X POST https://edge.datil.com/api/v1/ad_groups/7b0f6a52-3c1e-4d7e-9a57-0c1f5c2e9b10/pause \
  -H "Authorization: Bearer $DATIL_API_KEY"
Respuesta · 200
{
  "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#

POST /api/v1/ad_groups/:id/unpause Bearer

Vuelve a aprobar los anuncios que su pausa retuvo.

Content-Type: application/json

Parámetros

id string requerido

El id del objeto.

Devuelve · 200 con el objeto · 400 por una regla de lanzamiento · 404 · 409 por su estado.

cURL
curl -X POST https://edge.datil.com/api/v1/ad_groups/7b0f6a52-3c1e-4d7e-9a57-0c1f5c2e9b10/unpause \
  -H "Authorization: Bearer $DATIL_API_KEY"
Respuesta · 200
{
  "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#

GET /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.

Parámetros

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
curl "https://edge.datil.com/api/v1/ad_groups/targeting_search" \
  -H "Authorization: Bearer $DATIL_API_KEY"
Respuesta · 200
{
  "object": "list",
  "data": [
    {
      "type": "interest",
      "id": "6003107902433",
      "name": "Contabilidad",
      "audience_low": 1200000,
      "audience_high": 1400000,
      "path": [
        "Negocios"
      ]
    }
  ]
}

Estimar el alcance#

POST /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

Cuerpo de la solicitud

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
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"
      }
    ]
  }
}'
Respuesta · 200
{
  "object": "reach_estimate",
  "platform": "meta",
  "audience_low": 410000,
  "audience_high": 480000,
  "ready": true
}
Sin conexión — reintentando…

Esenciales

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

Siempre activas