---
title: "List campaigns"
method: GET
path: "/ads-management/v1/campaigns"
tags: ["Advertising"]
---

# List campaigns

`GET /ads-management/v1/campaigns`

Lists the campaigns in the caller's billing account. Campaigns are grouped by status (ACTIVE first, then PAUSED, then CANCELLED) and returned newest first within each group. Results are paginated with a cursor (pageToken); each page returns up to maxPageSize campaigns (default 50, max 100).

## Query parameters

- `maxPageSize` integer
- `pageToken` string

## Response `200`

OK

- InternalPublicV1ListCampaignsResponse
  - `campaigns` InternalPublicV1Campaign[] — The page of campaigns.
    - `bid` InternalPublicV1Bid
      - `strategy` 'AUTOMATED' — The bidding strategy. v1 campaigns are always `AUTOMATED`.
    - `billingAccountId` string — The billing account that owns and funds the campaign.
    - `budget` InternalPublicV1Budget
      - `amountMicros` string — The budget amount in micro-USD, as a decimal string (for example, `5000000` = $5.00). Money is sent and returned as a string so large values keep full precision in every client. On a request it must be a numeric string of micro-USD.
      - `scheduledAmountMicros` string — The queued lower budget for a pending decrease, in micro-USD as a decimal string (same format as amountMicros). A budget increase takes effect immediately, but a decrease on a running campaign is applied at the next midnight in the account's time zone; until then the campaign keeps serving on amountMicros (the current, higher budget). Omitted when no decrease is pending.
      - `scheduledEffectiveTime` string — The time a pending budget decrease takes effect, as an RFC 3339 UTC timestamp. Omitted when no decrease is pending.
      - `type` 'DAILY' | 'LIFETIME' — The budget cadence. Fixed when the campaign is created. Can be `DAILY` or `LIFETIME`.
    - `createTime` string — The time the campaign was created, as an RFC 3339 UTC timestamp.
    - `creativeAssetIds` string[] — The Open Cloud image asset IDs the campaign advertises, as decimal strings.
    - `deliveryStatus` 'SERVING' | 'IN_REVIEW' | 'NOT_SERVING' | 'REJECTED' — The current serving state, derived by the system (read-only). Can be `SERVING`, `IN_REVIEW`, `NOT_SERVING`, or `REJECTED`.
    - `deliveryStatusReasons` string[] — The reasons behind the current deliveryStatus, such as why a campaign is not serving or was rejected, or `LEARNING` while a serving campaign ramps up. Omitted when there are none.
    - `id` string — The server-assigned unique identifier of the campaign.
    - `name` string — The display name of the campaign.
    - `objective` 'ENGAGEMENT' — The advertising goal of the campaign. Only `ENGAGEMENT` is supported in v1.
    - `paymentType` 'CREDIT_CARD' | 'ADS_CREDIT' | 'INVOICE' — How the campaign is paid for. Fixed when the campaign is created. Can be `CREDIT_CARD`, `ADS_CREDIT`, or `INVOICE`.
    - `schedule` InternalPublicV1Schedule
      - `durationInDays` integer — How long the campaign runs from startTime, in days. Must not exceed 3650 (about 10 years).
      - `endTime` string — Not accepted in v1 and never returned; supplying it returns 400. Use durationInDays to set when the campaign ends. Reserved for a future objective.
      - `startTime` string — The time the campaign starts serving, as an RFC 3339 UTC timestamp. On a create request it must not be in the past.
    - `status` 'ACTIVE' | 'PAUSED' | 'CANCELLED' — The lifecycle state you control through update requests. Can be `ACTIVE`, `PAUSED`, or `CANCELLED`. `CANCELLED` is permanent.
    - `targetUniverseId` string — The identifier of the experience the campaign advertises.
    - `targeting` InternalPublicV1Targeting
      - `ageGroups` string[] — The age brackets to deliver to. Empty means all ages. Values can be `AGE_13_17`, `AGE_18_24`, or `AGE_25_PLUS`.
      - `countries` string[] — The ISO 3166-1 alpha-2 country codes to deliver to (for example, `US`). Empty means all countries.
      - `devices` string[] — The device types to deliver to. Empty means all devices. Values can be `PHONE`, `TABLET`, `DESKTOP`, or `CONSOLE`.
    - `updateTime` string — The time the campaign was last updated, as an RFC 3339 UTC timestamp.
  - `nextPageToken` string — The cursor for the next page. Pass it as pageToken to fetch the next page. Absent on the last page.

## Other responses

- `400` — Invalid maxPageSize or pageToken
- `403` — Permission denied
- `429` — Rate limit exceeded
- `500` — Internal server error

---

[API](https://skmtc.net/roblox/apis/roblox-api.md) · [All operations](https://skmtc.net/roblox/apis/roblox-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/roblox/roblox-api/revisions/80880b69892d/schema)
