---
title: "Get a campaign"
method: GET
path: "/ads-management/v1/campaigns/{id}"
tags: ["Advertising"]
---

# Get a campaign

`GET /ads-management/v1/campaigns/{id}`

Returns a single campaign, including its status (the lifecycle state you control: ACTIVE, PAUSED, or CANCELLED) and its deliveryStatus (whether it is currently serving: SERVING, IN_REVIEW, NOT_SERVING, or REJECTED). deliveryStatusReasons lists any reasons that affect delivery — for example why a campaign is not serving or was rejected, or that a serving campaign is still in its initial learning period. Returns 404 if the campaign does not exist or is not owned by the caller.

## Path parameters

- `id` string, required

## Response `200`

OK

- InternalPublicV1Campaign
  - `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.

## Other responses

- `400` — Invalid campaign ID
- `403` — Permission denied
- `404` — Campaign not found
- `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/versions/e15802062270/schema)
