Campaigns
Create a campaign and its challenge from a public Instagram or TikTok post URL, then list, summarise, end or delete it.
List campaigns
Lists active campaigns, newest first, with the caller's own attempt on each.
A row is not the create response reshaped: the campaign is flattened, brandName and brandLogoUrl are joined in, challenge is trimmed to id, platform, contentType, canonicalUrl and instructionText, and myAttempt carries the calling token's attempt on that challenge or null. There is no isActive, because only active campaigns are listed — use GET /campaigns/{id} to read one that has ended.
Authorization
AuthorizationRequiredBearer <token>API token. Send it as Authorization: Bearer <API_TOKEN>.
In: header
Query Parameters
pageinteger1Minimum: 1limitinteger20Minimum: 1Maximum: 100Paginated campaign list
Get campaign details
Authorization
AuthorizationRequiredBearer <token>API token. Send it as Authorization: Bearer <API_TOKEN>.
In: header
Path Parameters
idRequiredintegerCampaign details with challenge info
Create campaign with challenge
Creates a campaign and its single challenge in one call. The challenge's platform, content type and content id are parsed from challenge.targetUrl.
pointsReward must be a whole number of 1 or more. It is only spent by engagement verification, but it is required whether or not you use it.
The response's challenge.id is the challengeId every later request takes.
Authorization
AuthorizationRequiredBearer <token>API token. Send it as Authorization: Bearer <API_TOKEN>.
In: header
Request Body
application/jsonRequiredbrandIdRequiredintegertitleRequiredstringdescriptionstringimageUrlstring"uri"pointsRewardRequiredinteger1startsAtstring"date-time"endsAtstring"date-time"challengeRequiredobjectCampaign created
Get campaign summary stats
Returns attempt counts by state, total verified, rewarded, and points issued.
Authorization
AuthorizationRequiredBearer <token>API token. Send it as Authorization: Bearer <API_TOKEN>.
In: header
Path Parameters
idRequiredintegerCampaign summary
Get campaign participant results
Authorization
AuthorizationRequiredBearer <token>API token. Send it as Authorization: Bearer <API_TOKEN>.
In: header
Path Parameters
idRequiredintegerQuery Parameters
pageinteger1limitinteger20statestringFilter by attempt state
"created" | "target_opened" | "awaiting_claim" | "verification_pending" | "verified" | "rewarded" | "failed_retryable" | "failed_terminal"Participant results
Batch verify and reward creators
Matches verified creators who have post comments matching their username but no existing attempt. Creates attempts in verified state, enqueues reward jobs, and dispatches creator.verified webhooks (followed by reward.issued once the reward worker runs).
Authorization
AuthorizationRequiredBearer <token>API token. Send it as Authorization: Bearer <API_TOKEN>.
In: header
Path Parameters
idRequiredintegerBatch result
End campaign
Soft-finish a campaign: sets isActive = false and endsAt to now (or keeps earlier endsAt if already past). Existing attempts and rewards are preserved. Idempotent.
Authorization
AuthorizationRequiredBearer <token>API token. Send it as Authorization: Bearer <API_TOKEN>.
In: header
Path Parameters
idRequiredintegerCampaign ended
Delete campaign
Hard-deletes a campaign and its challenge, including stored post comments and metrics. Only permitted when the challenge has zero attempts. If any attempts exist, returns 409 CAMPAIGN_HAS_ACTIVITY — end the campaign instead.
Authorization
AuthorizationRequiredBearer <token>API token. Send it as Authorization: Bearer <API_TOKEN>.
In: header
Path Parameters
idRequiredintegerCampaign deleted
Last updated on