---
title: "Propone una campaña completa (hasta el anuncio) en Meta, Google o TikTok"
method: POST
path: "/api/v1/propose_campaign"
tags: ["Ads"]
---

# Propone una campaña completa (hasta el anuncio) en Meta, Google o TikTok

`POST /api/v1/propose_campaign`

## Request

- Base URL: `https://api.pymaia.com`
- URL: `https://api.pymaia.com/api/v1/propose_campaign`
- Auth: HTTP bearer

Propone una campaña completa (hasta el anuncio) en Meta, Google o TikTok. Queda PENDIENTE de aprobación y se crea PAUSADA. Meta alcanza con {name, objective, dailyBudget, linkUrl, title, body, imageUrl}: imageUrl https o la image_url de compose_static; el resto se completa. Para abrir WhatsApp: destination "whatsapp" + whatsappPhoneNumber, sin linkUrl. Google headlines/descriptions/keywords; TikTok identity + creatives. Devuelve el bundleId.

## Request body

- object
  - `platform` 'meta' | 'google' | 'tiktok', required
  - `spec` object, required: Campaign spec (shape depends on platform). dailyBudget in account currency units.
  - `brief_text` string: Campaign intent text (used for special-ad-category detection).
  - `estimated_reach` number
  - `declared_categories` string[]

## Response `200`

Tool executed successfully

- object
  - `ok` boolean
  - `result` unknown
  - `duration_ms` number

## Other responses

- `400`: Invalid params or handler error
- `401`: Missing or invalid Bearer token
- `403`: Missing required scope(s) (`denied_scope`), or the tool's module is disabled for the organization (`module_disabled`, with `why`, `fix` and `module`)
- `404`: Tool not found, internal-only, or excluded for OAuth connectors
- `429`: Rate limit exceeded

---

[API](https://skmtc.dev/pymaia/apis/pymaia-api.md) · [All operations](https://skmtc.dev/pymaia/apis/pymaia-api/llms.txt) · [OpenAPI document](https://skmtc.dev/pymaia/apis/pymaia-api/revisions/705a6973177b?raw)
