Menu

API reference · Media Planner

Costs

media_planner · costs · 1 operation

GET/v1/media-planner/plans/{plan_id}/costs/breakdown

Get the per-campaign spend breakdown of a plan

media_planner.costs.breakdown

ReadIdempotentSince 2026-11-01

Returns the spend breakdown that the last cost sync of a platforms-mode or account-mode plan stored: per platform, its currency and the real campaigns of the connected accounts with their spend (sorted by spend, up to 100 per platform; truncated says how many more and their spend), with the status when the platform returns it (Google Ads). null if the plan was never synced in those modes (campaigns-mode plans have no breakdown: each row is already a campaign). It does not call any platform. Requires view access to the Media Planner. With Google Ads, LinkedIn or TikTok, their terms limit it through the API and the MCP: what they do not allow answers 403 platform_terms_restricted, and their fields are left out of the response (the permissions guide lists what each platform allows).

Scope
media_planner:read
Permission
View the module
MCP tool
media_planner_costs_breakdownOn the full surface; on the compact one, mb_execute_operation with id: "media_planner.costs.breakdown".

Declared cost: up to 2 reads and 0 writes per call (they count against the daily quota).

Parameters

plan_idstringpathrequired

Media plan id (from media_planner.plans.list).

Response

breakdownobject | null

null until the plan's costs are synced.

Errors

Example

curl "https://api.mb-suite.com/v1/media-planner/plans/{plan_id}/costs/breakdown" \
  -H "Authorization: Bearer $MB_API_KEY"

Try it with your test API key

With a test API key the request always goes to your practice organization: example data you can reset.

curl "https://api.mb-suite.com/v1/media-planner/plans/{plan_id}/costs/breakdown" \
  -H "Authorization: Bearer $MB_TEST_KEY"