---
title: "List ad sets"
method: GET
path: "/v1/ads/ad-sets"
tags: ["Ad Campaigns"]
---

# List ad sets

`GET /v1/ads/ad-sets`

Ad sets (Google ad groups) synced for the connection, optionally
filtered by platform and campaignId. Reads the `ad_sets` table
directly, independent of the `ads` rollup GET /v1/ads/tree uses, so a
newly created standalone ad group with no ad yet (POST /v1/ads/ad-sets,
Google only) is visible here even though it is invisible in the tree
until an ad joins it via `adSetId` on POST /v1/ads/create. Returns at most 500
rows, newest first.

## Query parameters

- `accountId` string
- `campaignId` string
- `platform` 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai'

## Response `200`

Ad sets

- object
  - `adSets` object[]
    - `platformAdSetId` string
    - `platform` string
    - `adSetName` string, nullable
    - `status` string, nullable
    - `platformAdSetStatus` string, nullable
    - `platformCampaignId` string, nullable
    - `platformAdAccountId` string
    - `accountId` string, nullable
    - `profileId` string
    - `currency` string, nullable
    - `budget` object, nullable
      - `amount` number
      - `type` 'daily' | 'lifetime'
      - `daily` number — LinkedIn only. The campaign's `dailyBudget`. LinkedIn allows a daily AND a lifetime budget on the same campaign, which `amount`/`type` cannot express (daily wins there); read `daily` and `lifetime` to see both.
      - `lifetime` number — LinkedIn only. The campaign's `totalBudget`, readable even when a daily budget is also set.
      - `pacing` string — LinkedIn only. The campaign's `pacingStrategy`: how fast LinkedIn may spend the budget. Typically LINEAR or ACCELERATED; the list is open.
    - `schedule` object, nullable — The ad set's own flight dates, as synced from the platform. On LinkedIn this is the campaign's `runSchedule`. Null when the platform reports none.
      - `startDate` string, date-time
      - `endDate` string, date-time — Absent when the ad set runs until it is stopped.
    - `targeting` object, nullable — The audience this ad set delivers to, as the platform reports it. LinkedIn only today; null for every other platform and for LinkedIn ad sets not yet re-synced. `include` and `exclude` are the campaign's `targetingCriteria` verbatim, so they can be read, edited and sent back without reconstructing them from our normalized targeting spec. Exclusions were previously not readable at all.
      - `include` object — LinkedIn `targetingCriteria.include`, verbatim (an `and` of `or` facet clauses).
      - `exclude` object — LinkedIn `targetingCriteria.exclude`, verbatim. Absent when the campaign excludes nothing.
      - `audienceExpansionEnabled` boolean — LinkedIn audience expansion: whether LinkedIn may also serve to members similar to the criteria.
      - `offsiteDeliveryEnabled` boolean — Whether the campaign may deliver on the LinkedIn Audience Network, off LinkedIn itself.
    - `isExternal` boolean, nullable
    - `platformCreatedAt` string, date-time, nullable

## Other responses

- `400` — Invalid request
- `401` — Unauthorized
- `403` — Ads access required (Ads add-on on legacy plans, included on usage-based plans).

## Changes

- **2026-09-21** `339f59df69dd` — 7 info
  - added the optional property `adSets/items/budget/amount` to the response with the `200` status
  - added the optional property `adSets/items/budget/daily` to the response with the `200` status
  - added the optional property `adSets/items/budget/lifetime` to the response with the `200` status
  - added the optional property `adSets/items/budget/pacing` to the response with the `200` status
  - …3 more
- **2026-09-16** `3e6ddf2a99ea` — 1 info
  - added the optional property `details/budgetScope` to the response with the `400` status
- **2026-09-15** `0dba7d004d75` — 2 info
  - added the optional property `details/quotaExhausted` to the response with the `400` status
  - added the optional property `details/quotaScope` to the response with the `400` status
- **2026-09-08** `d7a8fa118ef0` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/zernio/apis/zernio-api/changes/v1/ads/ad-sets/get.md)

---

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