Campaign spend summary
The four core metrics for a campaign: total videos, total views, total spend (Base + CPM), and total remaining budget (prepayment − spend). When prepayment is provided, also reports budget usage and whether spend has reached the top-up threshold.
Both tagIds and groupIds scope every metric here, spend included — pay lives on the pair, which carries both a tag and a creator. This is the endpoint to use for a group's total spend, since GET /campaign/daily cannot break that total down by day.
AuthorizationBearer <token>Provide your API key as Authorization: Bearer <key>.
cycleIds*stringComma-separated cycle ids to include in the campaign.
prepayment?numberTotal prepaid budget from the client (USD).
0 <= valuethresholdPct?numberBudget-usage percentage that flips atThreshold to true. Defaults to 70.
0 <= value70tagIds?stringComma-separated tag ids. When present, every metric (videos, views, and spend) is scoped to pairs carrying at least one of these tags. Get tag ids from GET /campaign/tags.
groupIds?stringComma-separated creator-group ids. When present, every metric (videos, views, and spend) is scoped to pairs whose creator is in at least one of these groups. Get group ids from GET /groups; __ungrouped__ selects creators in no group. An id that is not one of your brand's groups is a 400.
Campaign summary.
application/json- response
metrics?budget?|nullcurrency?stringcycles?array<>curl -X GET 'https://example.com/api/v0/campaign/summary?cycleIds=cyc_abc%2Ccyc_def&prepayment=50000&tagIds=tag_abc%2Ctag_def&groupIds=grp_abc%2Cgrp_def'{ "metrics": { "totalVideos": 0, "totalViews": 0, "totalSpend": 0, "totalRemains": 0 }, "budget": { "prepayment": 0, "budgetUsedPct": 0, "thresholdPct": 0, "atThreshold": true }, "currency": "string", "cycles": [ { "cycleId": "string", "startDate": "2019-08-24T14:15:22Z", "endDate": "2019-08-24T14:15:22Z", "status": "string", "videos": 0, "views": 0, "spend": 0 } ]}List creator groups and their members GET
Your brand's creator groups — the same groups you filter the Video Vault and the roster by — each with the ids of the creators in it. Use a returned `groupId` as `groupIds` on `GET /campaign/pairs`, or join `creatorIds` against the `creator.creatorId` on each pair. Groups are a property of the roster, not of a campaign, so this is not scoped to cycles. Membership is **current**, not historical: there is no record of when a creator joined or left a group, so re-running a report over an older cycle groups its pairs the way the roster looks today. Archived creators are included — their pairs stay in their cycles and keep appearing in the campaign endpoints. Empty groups come back with `creatorIds: []`. Groups are returned in your brand's own display order.
Campaign daily breakdown GET
Per-day videos posted, views generated, and spend (Base + CPM) across the campaign's cycles. Defaults to the full span the cycles cover, in your brand's timezone. Summing the days reproduces `GET /campaign/summary` for the same cycles: `videos` counts each video once on the day it was posted, `views` is each video's own day-over-day gain, and `spend` is the day-over-day increase in that day's cycle pay. `spend` is null on a day no requested cycle covers, and can be negative on a day a pair's pay was revised down. When `tagIds` is supplied, videos/views are scoped to that tag set and `spend` is null for every day — per-day spend cannot be attributed to a tag (pay is a cycle-level total on the pair). Use `GET /campaign/tags` for total spend by tag. `groupIds` scopes videos/views by the video's creator and also nulls `spend`, for a different reason: the daily spend series is differenced out of a pre-aggregated brand-wide table with no creator dimension. For a group's total spend, use `GET /campaign/summary` with the same filter.