---
title: "Start an AI campaign build"
method: POST
path: "/campaigns/build"
---

# Start an AI campaign build

`POST /campaigns/build`

## Request

- Base URL: `https://lazyads.ai/api/v1`
- URL: `https://lazyads.ai/api/v1/campaigns/build`
- Auth: HTTP bearer

Same options as the dashboard builder and MCP `build_ai_campaign`. One campaign is created per selected platform. Poll the returned `task_id` with `GET /campaigns/build/{taskId}`. Requires a Starter+ AI plan, completed onboarding, and a connected ad account.

## Request body

- object
  - `platform` 'meta' | 'google' | 'tiktok' | 'linkedin' | 'reddit' | 'apple' | 'bing' | 'chatgpt' | 'snapchat': Single platform. Prefer `platforms` for multi-platform builds.
  - `platforms` string[]
  - `dailyBudgetUsd` number
  - `skipCompetitorAnalysis` boolean
  - `confirmNotPolitical` boolean: LinkedIn EU political-advertising declaration.
  - `objectiveOverride` 'OUTCOME_AWARENESS' | 'OUTCOME_TRAFFIC' | 'OUTCOME_ENGAGEMENT' | 'OUTCOME_LEADS' | 'OUTCOME_SALES' | 'OUTCOME_APP_PROMOTION'
  - `preferredCreativeIds` string[]
  - `preferredPagePostId` string: Facebook Page post id (`PAGEID_POSTID`) to promote on Meta.
  - `socialContentIds` string[]
  - `referenceCreativeIds` string[]
  - `customInstructions` string
  - `creativeMix` 'ai_decide' | 'images_only' | 'videos_only' | 'images_and_videos' | 'existing': ai_decide (default) lets Lazy Ads pick the better-performing format and reuse winning library creatives. existing reuses the library only.

## Response `200`

A build is already running

## Other responses

- `201`: Build started (`task_id`, `campaign_id`, `builds`)
- `401`: Missing or invalid API key
- `403`: Plan does not include this endpoint, key lacks the scope, or agency access denied

---

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