---
title: "Create in Google Ads"
method: POST
path: "/campaigns/{campaignId}/google-ads"
tags: ["Google Ads"]
---

# Create in Google Ads

`POST /campaigns/{campaignId}/google-ads`

## Request

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

Creates the campaign in Google Ads, paused, exactly as the campaign page does. Nothing spends until someone turns it on in Google Ads. Targeting goes over when the app syncs.

Scope: `google-ads:write`.

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

## Path parameters

- `campaignId` string, required

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `customerId` string: The account to create it in. Defaults to the campaign's account.

## Response `201`

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.
- `402`: The workspace's plan doesn't include this.
- `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.
- `502`: Google Ads didn't answer as expected. The message says whether anything changed.

## Changes

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

[Operation history](https://skmtc.dev/skilledstars/apis/super-fans-enterprise-api/changes/campaigns/:campaignId/google-ads/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)
