---
title: "Add an audience to a campaign"
method: POST
path: "/campaigns/{campaignId}/audiences"
tags: ["Campaigns"]
---

# Add an audience to a campaign

`POST /campaigns/{campaignId}/audiences`

## Request

- Base URL: `https://www.fandom.ai/api/v1`
- URL: `https://www.fandom.ai/api/v1/campaigns/{campaignId}/audiences`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/skilledstars/apis/super-fans-enterprise-api/docs/campaigns/:campaignId/audiences/post.ts> (a function with typed inputs; its response is checked against the schema)

Attaches a saved audience and, by default, starts generating its targeting.

Scope: `campaigns:write`.

Send an `Idempotency-Key` header to make retries safe.

## Path parameters

- `campaignId` string, required

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `audienceId` string, required: Audience id.
  - `generateTargeting` boolean: Start generating targeting now. Default true.

## Response `200`

Success

- object
  - `id` string, required
  - `name` string, required
  - `status` string, required: `draft`, `loading` (collecting data), `ready` or `error`.
  - `objective` string, required
  - `brandId` string, nullable, required
  - `brand` object, required
    - `name` string, required
    - `website` string, required
    - `description` string, required
  - `industry` string, required
  - `language` string, required
  - `locations` string[], required
  - `successMetrics` string[], required
  - `campaignType` string, nullable, required
  - `budget` number, nullable, required: In the account's currency.
  - `budgetType` 'daily' | 'total', nullable, required
  - `endDate` string, nullable, required
  - `biddingStrategy` string, nullable, required
  - `targetCpa` number, nullable, required
  - `targetRoas` number, nullable, required
  - `audiences` object[], required
    - `id` string, required: This audience's slot on the campaign. Stable; use it for targeting.
    - `name` string, required
    - `audienceId` string, nullable, required: The saved audience, or null for the campaign's own primary audience.
    - `dataStoreIds` string[], required
  - `googleAds` object, required
    - `customerId` string, nullable, required
    - `accountName` string, nullable, required
    - `campaignId` string, nullable, required: Set once the campaign exists in Google Ads.
    - `status` string, nullable, required
  - `url` string, required: Opens the campaign in Fandom.
  - `createdAt` string, nullable, required
  - `updatedAt` string, nullable, required

## Other responses

- `400`: The request is missing something or has a bad value. The message says what.
- `401`: No API key, or the key is wrong or revoked.
- `403`: The key doesn't have the scope, or isn't allowed this campaign or account.
- `404`: Nothing with that id in this workspace.
- `409`: The current state doesn't allow this (for example, it's already done or still generating).
- `429`: More than 120 requests in a minute. Wait and retry.

## Changes

- **2026-10-07** `dfe5b1c3d84f`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/skilledstars/apis/super-fans-enterprise-api/changes/campaigns/:campaignId/audiences/post.md)

---

[API](https://skmtc.dev/skilledstars/apis/super-fans-enterprise-api.md) - [All operations](https://skmtc.dev/skilledstars/apis/super-fans-enterprise-api/llms.txt) - [OpenAPI document](https://skmtc.dev/skilledstars/apis/super-fans-enterprise-api/revisions/6c1a68a75970?raw)
