---
title: "Per-job (filled + open) cost breakdown contributing to a budget, with per-month detail"
method: GET
path: "/v1/org/{orgId}/budget/{budgetId}/breakdown"
tags: ["budget"]
---

# Per-job (filled + open) cost breakdown contributing to a budget, with per-month detail

`GET /v1/org/{orgId}/budget/{budgetId}/breakdown`

## Request

- Base URL: `https://localhost`
- URL: `https://localhost/v1/org/{orgId}/budget/{budgetId}/breakdown`
- Auth: none declared
- TypeScript: <https://skmtc.dev/charthop/apis/charthop-api/docs/v1/org/:orgId/budget/:budgetId/breakdown/get.ts> (a function with typed inputs; its response is checked against the schema)

## Path parameters

- `orgId` string, required
- `budgetId` string, required

## Query parameters

- `date` string, date
- `q` string
- `format` string

## Response `200`

ok

- BudgetBreakdownResponse
  - `basis` 'ANNUALIZED' | 'PERIOD_TOTAL', required: the effective cost basis the breakdown was computed on
  - `currency` string, required: currency of every money value in this response
  - `months` BudgetBreakdownMonth[], required: the fiscal-period month columns, in order; empty for an ANNUALIZED budget (no monthly breakdown)
    - `segStart` string, date, required: first day of the month segment (inclusive)
    - `segEndExcl` string, date, required: first day after the month segment (exclusive)
  - `rows` BudgetBreakdownRow[], required: one row per contributing job the caller can see, filled and open
    - `jobId` string, required: the job id
    - `title` string, required: job title
    - `personId` string: person id filling the job, null for an open (unfilled) job
    - `personName` string: preferred display name of the person, null for an open (unfilled) job
    - `personImagePath` string: path to the person's profile image, null for an open (unfilled) job or a person without one
    - `filled` boolean, required: true when the job is filled as of its first in-period appearance
    - `missingCompData` boolean, required: true when an open job has neither its own comp nor a comp band (renders the 'Missing comp data' state)
    - `plannedStartDate` string, date: planned start date for an open (unfilled) role; null for a filled job
    - `totalAnnualized` Money
      - `amount` number, required
      - `currency` string, required
      - `places` integer
    - `totalApplied` Money, required
      - `amount` number, required
      - `currency` string, required
      - `places` integer
    - `monthlyCosts` Money[], required: per-month cost aligned to months; zero cell = dash (empty for an ANNUALIZED budget)
      - `amount` number, required
      - `currency` string, required
      - `places` integer
  - `summary` BudgetBreakdownSummary, required
    - `jobCount` integer, required: number of visible rows
    - `filledCount` integer, required: number of filled jobs
    - `openCount` integer, required: number of open (unfilled) jobs
    - `missingCompDataCount` integer, required: number of open jobs missing comp data (a subset of openCount)
    - `totalApplied` Money, required
      - `amount` number, required
      - `currency` string, required
      - `places` integer

## Other responses

- `400`: bad request
- `401`: not authorized
- `404`: not found

## Changes

- **2026-10-07** `591c5cbd4de7`: 1 info
  - added the new optional `query` request parameter `format`
- **2026-08-13** `33fc84a173ce`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/charthop/apis/charthop-api/changes/v1/org/:orgId/budget/:budgetId/breakdown/get.md)

---

[API](https://skmtc.dev/charthop/apis/charthop-api.md) - [All operations](https://skmtc.dev/charthop/apis/charthop-api/llms.txt) - [OpenAPI document](https://skmtc.dev/charthop/apis/charthop-api/revisions/5abf11116bbb?raw)
