> ## Documentation Index
> Fetch the complete documentation index at: https://vetta.sh/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# ads

> Paused-first paid campaign operations — client.ads.

The SDK exposes the [paid advertising primitive](/docs/api/ads) through `client.ads`. A connected Google
Ads account pays media charges directly; Naive credits are not a media wallet.

## createSearchCampaign

```ts theme={"system"}
const campaign = await client.ads.createSearchCampaign({
  provider: "google",
  connection_id: connectionId,
  customer_id: "1234567890",
  name: "Founder Frame launch",
  final_url: "https://founderframehq.com/",
  budget_micro_usd: 50_000_000,
  cpc_ceiling_micro_usd: 4_000_000,
  start_date: "2026-10-01",
  end_date: "2026-10-08",
  keywords: ["b2b content agency"],
  headlines: ["Content That Earns Attention", "Founder Frame", "B2B Content Systems"],
  descriptions: ["Turn expert insight into demand.", "Build a repeatable content engine."],
})
// campaign.status === "paused"
```

This call is live-key-only and idempotent. It creates enabled children behind one paused campaign,
so the campaign is complete but cannot spend before activation.

## listCampaigns and insights

```ts theme={"system"}
const account = { connection_id: connectionId, customer_id: "1234567890" }
const campaigns = await client.ads.listCampaigns(account)
const results = await client.ads.insights(campaign.id, account)
```

Both are live provider reads. `results.spend_micro_usd` is external media spend reported by the ad
account.

## activate and pause

```ts theme={"system"}
await client.ads.activate(campaign.id, {
  ...account,
  acknowledge_external_spend: true,
})

await client.ads.pause(campaign.id, account)
```

Activation can incur external charges and makes the acknowledgement part of the TypeScript type.
It is limited to campaigns Naive created for the same connected account, and it rechecks the finite
provider budget, configured maximum, and end date before enabling. Pause remains available
independently.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.