4 min read

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/campaign-options — openapi

Get campaign options

Returns the values accepted when creating a campaign: supported objectives, payment types, ad formats, and targeting dimensions. When universeId is supplied, the response also includes an eligibility block indicating whether that experience can currently be advertised, along with the reasons when it cannot.

Endpoint

Method: GET

Path: /ads-management/v1/campaign-options

Servers:

Parameters

NameLocationRequiredDescription
universeIdqueryfalseUniverse ID to check eligibility for
objectivequeryfalseObjective filter (PLAYS or the deprecated ENGAGEMENT)
[
  {
    "description": "Universe ID to check eligibility for",
    "name": "universeId",
    "in": "query",
    "schema": {
      "type": "string"
    }
  },
  {
    "description": "Objective filter (PLAYS or the deprecated ENGAGEMENT)",
    "name": "objective",
    "in": "query",
    "schema": {
      "type": "string",
      "enum": [
        "PLAYS",
        "ENGAGEMENT"
      ]
    }
  }
]

Responses

StatusDescription
200OK
400Invalid objective or universeId
403Permission denied
429Rate limit exceeded
500Internal server error
{
  "200": {
    "description": "OK",
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/internal_public_v1.CampaignOptionsResponse"
        }
      }
    }
  },
  "400": {
    "description": "Invalid objective or universeId",
    "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"
        }
      }
    }
  },
  "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": {}
        }
      }
    }
  }
}

Complete Operation Definition

{
  "description": "Returns the values accepted when creating a campaign: supported objectives, payment types, ad formats, and targeting dimensions. When universeId is supplied, the response also includes an eligibility block indicating whether that experience can currently be advertised, along with the reasons when it cannot.",
  "tags": [
    "Advertising"
  ],
  "summary": "Get campaign options",
  "parameters": [
    {
      "description": "Universe ID to check eligibility for",
      "name": "universeId",
      "in": "query",
      "schema": {
        "type": "string"
      }
    },
    {
      "description": "Objective filter (PLAYS or the deprecated ENGAGEMENT)",
      "name": "objective",
      "in": "query",
      "schema": {
        "type": "string",
        "enum": [
          "PLAYS",
          "ENGAGEMENT"
        ]
      }
    }
  ],
  "responses": {
    "200": {
      "description": "OK",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/internal_public_v1.CampaignOptionsResponse"
          }
        }
      }
    },
    "400": {
      "description": "Invalid objective or universeId",
      "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"
          }
        }
      }
    },
    "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_campaign_options"
  }
}