Expenses#

Read manual expenses and provider-reported advertising spend together, with explicit provenance and aggregate spend reporting across Activities.

Authentication required

All endpoints require a Bearer token in the Authorization header. See the Authentication guide for setup instructions.

GET /v1/expenses#

List manual expense records and read-only provider-reported advertising spend across Activities. Provenance distinguishes editable expenses from retained platform measurements. Sort the combined ledger before pagination.

bash
GET /v1/expenses?page_index=0&page_size=25&workspace_id=1c7743a8-6410-4a9e-9f3b-2c1d5e8a4b01
Authorization: Bearer {token}

Parameters#

NameTypeRequiredDescription
pageIndexintegerRequiredZero-based page index for pagination.
pageSizeintegerRequiredNumber of items per page (1-100).
dateFromstring—Earliest date to include, as YYYY-MM-DD in the workspace timezone.
dateTostring—Latest date to include, as YYYY-MM-DD in the workspace timezone. Use the same date as dateFrom for a single day.
workspaceIdstring (UUID)RequiredWorkspace identifier.
activityIdstring (UUID)—Filter by activity identifier.
creatorIdstring (UUID)—Filter by creator identifier.
campaignIdstring (UUID)—Filter by campaign identifier.
searchTermstring—Search expense category, description, or activity name.
categoryIdstring (UUID)—Filter by expense category identifier.
sortBy'amount' | 'createdAt'—Expense field to sort by.
sortDirection'asc' | 'desc'—Sort direction: ascending or descending.

Response#

Returns { items, totalCount, facets, _meta } with paginated results.

GET /v1/expenses/count#

Count the manual expense and provider-reported spend records shown in the Spend ledger, with optional Activity, creator, or Campaign filters.

bash
GET /v1/expenses/count?workspace_id=1c7743a8-6410-4a9e-9f3b-2c1d5e8a4b01
Authorization: Bearer {token}

Parameters#

NameTypeRequiredDescription
workspaceIdstring (UUID)RequiredWorkspace identifier.
activityIdstring (UUID)—Filter by activity identifier.
creatorIdstring (UUID)—Filter by creator identifier.
campaignIdstring (UUID)—Filter by campaign identifier.

Response#

Returns { count, _meta }.

GET /v1/expenses/stats#

Aggregate total spend, spend coverage, non-campaign spend, and largest category using the active spend filters.

bash
GET /v1/expenses/stats?workspace_id=1c7743a8-6410-4a9e-9f3b-2c1d5e8a4b01
Authorization: Bearer {token}

Parameters#

NameTypeRequiredDescription
dateFromstring—Earliest date to include, as YYYY-MM-DD in the workspace timezone.
dateTostring—Latest date to include, as YYYY-MM-DD in the workspace timezone. Use the same date as dateFrom for a single day.
workspaceIdstring (UUID)RequiredWorkspace identifier.
activityIdstring (UUID)—Unique identifier (UUID v4).
creatorIdstring (UUID)—Unique identifier (UUID v4).
campaignIdstring (UUID)—Unique identifier (UUID v4).
searchTermstring—
categoryIdstring (UUID)—Unique identifier (UUID v4).

Response#

Returns { data, _meta } with the result.

GET /v1/expenses/history#

Fetch daily recorded marketing spend and a running cumulative total for a date range. Each spend is attributed to the day its activity ran (publish date for social content, start date for other channels) and days without spend are zero-filled, so budget and spend read alongside traffic and brand signals on one timeline.

bash
GET /v1/expenses/history?workspace_id=1c7743a8-6410-4a9e-9f3b-2c1d5e8a4b01&start_date=...&end_date=...
Authorization: Bearer {token}

Parameters#

NameTypeRequiredDescription
workspaceIdstring (UUID)RequiredWorkspace identifier.
startDatestringRequiredFirst day of the range (YYYY-MM-DD, inclusive).
endDatestringRequiredLast day of the range (YYYY-MM-DD, inclusive).

Response#

Returns { items, totalCount, facets, _meta } with paginated results.