Bloss Docs

Campaign spend summary

Developers
GET
/campaign/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.

Authorization

headerAuthorizationBearer <token>

Provide your API key as Authorization: Bearer <key>.

Query Parameters

cycleIds*string

Comma-separated cycle ids to include in the campaign.

prepayment?number

Total prepaid budget from the client (USD).

Range0 <= value
thresholdPct?number

Budget-usage percentage that flips atThreshold to true. Defaults to 70.

Range0 <= value
Default70
tagIds?string

Comma-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?string

Comma-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.

Response Body

Campaign summary.

application/json
  1. response
metrics?
budget?|null
currency?string
cycles?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    }  ]}

Was this page helpful?

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.