Your total spend
What you have committed across all your campaigns, in a single call rather than a loop over each one.
If any campaign has no price recorded, the response says how many — so a partial total is never presented to you as a complete one.
Authorization
ClientBearer Client-scoped key as a Bearer JWT; always pinned to your own client.
In: header
Query Parameters
Start of the window (inclusive), any parseable date.
End of the window (exclusive).
true to include DRAFT campaigns. Default false.
Response Body
application/json
curl -X GET "https://example.com/client/spend"{ "success": true, "data": { "from": "2026-01-01T00:00:00.000Z", "to": null, "includeDrafts": false, "campaigns": 12, "priced": 11, "total": 184320.5, "taxes": 0, "discounts": 1200, "sources": { "extraData": 3, "cityMetrics": 8, "unpriced": 1 }, "complete": false, "adjustments": [ { "code": "TRUNCATED", "field": "total", "detail": "1 of 12 campaigns in this window carry no cost figure at all, so this total covers only the 11 that do and is LOWER than the real spend.", "requested": 12, "applied": 11, "affects": [ "total", "taxes", "discounts" ] } ] }}Your account and team GET
Your own account — name, code, logo, website, status, industry and country — together with your team members and their roles. It always returns your own account; there is no id to pass.
Channel rules and lead times GET
For each channel: the minimum order, the lead time, the mail-piece formats available, and whether Oppizi runs it. Every figure says where it comes from. `enforced` means it is applied when you submit. `none` means we checked and there genuinely is no rule. `unconfirmed` means the figure is not yet settled — plan around it, but confirm before you commit to it.