---
title: "Customer burn headline and runway composite (accountant mirror)"
method: GET
path: "/accountant/companies/{customerId}/metrics/burn-runway"
tags: ["Overview"]
---

# Customer burn headline and runway composite (accountant mirror)

`GET /accountant/companies/{customerId}/metrics/burn-runway`

## Request

- Base URL: `https://api.medianfi.com/api/v1`
- URL: `https://api.medianfi.com/api/v1/accountant/companies/{customerId}/metrics/burn-runway`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Accountant-scoped mirror of `GET /companies/{companyId}/metrics/burn-runway`. Same service, same honesty gates (one-third uncategorized refusal, etc). Entity scope is resolved from the customer's own entity roster (accountants hold no per-user entity grants): an explicit `entityId` must be one of the customer's concrete (non-group) entities; absent, the customer's single concrete entity is used; a multi-entity customer without `entityId` gets 422 ENTITY_SELECTION_REQUIRED and a customer with no entity gets 422 ENTITY_SCOPE_UNAVAILABLE.

## Response `200`

Burn and runway payload (same shape as the customer mount)

- BurnRunwayResponse
  - `success` true, required
  - `data` BurnRunwayData, required
    - `headline` object, required: MetricResult of ExactMoney: the trailing-three-completed-month signed net burn average (single BigInt half-away-from-zero divide). available:false carries `reason` and, for insufficient_history, `diagnostic.missingMonths` — never a value.
      - `available` boolean, required
      - `reason` string
      - `value` ExactMoney: Exact money value: signed integer minor units as a string (never a float), with explicit currency and minor-unit exponent.
        - `amountMinor` string, required: Signed integer minor units, e.g. "80000" = $800.00 at exponent 2.
        - `currency` string, required
        - `minorUnitExponent` integer, required
      - `diagnostic` object
        - `missingMonths` string[]
      - `authority` object
        - `companyId` string, uuid, required
        - `entityId` string, uuid, required
        - `basis` 'posted_operating_net_burn', required
        - `asOf` string, required
        - `startMonth` string
        - `endMonth` string
        - `monthKeys` string[]
        - `numeratorMinor` string: Exact signed three-month numerator, before the single divide.
        - `operatingCostsNumeratorMinor` string, required: Exact three-month posted operating cost total (minor units, headline currency and scale) behind the runway gate's uncategorized share.
        - `uncategorizedCostsNumeratorMinor` string, required: Exact three-month posted operating cost (minor units) sitting on uncategorized accounts. The runway composite refuses with `incomplete_provenance` when this exceeds one third of `operatingCostsNumeratorMinor`.
        - `denominatorMonths` 3
      - `completeness` MetricCompleteness, required: Coverage assertion for a per-metric value/authority contract. An available metric carries all three booleans as true.
        - `windowComplete` boolean, required
        - `sourceComplete` boolean, required
        - `provenanceComplete` boolean, required
        - `historyCompleteFrom` string
        - `booksAsOf` string
        - `sourceGeneration` string
    - `series` object, required: MetricResult of a completed-month MoneySeries: each numeric slot is the trailing-three-month average ending at that month ({month, state: observed|authoritative_zero, money: ExactMoney}); windows touching pre-history are omitted while authority.monthKeys names the full twelve-month window.
      - `available` boolean, required
      - `reason` string
      - `value` object
        - `slots` object[], required
          - `month` string, required
          - `state` 'observed' | 'authoritative_zero', required
          - `money` ExactMoney, required: Exact money value: signed integer minor units as a string (never a float), with explicit currency and minor-unit exponent.
            - `amountMinor` string, required: Signed integer minor units, e.g. "80000" = $800.00 at exponent 2.
            - `currency` string, required
            - `minorUnitExponent` integer, required
      - `diagnostic` object
        - `slots` object[]
          - `month` string, required
          - `state` 'unavailable' | 'padding', required
      - `authority` object
        - `companyId` string, uuid
        - `entityId` string, uuid
        - `basis` 'posted_operating_net_burn'
        - `asOf` string
        - `startMonth` string
        - `endMonth` string
        - `monthKeys` string[]
      - `completeness` MetricCompleteness, required: Coverage assertion for a per-metric value/authority contract. An available metric carries all three booleans as true.
        - `windowComplete` boolean, required
        - `sourceComplete` boolean, required
        - `provenanceComplete` boolean, required
        - `historyCompleteFrom` string
        - `booksAsOf` string
        - `sourceGeneration` string
    - `runway` object, required: MetricResult whose value is a discriminated state — {state: finite, monthsFloor} | {state: depleted, monthsFloor: 0} | {state: non_burning} — with composite authority carrying BOTH input authorities (cash, burn). Never a negative month count.
      - `available` boolean, required
      - `reason` 'insufficient_history' | 'source_not_authorized' | 'syncing' | 'stale' | 'failed' | 'mixed_currency' | 'entity_scope_unavailable' | 'incomplete_provenance' | 'insufficient_inputs' | 'truncated': Why runway is withheld. Resolved in this precedence order. (1) `failed`: minted by the composite whenever EITHER input (the cash reading or the net-burn headline) is unavailable with reason `failed`; it outranks every other reason so a read fault is never masked as honest absence. (2) Otherwise, when the net-burn headline is unavailable its own `reason` passes through unchanged (e.g. `insufficient_history` for fewer than three completed months). (3) Otherwise, when the cash reading is unavailable its own `reason` passes through unchanged. (4) With both inputs available the composite mints, checked in this order: `entity_scope_unavailable` (an input authority is not the requested company and entity), `mixed_currency` (cash and burn disagree on currency or minor-unit exponent), then `incomplete_provenance` (more than one third of the three-month posted operating cost is uncategorized; the only reason that carries `diagnostic`). The composite itself never mints `insufficient_history`, `source_not_authorized`, `syncing`, `stale`, `insufficient_inputs` or `truncated`; those only ever pass through from an input.
      - `value` object
        - `state` 'finite' | 'depleted' | 'non_burning', required
        - `monthsFloor` integer
      - `diagnostic` object: Present only on the composite's own `incomplete_provenance` refusal: the exact three-month window totals behind the one-third rule, so support can see how far over the line a customer sits without re-deriving it. Minor units in the net-burn headline's currency and scale; never a runway value.
        - `uncategorizedCostsMinor` string, required
        - `operatingCostsMinor` string, required
      - `authority` object
        - `companyId` string, uuid
        - `entityId` string, uuid
        - `basis` 'runway_composite'
        - `asOf` string
        - `inputs` object
          - `cash` object
          - `burn` object
      - `completeness` MetricCompleteness, required: Coverage assertion for a per-metric value/authority contract. An available metric carries all three booleans as true.
        - `windowComplete` boolean, required
        - `sourceComplete` boolean, required
        - `provenanceComplete` boolean, required
        - `historyCompleteFrom` string
        - `booksAsOf` string
        - `sourceGeneration` string

## Other responses

- `401`: Authentication required
- `403`: Insufficient permissions or not a company member
- `404`: Unknown customer
- `422`: Request failed validation

---

[API](https://skmtc.dev/medianfi/apis/median-api.md) · [All operations](https://skmtc.dev/medianfi/apis/median-api/llms.txt) · [OpenAPI document](https://skmtc.dev/medianfi/apis/median-api/revisions/20090ea32b0d?raw)
