{
"error": {
"code": "invalid_request",
"message": "Set a CPM for instagram. Without it those submissions would earn nothing.",
"request_id": "6f1c2a9e-4b7d-4c1a-9e2f-3a8b5c7d9e10"
}
}
{
"error": {
"code": "unauthorized",
"message": "Provide a valid API key as `Authorization: Bearer ck_live_...`.",
"request_id": "0b7e4d2c-9a1f-4e3b-8c6d-5f2a1b9c7e34"
}
}
{
"error": {
"code": "forbidden",
"message": "This API key cannot create campaigns. Create a key with write access in Settings, API keys.",
"request_id": "9e8d7c6b-5a4f-4e3d-8c2b-1a0f9e8d7c65"
}
}
{
"error": {
"code": "not_found",
"message": "No such brand.",
"request_id": "3c9a8b7d-2e1f-4a6b-9c8d-7e6f5a4b3c21"
}
}
{
"error": {
"code": "conflict",
"message": "A campaign with this name already exists for your brand.",
"request_id": "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e"
}
}
{
"error": {
"code": "unavailable",
"message": "ClipStake is undergoing scheduled maintenance. Try again shortly.",
"request_id": "7c6b5a4f-3e2d-4c1b-9a8f-7e6d5c4b3a29"
}
}
Campaigns
Create a campaign
Creates a campaign for one of your brands. The campaign starts as pending_payment. Fund it and launch it in the dashboard. The API key must have write access. The campaign runs the same checks as the dashboard. A name that the brand already uses returns 409, so a retry of a request that succeeded does not make a second campaign.
POST
/
campaigns
Create a campaign
curl --request POST \ --url https://app.clipstake.com/api/v1/agency/campaigns \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "brand_id": "brd_3f9c0a1b2c3d4e5f60718293a4b5c6d7", "name": "Autumn Roast Launch", "instructions": "Post a 15 to 45 second clip that shows the new autumn roast. Tag @northwind.", "content_type": "clipping", "budget_cents": 500000, "platforms": [ { "platform": "instagram", "cpm_cents": 200 } ], "max_payout_per_clip_cents": 50000, "min_views": 1000, "max_clips_per_creator": 10, "eligibility": "open", "end_date": "2026-12-31T00:00:00.000Z", "thumbnail_url": "https://cdn.northwind.example/campaigns/autumn-roast.jpg", "geo_targeting": [], "agency_cpm_cents": 20, "resources": []}'
{
"error": {
"code": "invalid_request",
"message": "Set a CPM for instagram. Without it those submissions would earn nothing.",
"request_id": "6f1c2a9e-4b7d-4c1a-9e2f-3a8b5c7d9e10"
}
}
{
"error": {
"code": "unauthorized",
"message": "Provide a valid API key as `Authorization: Bearer ck_live_...`.",
"request_id": "0b7e4d2c-9a1f-4e3b-8c6d-5f2a1b9c7e34"
}
}
{
"error": {
"code": "forbidden",
"message": "This API key cannot create campaigns. Create a key with write access in Settings, API keys.",
"request_id": "9e8d7c6b-5a4f-4e3d-8c2b-1a0f9e8d7c65"
}
}
{
"error": {
"code": "not_found",
"message": "No such brand.",
"request_id": "3c9a8b7d-2e1f-4a6b-9c8d-7e6f5a4b3c21"
}
}
{
"error": {
"code": "conflict",
"message": "A campaign with this name already exists for your brand.",
"request_id": "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e"
}
}
Pay by the country of the viewers. Send include rules or one exclude rule, never both. Needs instagram in platforms, and cannot be used with x. Leave it out or send an empty list to pay the platform rates for every view.
Your agency's share of each 1,000 views, in cents. Creators earn every rate less this amount, and the difference goes to your wallet when payouts are released. It must be less than every rate in the campaign. Leave it out to keep no share.
pending_payment: the budget is not paid yet. ready_to_launch: the budget is paid and the campaign is not live yet. active: the campaign is live and clips earn. paused: the campaign stopped paying for new views. ended: the campaign is over.
The country rules of the campaign, include rules first, in the order the campaign shows them. A campaign has include rules or one exclude rule, never both. With include rules, views from other countries earn nothing. Empty when geo targeting is off.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"ClipStake Developer Docs","description":"Developer docs for the ClipStake APIs. The Console API tracks Instagram and X media. The Agency API reads your campaign data. The Creator API submits your clips.","colors":{"primary":"#CE1111","light":"#E34A4A","dark":"#7C0A0A"},"logo":{"light":"https://mintcdn.com/clipstake-618eb5ee/Jsnu6q5jiHt_YP3R/clipstake-logo-light.svg?fit=max\u0026auto=format\u0026n=Jsnu6q5jiHt_YP3R\u0026q=85\u0026s=7681e523e43fb1457a67bd8fef8635d9","dark":"https://mintcdn.com/clipstake-618eb5ee/Jsnu6q5jiHt_YP3R/clipstake-logo-dark.svg?fit=max\u0026auto=format\u0026n=Jsnu6q5jiHt_YP3R\u0026q=85\u0026s=eb665430b972a58134b8c16b137c3230"},"favicon":"https://mintcdn.com/clipstake-618eb5ee/l5j-30uYBX6r2Dqv/favicon.svg?fit=max\u0026auto=format\u0026n=l5j-30uYBX6r2Dqv\u0026q=85\u0026s=f48b590257eaf8c7112fb416b1cbe4e4","appearance":{"default":"system"},"background":{"color":{"light":"#FFFBFA","dark":"#000000"}},"navbar":{"links":[{"href":"https://status.clipstake.com","label":"Status"}],"primary":{"type":"button","label":"Open Console","href":"https://console.clipstake.com"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"clipstake-618eb5ee","hasAudioNarration":false,"actualSubdomain":"clipstake-618eb5ee","customDomains":["docs.clipstake.com"],"gitSource":{"type":"github","owner":"clipstake","repo":"bedrock","deployBranch":"prod","contentDirectory":"apps/docs","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"}},"buildId":"6aeb6abedfc350f7e13f9bfb","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"default","tag":"API Reference","count":72},{"language":"default","tag":"Console API","count":60},{"language":"default","tag":"Submissions","count":28},{"language":"default","tag":"Developer Guides","count":19},{"language":"default","tag":"Instagram","count":17},{"language":"default","tag":"Agency API","count":15},{"language":"default","tag":"X","count":14},{"language":"default","tag":"YouTube","count":14},{"language":"default","tag":"Brand API","count":13},{"language":"default","tag":"Accounts","count":13}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/campaigns/create-a-campaign","slug":"/api-reference/campaigns/create-a-campaign","pageMetadata":{"title":"Create a campaign","description":"Creates a campaign for one of your brands. The campaign starts as `pending_payment`. Fund it and launch it in the dashboard. The API key must have write access. The campaign runs the same checks as the dashboard. A name that the brand already uses returns 409, so a retry of a request that succeeded does not make a second campaign.","deprecated":null,"version":null,"openapi":"/agency-api/openapi.json post /campaigns","href":"/api-reference/campaigns/create-a-campaign","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Creates a campaign for one of your brands. The campaign starts as \", _jsx(_components.code, {\n children: \"pending_payment\"\n }), \". Fund it and launch it in the dashboard. The API key must have write access. The campaign runs the same checks as the dashboard. A name that the brand already uses returns 409, so a retry of a request that succeeded does not make a second campaign.\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Create a campaign","description":"Creates a campaign for one of your brands. The campaign starts as `pending_payment`. Fund it and launch it in the dashboard. The API key must have write access. The campaign runs the same checks as the dashboard. A name that the brand already uses returns 409, so a retry of a request that succeeded does not make a second campaign.","deprecated":null,"version":null,"openapi":"/agency-api/openapi.json post /campaigns","href":"/api-reference/campaigns/create-a-campaign","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/clipstake-618eb5ee/39a3d3e929151a04/navbar-cta.js","/_mintlify/custom/clipstake-618eb5ee/53f114a48bb87823/hero-shader.js"],"openApiReferenceData":{"operation":{"operationId":"campaigns-create","summary":"Create a campaign","description":"Creates a campaign for one of your brands. The campaign starts as `pending_payment`. Fund it and launch it in the dashboard. The API key must have write access. The campaign runs the same checks as the dashboard. A name that the brand already uses returns 409, so a retry of a request that succeeded does not make a second campaign.","tags":["Campaigns"],"security":["8cf52f9c-2c62-46f0-8d89-fe7fb88bd072"],"parameters":[],"requestBody":"9a8c672a-236a-464b-be03-86a89531fbb6","responses":{"200":"99172cc7-f192-406b-9388-27805c9b80f0","400":"7877b2d8-af6b-408e-bcfc-bda715a65c9d","401":"19553303-4eee-49d8-8b22-ab09bd11ee33","403":"027f31d7-122d-4cc3-b251-907a857514b3","404":"b034d3da-ddb6-499d-840c-5db2087217a8","409":"2e5e8419-3a52-42ae-b342-30fdec809376","500":"a59a6e8f-9773-4cfb-89a9-a62884ab75eb","503":"cf90f79d-5d5e-4f60-bec9-8e519008d8f2"},"method":"post","type":"path","servers":["712e0b98-18c5-4563-8202-6e27b4b3cffc"],"path":"/campaigns","baseUrlOptions":["https://app.clipstake.com/api/v1/agency"],"title":"Create a campaign","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"brand_id":{"type":"string","description":"The brand that owns the campaign. A brand ID that your API key cannot read returns 404.","example":"brd_3f9c0a1b2c3d4e5f60718293a4b5c6d7","isRequired":true,"uniqueKey":"brand_id","typeLabel":"string"},"name":{"type":"string","minLength":1,"maxLength":256,"description":"The campaign name. It must be different from the names of the brand's other campaigns.","example":"Autumn Roast Launch","isRequired":true,"uniqueKey":"name","typeLabel":"string"},"instructions":{"type":"string","minLength":1,"description":"What creators must do in their clips. Creators see this text.","example":"Post a 15 to 45 second clip that shows the new autumn roast. Tag @northwind.","isRequired":true,"uniqueKey":"instructions","typeLabel":"string"},"content_type":{"type":"string","enum":["logo","clipping","music","ugc","reposting"],"description":"The kind of clip: `clipping`, `logo`, `music`, `ugc` or `reposting`.","example":"clipping","isRequired":true,"uniqueKey":"content_type","typeLabel":"enum\u003cstring>"},"budget_cents":{"type":"integer","minimum":100,"maximum":9007199254740991,"description":"The budget for clips, in cents. It does not include the ClipStake fee, which you pay when you fund the campaign.","example":500000,"isRequired":true,"uniqueKey":"budget_cents","typeLabel":"integer"},"platforms":{"minItems":1,"maxItems":2,"type":"array","items":{"type":"object","properties":{"platform":{"type":"string","enum":["instagram","x"],"description":"The platform: `instagram` or `x`. Geo targeting works with `instagram` only.","example":"instagram","isRequired":true,"uniqueKey":"platforms.items.[INDEX].platform","typeLabel":"enum\u003cstring>"},"cpm_cents":{"oneOf":[{"type":"integer","description":"The amount the campaign pays for 1,000 views on this platform, in cents. Required without geo targeting. With geo targeting, send null: the country rates apply instead.","maximum":9007199254740991,"minimum":0,"example":200,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"platforms.items.[INDEX].cpm_cents.oneOf.0","typeLabel":"integer"},{"type":"null","description":"The amount the campaign pays for 1,000 views on this platform, in cents. Required without geo targeting. With geo targeting, send null: the country rates apply instead.","example":200,"isRequired":true,"uniqueKey":"platforms.items.[INDEX].cpm_cents.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"platforms.items.[INDEX].cpm_cents","typeLabel":"integer | null"}},"required":["platform","cpm_cents"],"description":"A platform and its rate.","uniqueKey":"platforms.items.[INDEX]","typeLabel":"object"},"description":"The platforms the campaign accepts clips from, each with its rate.","isRequired":true,"uniqueKey":"platforms","typeLabel":"object[]"},"max_payout_per_clip_cents":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991,"description":"The most that one clip can earn from the campaign, in cents.","example":50000,"isRequired":true,"uniqueKey":"max_payout_per_clip_cents","typeLabel":"integer"},"min_views":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991,"description":"The views a clip must get before it can earn.","example":1000,"isRequired":true,"uniqueKey":"min_views","typeLabel":"integer"},"max_clips_per_creator":{"description":"The most clips one creator can submit to the campaign. Leave it out for no limit.","example":10,"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991,"uniqueKey":"max_clips_per_creator","typeLabel":"integer"},"eligibility":{"default":"open","description":"`open`: every creator can find the campaign and submit. `private`: only creators that you invite in the dashboard can submit. The default is `open`.","example":"open","type":"string","enum":["open","private"],"uniqueKey":"eligibility","typeLabel":"enum\u003cstring>"},"end_date":{"description":"When the campaign ends. Omit it for a campaign with no end date.","example":"2026-12-31T00:00:00.000Z","type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","uniqueKey":"end_date","typeLabel":"string\u003cdate-time>"},"thumbnail_url":{"description":"The campaign image that creators see. Use an `https` link to a JPEG, PNG or WebP image.","example":"https://cdn.northwind.example/campaigns/autumn-roast.jpg","type":"string","format":"uri","uniqueKey":"thumbnail_url","typeLabel":"string\u003curi>"},"geo_targeting":{"default":[],"description":"Pay by the country of the viewers. Send `include` rules or one `exclude` rule, never both. Needs `instagram` in `platforms`, and cannot be used with `x`. Leave it out or send an empty list to pay the platform rates for every view.","example":[],"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["include","exclude"],"description":"`include`: the campaign pays `cpm_cents` for views from these countries, and nothing for views from other countries. `exclude`: the campaign pays nothing for views from these countries, and `cpm_cents` for views from every other country.","example":"include","isRequired":true,"uniqueKey":"geo_targeting.items.[INDEX].kind","typeLabel":"enum\u003cstring>"},"cpm_cents":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991,"description":"The amount for 1,000 views, in cents. For `include`, the rate for these countries. For `exclude`, the rate for every country that is not in the list.","example":350,"isRequired":true,"uniqueKey":"geo_targeting.items.[INDEX].cpm_cents","typeLabel":"integer"},"countries":{"minItems":1,"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}$","example":"US","uniqueKey":"geo_targeting.items.[INDEX].countries.items.[INDEX]","typeLabel":"string"},"description":"Two-letter ISO 3166-1 country codes, in upper case.","example":["US","CA","GB"],"isRequired":true,"uniqueKey":"geo_targeting.items.[INDEX].countries","typeLabel":"string[]"}},"required":["kind","cpm_cents","countries"],"description":"One group of countries and its rate.","uniqueKey":"geo_targeting.items.[INDEX]","typeLabel":"object"},"uniqueKey":"geo_targeting","typeLabel":"object[]"},"agency_cpm_cents":{"description":"Your agency's share of each 1,000 views, in cents. Creators earn every rate less this amount, and the difference goes to your wallet when payouts are released. It must be less than every rate in the campaign. Leave it out to keep no share.","example":20,"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991,"uniqueKey":"agency_cpm_cents","typeLabel":"integer"},"resources":{"default":[],"description":"Files and folders for creators.","maxItems":20,"type":"array","items":{"type":"object","properties":{"type":{"type":"string","minLength":1,"maxLength":64,"description":"What the link is, for example `drive`, `brief` or `audio`.","example":"drive","isRequired":true,"uniqueKey":"resources.items.[INDEX].type","typeLabel":"string"},"url":{"type":"string","format":"uri","description":"The link to the file or folder.","example":"https://drive.example.com/northwind-assets","isRequired":true,"uniqueKey":"resources.items.[INDEX].url","typeLabel":"string\u003curi>"}},"required":["type","url"],"description":"A file or folder for creators.","uniqueKey":"resources.items.[INDEX]","typeLabel":"object"},"uniqueKey":"resources","typeLabel":"object[]"}},"required":["brand_id","name","instructions","content_type","budget_cents","platforms","max_payout_per_clip_cents","min_views"],"description":"The campaign to create.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"brand_id":"brd_3f9c0a1b2c3d4e5f60718293a4b5c6d7","name":"Autumn Roast Launch","instructions":"Post a 15 to 45 second clip that shows the new autumn roast. Tag @northwind.","content_type":"clipping","budget_cents":500000,"platforms":[{"platform":"instagram","cpm_cents":200}],"max_payout_per_clip_cents":50000,"min_views":1000,"max_clips_per_creator":10,"eligibility":"open","end_date":"2026-12-31T00:00:00.000Z","thumbnail_url":"https://cdn.northwind.example/campaigns/autumn-roast.jpg","geo_targeting":[],"agency_cpm_cents":20,"resources":[]}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"99172cc7-f192-406b-9388-27805c9b80f0":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"^cmp_[0-9a-f]{32}$","description":"Campaign ID.","example":"cmp_8a1d4e2f6b7c4d9e8f0a1b2c3d4e5f60","isRequired":true,"uniqueKey":"id","typeLabel":"string"},"brand_id":{"type":"string","pattern":"^brd_[0-9a-f]{32}$","description":"Brand ID.","example":"brd_3f9c0a1b2c3d4e5f60718293a4b5c6d7","isRequired":true,"uniqueKey":"brand_id","typeLabel":"string"},"name":{"type":"string","description":"The campaign name.","example":"Autumn Roast Launch","isRequired":true,"uniqueKey":"name","typeLabel":"string"},"slug":{"type":"string","description":"The short name of the campaign in ClipStake web addresses.","example":"autumn-roast-launch","isRequired":true,"uniqueKey":"slug","typeLabel":"string"},"status":{"type":"string","enum":["pending_payment","ready_to_launch","active","paused","ended"],"description":"`pending_payment`: the budget is not paid yet. `ready_to_launch`: the budget is paid and the campaign is not live yet. `active`: the campaign is live and clips earn. `paused`: the campaign stopped paying for new views. `ended`: the campaign is over.","example":"active","isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"budget_cents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The campaign budget for clips, in cents. It does not include the ClipStake fee.","example":500000,"isRequired":true,"uniqueKey":"budget_cents","typeLabel":"integer"},"platforms":{"type":"array","items":{"type":"object","properties":{"platform":{"type":"string","description":"The platform: `instagram`, `x`, `tiktok` or `youtube`. More values can be added. Accept values that you do not know.","example":"instagram","isRequired":true,"uniqueKey":"platforms.items.[INDEX].platform","typeLabel":"string"},"cpm_cents":{"oneOf":[{"type":"integer","description":"The amount the campaign pays for 1,000 views on this platform, in cents. Null when no rate is set. When geo targeting is on, the country rates in `geo_targeting` apply instead.","maximum":9007199254740991,"minimum":-9007199254740991,"example":200,"isRequired":true,"uniqueKey":"platforms.items.[INDEX].cpm_cents.oneOf.0","typeLabel":"integer"},{"type":"null","description":"The amount the campaign pays for 1,000 views on this platform, in cents. Null when no rate is set. When geo targeting is on, the country rates in `geo_targeting` apply instead.","example":200,"isRequired":true,"uniqueKey":"platforms.items.[INDEX].cpm_cents.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"platforms.items.[INDEX].cpm_cents","typeLabel":"integer | null"}},"required":["platform","cpm_cents"],"additionalProperties":false,"description":"A platform that the campaign accepts clips from.","uniqueKey":"platforms.items.[INDEX]","typeLabel":"object"},"description":"The platforms that the campaign accepts clips from, each with its rate.","isRequired":true,"uniqueKey":"platforms","typeLabel":"object[]"},"geo_enabled":{"type":"boolean","description":"True when the campaign pays by the country of the viewers.","example":false,"isRequired":true,"uniqueKey":"geo_enabled","typeLabel":"boolean"},"geo_targeting":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["include","exclude"],"description":"`include`: the campaign pays `cpm_cents` for views from these countries. `exclude`: the campaign does not pay for views from these countries.","example":"include","isRequired":true,"uniqueKey":"geo_targeting.items.[INDEX].kind","typeLabel":"enum\u003cstring>"},"cpm_cents":{"oneOf":[{"type":"integer","description":"The amount the campaign pays for 1,000 views from these countries, in cents. For an `exclude` rule, this is the rate for views from every country that is not in the list, or null when there is no such rate.","maximum":9007199254740991,"minimum":-9007199254740991,"example":350,"isRequired":true,"uniqueKey":"geo_targeting.items.[INDEX].cpm_cents.oneOf.0","typeLabel":"integer"},{"type":"null","description":"The amount the campaign pays for 1,000 views from these countries, in cents. For an `exclude` rule, this is the rate for views from every country that is not in the list, or null when there is no such rate.","example":350,"isRequired":true,"uniqueKey":"geo_targeting.items.[INDEX].cpm_cents.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"geo_targeting.items.[INDEX].cpm_cents","typeLabel":"integer | null"},"countries":{"type":"array","items":{"type":"string","uniqueKey":"geo_targeting.items.[INDEX].countries.items.[INDEX]","typeLabel":"string"},"description":"Two-letter ISO 3166-1 country codes, in upper case.","example":["US","CA","GB"],"isRequired":true,"uniqueKey":"geo_targeting.items.[INDEX].countries","typeLabel":"string[]"}},"required":["kind","cpm_cents","countries"],"additionalProperties":false,"description":"One group of countries and its rate.","uniqueKey":"geo_targeting.items.[INDEX]","typeLabel":"object"},"description":"The country rules of the campaign, `include` rules first, in the order the campaign shows them. A campaign has `include` rules or one `exclude` rule, never both. With `include` rules, views from other countries earn nothing. Empty when geo targeting is off.","example":[],"isRequired":true,"uniqueKey":"geo_targeting","typeLabel":"object[]"},"max_payout_per_clip_cents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The most that one clip can earn from the campaign, in cents.","example":50000,"isRequired":true,"uniqueKey":"max_payout_per_clip_cents","typeLabel":"integer"},"pause_threshold_percent":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The campaign pauses when its clips have earned this percentage of the budget.","example":90,"isRequired":true,"uniqueKey":"pause_threshold_percent","typeLabel":"integer"},"start_date":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","description":"When the campaign starts.","example":"2026-09-15T00:00:00.000Z","isRequired":true,"uniqueKey":"start_date","typeLabel":"string\u003cdate-time>"},"end_date":{"oneOf":[{"type":"string","description":"When the campaign ends. Null if the campaign has no end date.","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","example":"2026-10-15T00:00:00.000Z","isRequired":true,"uniqueKey":"end_date.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"When the campaign ends. Null if the campaign has no end date.","example":"2026-10-15T00:00:00.000Z","isRequired":true,"uniqueKey":"end_date.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"end_date","typeLabel":"string\u003cdate-time> | null"},"launched_at":{"oneOf":[{"type":"string","description":"When the campaign went live. Null if it never went live.","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","example":"2026-09-15T09:00:00.000Z","isRequired":true,"uniqueKey":"launched_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"When the campaign went live. Null if it never went live.","example":"2026-09-15T09:00:00.000Z","isRequired":true,"uniqueKey":"launched_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"launched_at","typeLabel":"string\u003cdate-time> | null"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","description":"When the campaign was created.","example":"2026-09-10T14:20:00.000Z","isRequired":true,"uniqueKey":"created_at","typeLabel":"string\u003cdate-time>"},"balance":{"type":"object","properties":{"available_cents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The amount that the campaign holds now and has not paid out, in cents.","example":312500,"isRequired":true,"uniqueKey":"balance.available_cents","typeLabel":"integer"},"paid_gross_cents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The total amount paid out of the campaign for clips, in cents. This is the gross amount that left the campaign budget.","example":187500,"isRequired":true,"uniqueKey":"balance.paid_gross_cents","typeLabel":"integer"}},"required":["available_cents","paid_gross_cents"],"additionalProperties":false,"description":"The money in the campaign.","isRequired":true,"uniqueKey":"balance","typeLabel":"object"}},"required":["id","brand_id","name","slug","status","budget_cents","platforms","geo_enabled","geo_targeting","max_payout_per_clip_cents","pause_threshold_percent","start_date","end_date","launched_at","created_at","balance"],"additionalProperties":false,"description":"A campaign that your agency can read.","uniqueKey":"","typeLabel":"object"},"example":{"id":"cmp_8a1d4e2f6b7c4d9e8f0a1b2c3d4e5f60","brand_id":"brd_3f9c0a1b2c3d4e5f60718293a4b5c6d7","name":"Autumn Roast Launch","slug":"autumn-roast-launch","status":"pending_payment","budget_cents":500000,"platforms":[{"platform":"instagram","cpm_cents":200},{"platform":"x","cpm_cents":150}],"geo_enabled":false,"geo_targeting":[],"max_payout_per_clip_cents":50000,"pause_threshold_percent":80,"start_date":"2026-10-31T09:12:00.000Z","end_date":"2026-11-30T09:12:00.000Z","launched_at":null,"created_at":"2026-10-31T09:12:00.000Z","balance":{"available_cents":0,"paid_gross_cents":0}},"examples":{"Example":{"title":"Example","value":{"id":"cmp_8a1d4e2f6b7c4d9e8f0a1b2c3d4e5f60","brand_id":"brd_3f9c0a1b2c3d4e5f60718293a4b5c6d7","name":"Autumn Roast Launch","slug":"autumn-roast-launch","status":"pending_payment","budget_cents":500000,"platforms":[{"platform":"instagram","cpm_cents":200},{"platform":"x","cpm_cents":150}],"geo_enabled":false,"geo_targeting":[],"max_payout_per_clip_cents":50000,"pause_threshold_percent":80,"start_date":"2026-10-31T09:12:00.000Z","end_date":"2026-11-30T09:12:00.000Z","launched_at":null,"created_at":"2026-10-31T09:12:00.000Z","balance":{"available_cents":0,"paid_gross_cents":0}}}},"exampleType":"examples"}},"exampleType":"examples"},"7877b2d8-af6b-408e-bcfc-bda715a65c9d":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","title":"Bad request error (400)","description":"The error envelope every failed request returns.","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request"],"description":"A stable, machine-readable error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, in words a person can act on.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"request_id":{"type":"string","description":"The id of this request. Quote it when you contact support.","isRequired":true,"uniqueKey":"error.request_id","typeLabel":"string"}},"required":["code","message","request_id"],"additionalProperties":false,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"Bad request error (400) · object"},"example":{"error":{"code":"invalid_request","message":"Set a CPM for instagram. Without it those submissions would earn nothing.","request_id":"6f1c2a9e-4b7d-4c1a-9e2f-3a8b5c7d9e10"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"invalid_request","message":"Set a CPM for instagram. Without it those submissions would earn nothing.","request_id":"6f1c2a9e-4b7d-4c1a-9e2f-3a8b5c7d9e10"}}}},"exampleType":"examples"}},"exampleType":"examples"},"19553303-4eee-49d8-8b22-ab09bd11ee33":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","title":"Unauthorized error (401)","description":"The error envelope every failed request returns.","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["unauthorized"],"description":"A stable, machine-readable error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, in words a person can act on.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"request_id":{"type":"string","description":"The id of this request. Quote it when you contact support.","isRequired":true,"uniqueKey":"error.request_id","typeLabel":"string"}},"required":["code","message","request_id"],"additionalProperties":false,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"Unauthorized error (401) · object"},"example":{"error":{"code":"unauthorized","message":"Provide a valid API key as `Authorization: Bearer ck_live_...`.","request_id":"0b7e4d2c-9a1f-4e3b-8c6d-5f2a1b9c7e34"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"unauthorized","message":"Provide a valid API key as `Authorization: Bearer ck_live_...`.","request_id":"0b7e4d2c-9a1f-4e3b-8c6d-5f2a1b9c7e34"}}}},"exampleType":"examples"}},"exampleType":"examples"},"027f31d7-122d-4cc3-b251-907a857514b3":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","title":"Forbidden error (403)","description":"The error envelope every failed request returns.","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["forbidden"],"description":"A stable, machine-readable error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, in words a person can act on.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"request_id":{"type":"string","description":"The id of this request. Quote it when you contact support.","isRequired":true,"uniqueKey":"error.request_id","typeLabel":"string"}},"required":["code","message","request_id"],"additionalProperties":false,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"Forbidden error (403) · object"},"example":{"error":{"code":"forbidden","message":"This API key cannot create campaigns. Create a key with write access in Settings, API keys.","request_id":"9e8d7c6b-5a4f-4e3d-8c2b-1a0f9e8d7c65"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"forbidden","message":"This API key cannot create campaigns. Create a key with write access in Settings, API keys.","request_id":"9e8d7c6b-5a4f-4e3d-8c2b-1a0f9e8d7c65"}}}},"exampleType":"examples"}},"exampleType":"examples"},"b034d3da-ddb6-499d-840c-5db2087217a8":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","title":"Not found error (404)","description":"The error envelope every failed request returns.","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["not_found"],"description":"A stable, machine-readable error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, in words a person can act on.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"request_id":{"type":"string","description":"The id of this request. Quote it when you contact support.","isRequired":true,"uniqueKey":"error.request_id","typeLabel":"string"}},"required":["code","message","request_id"],"additionalProperties":false,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"Not found error (404) · object"},"example":{"error":{"code":"not_found","message":"No such brand.","request_id":"3c9a8b7d-2e1f-4a6b-9c8d-7e6f5a4b3c21"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"not_found","message":"No such brand.","request_id":"3c9a8b7d-2e1f-4a6b-9c8d-7e6f5a4b3c21"}}}},"exampleType":"examples"}},"exampleType":"examples"},"2e5e8419-3a52-42ae-b342-30fdec809376":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","title":"Conflict error (409)","description":"The error envelope every failed request returns.","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["conflict"],"description":"A stable, machine-readable error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, in words a person can act on.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"request_id":{"type":"string","description":"The id of this request. Quote it when you contact support.","isRequired":true,"uniqueKey":"error.request_id","typeLabel":"string"}},"required":["code","message","request_id"],"additionalProperties":false,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"Conflict error (409) · object"},"example":{"error":{"code":"conflict","message":"A campaign with this name already exists for your brand.","request_id":"2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"conflict","message":"A campaign with this name already exists for your brand.","request_id":"2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e"}}}},"exampleType":"examples"}},"exampleType":"examples"},"a59a6e8f-9773-4cfb-89a9-a62884ab75eb":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","title":"Internal server error error (500)","description":"The error envelope every failed request returns.","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["internal_error"],"description":"A stable, machine-readable error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, in words a person can act on.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"request_id":{"type":"string","description":"The id of this request. Quote it when you contact support.","isRequired":true,"uniqueKey":"error.request_id","typeLabel":"string"}},"required":["code","message","request_id"],"additionalProperties":false,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"Internal server error error (500) · object"},"example":{"error":{"code":"internal_error","message":"An unexpected error occurred.","request_id":"5a4b3c2d-1e0f-4a9b-8c7d-6e5f4a3b2c19"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"internal_error","message":"An unexpected error occurred.","request_id":"5a4b3c2d-1e0f-4a9b-8c7d-6e5f4a3b2c19"}}}},"exampleType":"examples"}},"exampleType":"examples"},"cf90f79d-5d5e-4f60-bec9-8e519008d8f2":{"description":"Service unavailable","content":{"application/json":{"schema":{"type":"object","title":"Service unavailable error (503)","description":"The error envelope every failed request returns.","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["unavailable"],"description":"A stable, machine-readable error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, in words a person can act on.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"request_id":{"type":"string","description":"The id of this request. Quote it when you contact support.","isRequired":true,"uniqueKey":"error.request_id","typeLabel":"string"}},"required":["code","message","request_id"],"additionalProperties":false,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"Service unavailable error (503) · object"},"example":{"error":{"code":"unavailable","message":"ClipStake is undergoing scheduled maintenance. Try again shortly.","request_id":"7c6b5a4f-3e2d-4c1b-9a8f-7e6d5c4b3a29"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"unavailable","message":"ClipStake is undergoing scheduled maintenance. Try again shortly.","request_id":"7c6b5a4f-3e2d-4c1b-9a8f-7e6d5c4b3a29"}}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"8cf52f9c-2c62-46f0-8d89-fe7fb88bd072":{"Authorization":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"Authorization"}}},"servers":{"712e0b98-18c5-4563-8202-6e27b4b3cffc":{"url":"https://app.clipstake.com/api/v1/agency"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"Authorization"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"Authorization","name":"Authorization"}],"title":"Authorization"}]},"originalFileLocation":"agency-api/openapi.json"},"subdomain":"clipstake-618eb5ee","siteName":"ClipStake Developer Docs","title":"Create a campaign - ClipStake Developer Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-04T11:43:13.837Z","originalFileLocation":"api-reference/campaigns/create-a-campaign.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Creates a campaign for one of your brands. The campaign starts as pending_payment. Fund it and launch it in the dashboard. The API key must have write access. The campaign runs the same checks as the dashboard. A name that the brand already uses returns 409, so a retry of a request that succeeded does not make a second campaign.\">\u003cmeta data-mint-head name=\"application-name\" content=\"ClipStake Developer Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/clipstake-618eb5ee/86fyYlt-B-ruXaHw/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/clipstake-618eb5ee/86fyYlt-B-ruXaHw/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/clipstake-618eb5ee/86fyYlt-B-ruXaHw/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/clipstake-618eb5ee/86fyYlt-B-ruXaHw/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/clipstake-618eb5ee/86fyYlt-B-ruXaHw/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/clipstake-618eb5ee/86fyYlt-B-ruXaHw/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/clipstake-618eb5ee/86fyYlt-B-ruXaHw/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/clipstake-618eb5ee/86fyYlt-B-ruXaHw/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/clipstake-618eb5ee/86fyYlt-B-ruXaHw/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create a campaign - ClipStake Developer Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Creates a campaign for one of your brands. The campaign starts as pending_payment. Fund it and launch it in the dashboard. The API key must have write access. The campaign runs the same checks as the dashboard. A name that the brand already uses returns 409, so a retry of a request that succeeded does not make a second campaign.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"ClipStake Developer Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.clipstake.com/api-reference/campaigns/create-a-campaign\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://clipstake-618eb5ee.mintlify.site/_mintlify/api/og/v2?division=Campaigns\u0026amp;title=Create+a+campaign\u0026amp;description=Creates+a+campaign+for+one+of+your+brands.+The+campaign+starts+as+%60pending_payment%60.+Fund+it+and+launch+it+in+the+dashboard.+The+API+key+must+have+write+access.\u0026amp;theme=752973628dc7a5916322a68b\u0026amp;signature=38a24512d1c37330efb718d38e6baba79539a8e5cceeb448ff70f05fcb924568\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Create a campaign - ClipStake Developer Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Creates a campaign for one of your brands. The campaign starts as pending_payment. Fund it and launch it in the dashboard. The API key must have write access. The campaign runs the same checks as the dashboard. A name that the brand already uses returns 409, so a retry of a request that succeeded does not make a second campaign.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://clipstake-618eb5ee.mintlify.site/_mintlify/api/og/v2?division=Campaigns\u0026amp;title=Create+a+campaign\u0026amp;description=Creates+a+campaign+for+one+of+your+brands.+The+campaign+starts+as+%60pending_payment%60.+Fund+it+and+launch+it+in+the+dashboard.+The+API+key+must+have+write+access.\u0026amp;theme=752973628dc7a5916322a68b\u0026amp;signature=38a24512d1c37330efb718d38e6baba79539a8e5cceeb448ff70f05fcb924568\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/clipstake-618eb5ee/86fyYlt-B-ruXaHw/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"ClipStake Developer Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#CE1111\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.clipstake.com/api-reference/campaigns/create-a-campaign\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/campaigns/create-a-campaign.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.clipstake.com/#organization\",\"name\":\"ClipStake Developer Docs\",\"url\":\"https://docs.clipstake.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/clipstake-618eb5ee/Jsnu6q5jiHt_YP3R/clipstake-logo-light.svg?fit=max\u0026auto=format\u0026n=Jsnu6q5jiHt_YP3R\u0026q=85\u0026s=7681e523e43fb1457a67bd8fef8635d9\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.clipstake.com#website\",\"name\":\"ClipStake Developer Docs\",\"url\":\"https://docs.clipstake.com\",\"publisher\":{\"@id\":\"https://docs.clipstake.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.clipstake.com/api-reference/campaigns/create-a-campaign#webpage\",\"url\":\"https://docs.clipstake.com/api-reference/campaigns/create-a-campaign\",\"name\":\"Create a campaign\",\"description\":\"Creates a campaign for one of your brands. The campaign starts as pending_payment. Fund it and launch it in the dashboard. The API key must have write access. The campaign runs the same checks as the dashboard. A name that the brand already uses returns 409, so a retry of a request that succeeded does not make a second campaign.\",\"dateModified\":\"2026-11-04T11:43:13.837Z\",\"isPartOf\":{\"@id\":\"https://docs.clipstake.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.clipstake.com/api-reference/campaigns/create-a-campaign#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.clipstake.com/api-reference/campaigns/create-a-campaign#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API Reference\",\"item\":\"https://docs.clipstake.com/api-reference/brands/list-brands\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Campaigns\",\"item\":\"https://docs.clipstake.com/api-reference/campaigns/list-campaigns\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Create a campaign\",\"item\":\"https://docs.clipstake.com/api-reference/campaigns/create-a-campaign\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.clipstake.com/api-reference/campaigns/create-a-campaign#apireference\",\"headline\":\"Create a campaign\",\"name\":\"Create a campaign\",\"description\":\"Creates a campaign for one of your brands. The campaign starts as pending_payment. Fund it and launch it in the dashboard. The API key must have write access. The campaign runs the same checks as the dashboard. A name that the brand already uses returns 409, so a retry of a request that succeeded does not make a second campaign.\",\"url\":\"https://docs.clipstake.com/api-reference/campaigns/create-a-campaign\",\"mainEntityOfPage\":{\"@id\":\"https://docs.clipstake.com/api-reference/campaigns/create-a-campaign#webpage\"},\"dateModified\":\"2026-11-04T11:43:13.837Z\",\"publisher\":{\"@id\":\"https://docs.clipstake.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.clipstake.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"ClipStake Developer Docs\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"ClipStake Developer Docs\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/campaigns/create-a-campaign.md","siteName":"ClipStake Developer Docs","nav":{"global":null,"products":[{"product":"Console API","icon":"terminal","description":"For developers who track media in the console.","pages":[{"title":"Console API","href":"/introduction"}]},{"product":"Agency API","icon":"chart-line","description":"For agencies that read their campaign data and create campaigns.","groups":[{"group":"Getting Started","pages":[{"title":"Agency API","href":"/agency-api/introduction"},{"title":"Quickstart","href":"/agency-api/quickstart"}]},{"group":"API Reference","pages":[{"group":"Brands","pages":[{"title":"List brands","deprecated":null,"version":null,"openapi":"/agency-api/openapi.json get /brands","href":"/api-reference/brands/list-brands"},{"title":"Get a brand","deprecated":null,"version":null,"openapi":"/agency-api/openapi.json get /brands/{brand_id}","href":"/api-reference/brands/get-a-brand"}]},{"group":"Campaigns","pages":[{"title":"List campaigns","deprecated":null,"version":null,"openapi":"/agency-api/openapi.json get /campaigns","href":"/api-reference/campaigns/list-campaigns"},{"title":"Get a campaign","description":"Returns one campaign. An ID your agency cannot read gives 404.","deprecated":null,"version":null,"openapi":"/agency-api/openapi.json get /campaigns/{campaign_id}","href":"/api-reference/campaigns/get-a-campaign"},{"title":"Create a campaign","deprecated":null,"version":null,"openapi":"/agency-api/openapi.json post /campaigns","href":"/api-reference/campaigns/create-a-campaign"},{"title":"Get campaign metrics","description":"Returns the views, spend, CPM and engagement of one campaign. These are the figures on the campaign Analytics tab. A metric that was not measured is null.","deprecated":null,"version":null,"openapi":"/agency-api/openapi.json get /campaigns/{campaign_id}/metrics","href":"/api-reference/campaigns/get-campaign-metrics"},{"title":"Get campaign countries","deprecated":null,"version":null,"openapi":"/agency-api/openapi.json get /campaigns/{campaign_id}/countries","href":"/api-reference/campaigns/get-campaign-countries"}]},{"group":"Clips","pages":[{"title":"List the clips of a campaign","deprecated":null,"version":null,"openapi":"/agency-api/openapi.json get /campaigns/{campaign_id}/clips","href":"/api-reference/clips/list-the-clips-of-a-campaign"},{"title":"Get a clip","deprecated":null,"version":null,"openapi":"/agency-api/openapi.json get /clips/{clip_id}","href":"/api-reference/clips/get-a-clip"}]}]},{"group":"Developer Guides","pages":[{"title":"Authentication","href":"/agency-api/authentication"},{"title":"Create campaigns","href":"/agency-api/create-campaigns"},{"title":"Pagination","href":"/agency-api/pagination"},{"title":"Errors","href":"/agency-api/errors"}]}]},{"product":"Brand API","icon":"store","description":"For brands that read the data of their campaigns.","pages":[{"title":"Brand API","href":"/brand-api/introduction"}]},{"product":"Creator API","icon":"clapperboard","description":"For creators who submit clips from their own tools.","pages":[{"title":"Creator API","href":"/creator-api/introduction"}]}]},"basePath":"","title":"Create a campaign - ClipStake Developer Docs","buildId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","deploymentId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CybtLBIt.js","utils-BMLj2fvV.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-B6In562Y.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Dr8Mfhp9.js","snippetPresets-2rmQvMVl.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-WMqJYdZj.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CJ-MlPHu.js","shallow-dY3TMRCk.js","getApiPlaygroundDisplay-v-1B2bKm.js","CodeSnippet-BDhiTB7U.js","CodeSnippets-D9hnzQcS.js","Page-C4GwDT3_.js","getPastedJson-Th2V45jI.js","icon-BQXch1W9.js","MethodPill-BCqUneP3.js","DuplicateIcon-Q_-bhurZ.js","createIcon-DUjLHRqp.js","DynamicMarkdown-B-f2cqXQ.js","SectionHeading-Da5NsV4v.js","axios-vUo_bRtp.js","Markdown-D13FWkIM.js","clsx-D3Isdib3.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-C-XZBk9h.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink--qIqmmVG.js"]}