Source: Roblox Creator Hub · CC BY 4.0 · View source · Code samples: MIT Imported 2026-10-03. Formatting adapted for this site.
GET /ads-management/v1/campaigns/{id} — openapi
Get a campaign
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.
Endpoint
Method: GET
Path: /ads-management/v1/campaigns/{id}
Servers:
https://apis.roblox.com
Parameters
| Name | Location | Required | Description |
|---|---|---|---|
| id | path | true | Campaign ID |
[
{
"description": "Campaign ID",
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
] Responses
| Status | Description |
|---|---|
| 200 | OK |
| 400 | Invalid campaign ID |
| 403 | Permission denied |
| 404 | Campaign not found |
| 429 | Rate limit exceeded |
| 500 | Internal server error |
{
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/internal_public_v1.Campaign"
}
}
}
},
"400": {
"description": "Invalid campaign ID",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/internal_public_v1.ErrorEnvelope"
}
}
}
},
"403": {
"description": "Permission denied",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/internal_public_v1.ErrorEnvelope"
}
}
}
},
"404": {
"description": "Campaign not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/internal_public_v1.ErrorEnvelope"
}
}
}
},
"429": {
"description": "Rate limit exceeded",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/internal_public_v1.ErrorEnvelope"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/internal_public_v1.ErrorEnvelope"
}
}
}
}
} Authentication
{
"security": [
{
"roblox-legacy-cookie": []
},
{
"roblox-api-key": []
},
{
"roblox-oauth2": [
"ad.campaign:read"
]
}
],
"securitySchemes": {
"roblox-api-key": {
"type": "apiKey",
"description": "A configurable key that allows granular access to Roblox resources. See https://create.roblox.com/docs/cloud/auth/api-keys for more information.",
"name": "x-api-key",
"in": "header"
},
"roblox-legacy-cookie": {
"type": "apiKey",
"description": "A browser cookie that represents the identity of a Roblox user. DO NOT SHARE THIS. Sharing this will allow someone to log in as you and to steal your Robux and items. We do not recommend using cookies to call endpoints. When possible, use API keys with the x-api-key header or OAuth 2.0 instead for authentication.",
"in": "cookie",
"name": ".ROBLOSECURITY"
},
"roblox-oauth2": {
"type": "oauth2",
"description": "Build or authorize apps to access Roblox resources. See https://create.roblox.com/docs/cloud/auth/oauth2-overview for more information.",
"flows": {
"authorizationCode": {
"authorizationUrl": "https://apis.roblox.com/oauth/v1/authorize",
"tokenUrl": "https://apis.roblox.com/oauth/v1/token",
"refreshUrl": "https://apis.roblox.com/oauth/v1/token",
"scopes": {}
}
}
}
}
} Related Schemas
Complete Operation Definition
{
"description": "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.",
"tags": [
"Advertising"
],
"summary": "Get a campaign",
"parameters": [
{
"description": "Campaign ID",
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/internal_public_v1.Campaign"
}
}
}
},
"400": {
"description": "Invalid campaign ID",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/internal_public_v1.ErrorEnvelope"
}
}
}
},
"403": {
"description": "Permission denied",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/internal_public_v1.ErrorEnvelope"
}
}
}
},
"404": {
"description": "Campaign not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/internal_public_v1.ErrorEnvelope"
}
}
}
},
"429": {
"description": "Rate limit exceeded",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/internal_public_v1.ErrorEnvelope"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/internal_public_v1.ErrorEnvelope"
}
}
}
}
},
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-rate-limits": {
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 600
},
"perOauth2Authorization": {
"period": "MINUTE",
"maxInPeriod": 600
}
},
"x-roblox-scopes": [
{
"name": "ad.campaign:read",
"targetResourceSpecifier": ""
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
},
{
"roblox-api-key": []
},
{
"roblox-oauth2": [
"ad.campaign:read"
]
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/advertising#get_ads_management_v1_campaigns__id_"
}
}