Properties
| Name | Type | Description |
|---|---|---|
| ad_account_id | object | |
| configured_status | string | The campaign's status set by the ad account. Can differ from `effective_status` depending on context, such as pending billing information. |
| created_at | object | |
| delivery_status | object | |
| effective_status | string | The calculated status determining the real status of this entity. |
| funding_instrument_id | stringnull | The campaign-level funding instrument ID. |
| goal_type | stringnull | The campaign goal type. Used when `is_campaign_budget_optimization` is `true`. > **Important:** This cannot be changed after publishing the campaign. |
| goal_value | integernull | Campaign-level goal value (microcurrency). Only works when `is_campaign_budget_optimization` is `true`. |
| id | string | The campaign ID. |
| modified_at | object | |
| name | object | The campaign name. |
| objective | string | The [campaign objective](https://business.reddithelp.com/s/article/Ad-campaign-objectives). |
| use_catalog | boolean | Whether the campaign uses a product catalog. It can be `true` only when `objective` is `SALES`. Omitted when unset. When `true`, all ad groups in the campaign must use a catalog. |
| special_ad_categories | arraynull | Indicates whether the campaign falls under [special ad categories](https://business.reddithelp.com/s/article/about-campaigns#special-ad-category), which affects [targeting](https://business.reddithelp |
| is_campaign_budget_optimization | booleannull | Whether the campaign uses campaign budget optimization. > **Important:** This can't be changed after publishing the campaign. |
| spend_cap | integernull | Campaign lifetime spend cap (microcurrency). Available for non-CBO campaigns and when `goal_type` is `DAILY_SPEND` for CBO campaigns. |
| start_time | stringnull | When the campaign will begin to deliver ([ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html)). Required and only available when `is_campaign_budget_optimization` is `true`. |
| end_time | stringnull | When the campaign will stop delivering ([ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html)). A non-null value is required if `goal_type` is `LIFETIME_SPEND`. |
| schedule | arraynull | The recurring weekly window(s) when the campaign may deliver. Day values are `0` (Sunday) through `6` (Saturday); hour values are `0`–`23` on a 24-hour clock (in the campaign's time zone). An empty ar |
| optimization_goal | stringnull | The event you want to measure for this campaign. Required when `is_campaign_budget_optimization` is `true` for conversions or video view campaigns. **This can't be changed later.** |
| bid_strategy | stringnull | The campaign's bid strategy. Required when `is_campaign_budget_optimization` is `true`. |
| bid_value | integernull | The amount to pay per bidding event (microcurrency). Used when `is_campaign_budget_optimization` is `true`. Optional when `bid_strategy` is `MAXIMIZE_VOLUME`. If set at campaign level, it **can't be s |
| bid_type | stringnull | The campaign's bid type. Required when `is_campaign_budget_optimization` is `true`. |
| app_id | stringnull | The Apple App Store or Google Play Store app ID. Used for `APP_INSTALLS` campaigns. See the [iOS App Install limits](https://ads-api.reddit.com/docs/v3/operations/Get%20SKAdNetwork%20Availability). |
| view_through_conversion_type | stringnull | The conversion attribution window. Determines how conversions are counted after a user interacts with an ad. Only available when `is_campaign_budget_optimization` is `true`. > **Important:** This cann |
| type | string | The campaign type. `AUTOMATED` identifies a Reddit Max campaign. See the [Max campaign setup guide](/docs/v3/guides/programs/campaign/max-campaign-setup). |
| is_max | boolean | Indicates whether this is a Reddit Max campaign. |
| skadnetwork_metadata | object | Metadata about the campaign's SKAdNetwork source ID. |
| invoice_label | stringnull | A free-form label agencies can use for tracking and reconciliation purposes on the resulting invoice. Only settable on campaigns whose funding instrument is **not** a credit card; attempts to set this |
| conversion_pixel_id | string | The Pixel ID used for measurement and optimization. Only works when `is_campaign_budget_optimization` is `true`. This **cannot** be changed after publishing the campaign. > **Important:** This field i |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/reddit/json-schema/reddit-components-schema-campaign-schema.json",
"title": "Campaign",
"x-generated": "2026-11-05",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/reddit-ads-api-openapi.yml#/components/schemas/components_schema_campaign",
"type": "object",
"additionalProperties": false,
"properties": {
"ad_account_id": {
"$ref": "#/$defs/id-2"
},
"configured_status": {
"type": "string",
"description": "The campaign's status set by the ad account. Can differ from `effective_status` depending on context, such as pending billing information.",
"enum": [
"ACTIVE",
"ARCHIVED",
"DELETED",
"PAUSED"
],
"default": "ACTIVE"
},
"created_at": {
"$ref": "#/$defs/components_schema_created_at"
},
"delivery_status": {
"$ref": "#/$defs/components_schema_delivery_status"
},
"effective_status": {
"type": "string",
"description": "The calculated status determining the real status of this entity.",
"enum": [
"ACTIVE",
"AD_GROUP_PAUSED",
"ARCHIVED",
"CAMPAIGN_PAUSED",
"COMPLETED",
"DELETED",
"PAUSED",
"PENDING_APPROVAL",
"PENDING_BILLING_INFO",
"PENDING_ID_VERIFICATION",
"REJECTED",
"PROCESSING"
],
"default": "PENDING_APPROVAL",
"readOnly": true
},
"funding_instrument_id": {
"type": [
"string",
"null"
],
"description": "The campaign-level funding instrument ID."
},
"goal_type": {
"type": [
"string",
"null"
],
"description": "The campaign goal type. Used when `is_campaign_budget_optimization` is `true`.\n> **Important:** This cannot be changed after publishing the campaign.\n",
"enum": [
"LIFETIME_SPEND",
"DAILY_SPEND",
null
]
},
"goal_value": {
"type": [
"integer",
"null"
],
"description": "Campaign-level goal value (microcurrency). Only works when `is_campaign_budget_optimization` is `true`."
},
"id": {
"type": "string",
"description": "The campaign ID.",
"readOnly": true
},
"modified_at": {
"$ref": "#/$defs/components_schema_modified_at"
},
"name": {
"$ref": "#/$defs/nullable",
"description": "The campaign name."
},
"objective": {
"type": "string",
"description": "The [campaign objective](https://business.reddithelp.com/s/article/Ad-campaign-objectives).",
"enum": [
"APP_INSTALLS",
"BRAND_AWARENESS",
"CATALOG_SALES",
"CLICKS",
"CONVERSIONS",
"IMPRESSIONS",
"LEAD_GENERATION",
"SALES",
"VIDEO_VIEWABLE_IMPRESSIONS"
]
},
"use_catalog": {
"description": "Whether the campaign uses a product catalog. It can be `true` only when `objective` is `SALES`. Omitted when unset. When `true`, all ad groups in the campaign must use a catalog.\n",
"type": "boolean"
},
"special_ad_categories": {
"type": [
"array",
"null"
],
"description": "Indicates whether the campaign falls under [special ad categories](https://business.reddithelp.com/s/article/about-campaigns#special-ad-category), which affects [targeting](https://business.reddithelp.com/s/article/Reddit-Advertising-Policy-Targeting-Guidelines).\n> **Important:** This can't be changed after publishing the campaign.\n",
"items": {
"type": "string",
"enum": [
"HOUSING_EMPLOYMENT_CREDIT",
"NONE"
]
},
"readOnly": true
},
"is_campaign_budget_optimization": {
"type": [
"boolean",
"null"
],
"description": "Whether the campaign uses campaign budget optimization.\n> **Important:** This can't be changed after publishing the campaign.\n"
},
"spend_cap": {
"type": [
"integer",
"null"
],
"description": "Campaign lifetime spend cap (microcurrency). Available for non-CBO campaigns and when `goal_type` is `DAILY_SPEND` for CBO campaigns."
},
"start_time": {
"type": [
"string",
"null"
],
"description": "When the campaign will begin to deliver ([ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html)). Required and only available when `is_campaign_budget_optimization` is `true`."
},
"end_time": {
"type": [
"string",
"null"
],
"description": "When the campaign will stop delivering ([ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html)). A non-null value is required if `goal_type` is `LIFETIME_SPEND`."
},
"schedule": {
"description": "The recurring weekly window(s) when the campaign may deliver. Day values are `0` (Sunday) through `6` (Saturday); hour values are `0`–`23` on a 24-hour clock (in the campaign's time zone). An empty array or `null` means the campaign may deliver at any time. Only available when `is_campaign_budget_optimization` is `true`, in which case it replaces the schedule of every ad group in the campaign.",
"type": [
"array",
"null"
],
"minItems": 0,
"items": {
"$ref": "#/$defs/components_schema_time_block"
}
},
"optimization_goal": {
"type": [
"string",
"null"
],
"description": "The event you want to measure for this campaign. Required when `is_campaign_budget_optimization` is `true` for conversions or video view campaigns. **This can't be changed later.**\n",
"allOf": [
{
"$ref": "#/$defs/components_enums_optimization_goal"
}
]
},
"bid_strategy": {
"type": [
"string",
"null"
],
"description": "The campaign's bid strategy. Required when `is_campaign_budget_optimization` is `true`.",
"enum": [
"BIDLESS",
"MAXIMIZE_VOLUME",
"TARGET_CPX",
null
],
"x-enumDescriptions": {
"BIDLESS": "Maximize results within the budget without a cost cap. Set `bid_value` to `null`.",
"MAXIMIZE_VOLUME": "Maximize result volume. Use `bid_value` as the cost cap in microcurrency.",
"TARGET_CPX": "Optimize toward a target cost per action. Set `bid_value` to the target cost in microcurrency."
}
},
"bid_value": {
"type": [
"integer",
"null"
],
"description": "The amount to pay per bidding event (microcurrency). Used when `is_campaign_budget_optimization` is `true`. Optional when `bid_strategy` is `MAXIMIZE_VOLUME`. If set at campaign level, it **can't be set** at ad group level."
},
"bid_type": {
"type": [
"string",
"null"
],
"description": "The campaign's bid type. Required when `is_campaign_budget_optimization` is `true`.",
"enum": [
"CPC",
"CPM",
"CPV6",
"CPV15",
null
]
},
"app_id": {
"type": [
"string",
"null"
],
"description": "The Apple App Store or Google Play Store app ID. Used for `APP_INSTALLS` campaigns. See the [iOS App Install limits](https://ads-api.reddit.com/docs/v3/operations/Get%20SKAdNetwork%20Availability)."
},
"view_through_conversion_type": {
"description": "The conversion attribution window. Determines how conversions are counted after a user interacts with an ad. Only available when `is_campaign_budget_optimization` is `true`.\n> **Important:** This cannot be changed after publishing the campaign.\n",
"x-enumDescriptions": {
"SEVEN_DAY_CLICKS": "Counts conversions that occur within 7 days of a click.",
"SEVEN_DAY_CLICKS_ONE_DAY_VIEW": "Counts conversions that occur within 7 days of a click or within 1 day of a view."
},
"type": [
"string",
"null"
],
"enum": [
"SEVEN_DAY_CLICKS",
"SEVEN_DAY_CLICKS_ONE_DAY_VIEW",
null
]
},
"type": {
"description": "The campaign type. `AUTOMATED` identifies a Reddit Max campaign. See the [Max campaign setup guide](/docs/v3/guides/programs/campaign/max-campaign-setup).\n",
"type": "string",
"enum": [
"MANUAL",
"AUTOMATED"
]
},
"is_max": {
"description": "Indicates whether this is a Reddit Max campaign.\n",
"type": "boolean",
"default": false,
"readOnly": true
},
"skadnetwork_metadata": {
"$ref": "#/$defs/components_schema_skadnetwork_metadata",
"description": "Metadata about the campaign's SKAdNetwork source ID."
},
"invoice_label": {
"type": [
"string",
"null"
],
"description": "A free-form label agencies can use for tracking and reconciliation purposes on the resulting invoice. Only settable on campaigns whose funding instrument is **not** a credit card; attempts to set this field on credit-card-funded campaigns are ignored.\n",
"maxLength": 80
},
"conversion_pixel_id": {
"description": "The Pixel ID used for measurement and optimization. Only works when `is_campaign_budget_optimization` is `true`. This **cannot** be changed after publishing the campaign.\n> **Important:** This field is required for all CBO campaigns starting July 13th, 2026. Retrieve your Pixels with [`List Pixels by Ad Account`](https://ads-api.reddit.com/docs/v3/operations/List%20Pixels%20By%20Ad%20Account).\n",
"type": [
"string"
]
}
},
"$defs": {
"components_enums_optimization_goal": {
"x-enumDescriptions": {
"null": "For video views campaigns, this value is not supported starting March 31, 2026.",
"VIDEO_VIEW_6S": "Use this value instead of `null` for video views campaigns starting March 31, 2026.",
"VIDEO_VIEW_15S": "For campaigns and ad groups, requires a `bid_type` of `CPV15`.",
"VIEW_CONTENT": "For conversion campaigns, this value is not supported starting May 5th, 2025.",
"SEARCH": "For conversion campaigns, this value is not supported starting May 5th, 2025.",
"ADD_TO_WISHLIST": "For conversion campaigns, this value is not supported starting May 5th, 2025."
},
"enum": [
"ADD_TO_CART",
"ADD_TO_WISHLIST",
"CLICKS",
"LEAD",
"PAGE_VISIT",
"PURCHASE",
"SEARCH",
"SIGN_UP",
"UNKNOWN",
"VIEW_CONTENT",
"MOBILE_CONVERSION_INSTALL",
"MOBILE_CONVERSION_SIGN_UP",
"MOBILE_CONVERSION_ADD_PAYMENT_INFO",
"MOBILE_CONVERSION_ADD_TO_CART",
"MOBILE_CONVERSION_PURCHASE",
"MOBILE_CONVERSION_LEVEL_ACHIEVED",
"MOBILE_CONVERSION_START_TRIAL",
"MOBILE_CONVERSION_SUBSCRIBE",
"MOBILE_CONVERSION_FIRST_TIME_PURCHASE",
"LANDING_PAGE_VISIT",
"VIDEO_VIEW_6S",
"VIDEO_VIEW_15S",
null
]
},
"components_schema_created_at": {
"description": "When this entity was created ([ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html)).",
"type": "string",
"format": "date-time",
"readOnly": true
},
"components_schema_delivery_status": {
"type": [
"array",
"null"
],
"description": "The delivery statuses for this ad group.",
"items": {
"type": "string"
},
"readOnly": true
},
"components_schema_modified_at": {
"title": "Modified At",
"description": "When this entity was last changed ([ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html)).",
"type": "string",
"format": "date-time",
"readOnly": true
},
"components_schema_skadnetwork_metadata": {
"type": [
"object",
"null"
],
"additionalProperties": false,
"description": "Metadata of the SKAdNetwork source ID.",
"properties": {
"status": {
"description": "The [SKAdNetwork source ID status](https://business.reddithelp.com/s/article/skadnetwork#skan-ids).",
"type": "string",
"enum": [
"COOLDOWN",
"DISABLED",
"ENABLED"
]
}
}
},
"components_schema_time_block": {
"type": "object",
"additionalProperties": false,
"properties": {
"end_day": {
"description": "Day of the week when this window ends (`0`–`6`; `0` = Sunday).",
"type": "integer",
"minimum": 0,
"maximum": 6
},
"end_hour": {
"description": "Hour on `end_day` when this window ends (`0`–`23`).",
"type": "integer",
"minimum": 0,
"maximum": 23
},
"start_day": {
"description": "Day of the week when this window starts (`0`–`6`; `0` = Sunday).",
"type": "integer",
"minimum": 0,
"maximum": 6
},
"start_hour": {
"description": "Hour on `start_day` when this window starts (`0`–`23`).",
"type": "integer",
"minimum": 0,
"maximum": 23
}
}
},
"id-2": {
"description": "The ad account ID.",
"type": "string",
"pattern": "^(t2|a2)_.*",
"readOnly": true
},
"nullable": {
"description": "The entity name.",
"type": [
"string",
"null"
],
"minLength": 3,
"maxLength": 500
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/reddit-components-schema-campaign"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.