Advertising

Create a campaign

Changed on

Creates an ad campaign in the billing account. The creatives you reference must already exist as Open Cloud image assets that you have permission to use; they are validated and saved to your account's reusable creatives when the campaign is created. On success the campaign is returned with deliveryStatus IN_REVIEW, meaning it is queued for ad-policy review and not yet serving — poll the campaign (or campaigns:batchGetStatus) until this changes. budget.amountMicros is the budget in micro-USD as a decimal string (e.g. "5000000" = $5.00). It must be at least the minimum campaign budget; an amount below the minimum returns 400 with the required minimum stated in the error message. schedule.durationInDays must not exceed 3650 (~10 years). The x-idempotency-key header is required and must be a UUID: retrying the same key with an identical body within 24 hours returns the original campaign (200), while reusing a key with a different body returns 409.

post/ads-management/v1/campaigns

Request

  • Base URL
    https://apis.roblox.com
  • URL
    https://apis.roblox.com/ads-management/v1/campaigns
  • Auth
    • API key in cookie .ROBLOSECURITY
    • or API key in header x-api-key
    • or OAuth 2
      Authorization code: https://apis.roblox.com/oauth/v1/authorize
      Token URL: https://apis.roblox.com/oauth/v1/token scopes: ad.campaign:write

Headers

x-idempotency-keystring required

Idempotency key (UUID); 24h dedupe window. Identical replay returns the original campaign (200); mismatched replay may conflict (409).

Request body

creativeAssetIdsstring[] required

The Open Cloud image asset IDs to advertise, as decimal strings. Required. The assets must already exist and be usable by the caller.

namestring required

The display name of the campaign. Required.

objective'PLAYS' | 'ENGAGEMENT' required

The advertising goal. Required. Can be PLAYS or ENGAGEMENT. ENGAGEMENT does not support targeting and is not available for every experience.

paymentType'CREDIT_CARD' | 'ADS_CREDIT' | 'INVOICE' required

How the campaign is paid for. Required. Can be CREDIT_CARD, ADS_CREDIT, or INVOICE, subject to what the billing account supports.

targetUniverseIdstring required

The identifier of the experience to advertise. Required.

Response

Campaign created, or idempotent replay of a prior create with the same key and body

billingAccountIdstring

The billing account that owns and funds the campaign.

createTimestring

The time the campaign was created, as an RFC 3339 UTC timestamp.

creativeAssetIdsstring[]

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.

deliveryStatusReasonsstring[]

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.

idstring

The server-assigned unique identifier of the campaign.

namestring

The display name of the campaign.

objective'PLAYS' | 'ENGAGEMENT' | 'AWARENESS' | 'REACH' | 'VIDEO_VIEWS' | 'ROBUX_SPEND'

The advertising goal of the campaign. PLAYS or ENGAGEMENT for campaigns created via this API; campaigns from other surfaces may report AWARENESS, REACH, VIDEO_VIEWS, or ROBUX_SPEND.

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.

status'ACTIVE' | 'PAUSED' | 'CANCELLED'

The lifecycle state you control through update requests. Can be ACTIVE, PAUSED, or CANCELLED. CANCELLED is permanent.

targetUniverseIdstring

The identifier of the experience the campaign advertises.

updateTimestring

The time the campaign was last updated, as an RFC 3339 UTC timestamp.

Changes

    • warning

      added the new ENGAGEMENT enum value to the response property for the response status

    • info

      removed the ENGAGED_PLAYS enum value from the response property for the response status

    • warning

      added the new AWARENESS enum value to the response property for the response status

    • warning

      added the new ENGAGED_PLAYS enum value to the response property for the response status

    • warning

      added the new PLAYS enum value to the response property for the response status

    • warning

      added the new REACH enum value to the response property for the response status

    • warning

      added the new ROBUX_SPEND enum value to the response property for the response status

    • warning

      added the new VIDEO_VIEWS enum value to the response property for the response status

    • info

      added the new PLAYS enum value to the request property

    • info

      removed the ENGAGEMENT enum value from the response property for the response status