Creators
Create a campaign
Creates a campaign from a spec in the campaign sheet's vocabulary: cadence and payout window, video target, an optional brief, and the payouts (fixed salary, base payouts per video, CPM tiers, flat bonuses, a performance cap, the eligibility window). The organization's default currency and an anchor-dependent start date fill in when omitted. Validate first with POST /campaigns/validate to read the sentences describing the rules; pass its previewHash to guarantee the campaign written is the one reviewed.
post/campaigns
Request
- Base URL: https://viral.app/api/v1
- URL: https://viral.app/api/v1/campaigns
- Auth: API key in header x-api-key
Request body
Example request
{
"name": "Creators Spain",
"description": "Spanish-speaking creators, TikTok first",
"currency": "EUR",
"schedule": {
"interval": "month",
"intervalCount": 1,
"anchor": "rolling",
"startsOn": "2026-10-01"
},
"videoTarget": 30,
"payouts": {
"basePayouts": [
{
"perVideo": 10,
"minViews": 1000,
"platforms": [
"tiktok",
"instagram"
]
}
],
"cpmPayouts": [
{
"scope": "per_video",
"tiers": [
{
"from": 0,
"to": 100000,
"rate": 1
},
{
"from": 100000,
"rate": 1.5
}
]
}
],
"performanceCap": {
"amount": 1000
}
}
}Response
OK
Example response
{
"id": "orgcamp_RwmraAffhMt9",
"timeZone": "UTC",
"videoTargetUnit": "videos",
"status": "active",
"spec": {
"currency": "USD",
"schedule": {
"interval": "month",
"intervalCount": 1,
"anchor": "rolling",
"startsOn": "2026-10-01",
"timeZone": "UTC"
},
"videoTarget": 30,
"videoTargetUnit": "videos",
"briefId": "orgbrief_RwmraAffhMt9",
"payouts": {
"fixedSalary": {
"id": "rule_A1b2C3d4E5f6"
},
"basePayouts": [
{
"id": "rule_A1b2C3d4E5f6",
"perVideo": 10,
"steps": [
{
"id": "rule_A1b2C3d4E5f6",
"perVideo": 45
}
],
"minViews": 1000,
"platforms": [
"tiktok",
"instagram"
],
"conditions": {
"match": "all",
"items": [
{
"field": "contentType",
"operator": "is",
"values": [
"slideshow"
]
},
{
"field": "views",
"operator": "atLeast",
"value": 10000
}
]
},
"scope": "per_creative",
"creatives": "once"
}
],
"cpmPayouts": [
{
"scope": "per_video",
"creatives": "bestInWindow",
"platforms": [
"tiktok",
"instagram"
],
"conditions": {
"match": "all",
"items": [
{
"field": "contentType",
"operator": "is",
"values": [
"slideshow"
]
},
{
"field": "views",
"operator": "atLeast",
"value": 10000
}
]
},
"tiers": [
{
"id": "rule_A1b2C3d4E5f6",
"to": 100000,
"rate": 1
}
]
}
],
"flatBonuses": [
{
"scope": "per_video",
"creatives": "bestInWindow",
"mode": "highest",
"platforms": [
"tiktok",
"instagram"
],
"conditions": {
"match": "all",
"items": [
{
"field": "contentType",
"operator": "is",
"values": [
"slideshow"
]
},
{
"field": "views",
"operator": "atLeast",
"value": 10000
}
]
},
"tiers": [
{
"id": "rule_A1b2C3d4E5f6",
"to": 100000,
"amount": 50
}
]
}
],
"baseCap": {
"id": "rule_A1b2C3d4E5f6"
},
"performanceCap": {
"id": "rule_A1b2C3d4E5f6"
},
"eligibility": {
"windowDays": 31,
"publicationScope": "include_earlier"
}
}
},
"brief": {
"id": "orgbrief_RwmraAffhMt9"
},
"warnings": [
{
"accounts": [
{
"platform": "facebook",
"platformAccountId": "7123456789012345678"
}
]
}
]
}Changes
No recorded changes to this operation across all 1 revision of this API.