---
title: "Apply the exact books revenue baseline the customer reviewed"
method: POST
path: "/companies/{companyId}/forecast/{forecastId}/books-baseline/apply"
tags: ["Forecast"]
---

# Apply the exact books revenue baseline the customer reviewed

`POST /companies/{companyId}/forecast/{forecastId}/books-baseline/apply`

## Request

- Base URL: `https://api.medianfi.com/api/v1`
- URL: `https://api.medianfi.com/api/v1/companies/{companyId}/forecast/{forecastId}/books-baseline/apply`
- Auth: HTTP bearer

Atomically creates or refreshes the one system-owned ledger run-rate stream. A fingerprint mismatch returns 409 and writes nothing.

## Request body

- ApplyForecastBooksBaselineInput
  - `fingerprint` string, required: SHA-256 review token returned by the books-baseline review endpoint

## Response `200`

Applied baseline plus refreshed forecast aggregate

- object
  - `success` boolean
  - `data` object
    - `candidate` ForecastBooksBaselineCandidate, required
      - `forecastId` string, uuid, required
      - `authority` 'posted_calendar_gl_v2', required
      - `calculation` 'trailing_completed_month_average', required
      - `legalEntityId` string, uuid, required
      - `functionalCurrency` string, required
      - `minorUnitExponent` 2, required
      - `moneyAuthorityVersion` 1, required
      - `periods` ForecastBooksBaselinePeriod[], required
        - `period` string, required
        - `revenueCents` integer, required
      - `totalRevenueCents` integer, required
      - `monthlyRevenueCents` integer, required
      - `fingerprint` string, required
      - `current` ForecastBooksBaselineCurrent, required
        - `streamId` string, uuid, required
        - `monthlyRevenueCents` integer, required
        - `fingerprint` string, nullable, required
      - `isCurrent` boolean, required
    - `aggregate` ForecastAggregate, required
      - `model` ForecastModel, required
        - `id` string, uuid, required
        - `companyId` string, uuid, required
        - `entityId` string, uuid, required
        - `label` string, required
        - `businessType` 'software' | 'services' | 'digital' | 'usage' | 'license' | 'blended' | 'custom', required
        - `startCashCents` integer, required: Starting cash in the model's authoritative minor units
        - `horizonMonths` 12 | 18 | 24, required
        - `currency` string, required: Server-owned legal-entity functional currency
        - `minorUnitExponent` 2, required: Server-owned scale for every monetary integer in this Forecast model
        - `moneyAuthorityVersion` 1, required
        - `source` 'unknown' | 'manual' | 'books', required: Provenance of the model's opening cash boundary
        - `sourceMetadata` object, required: Non-secret authority metadata such as closed period, anchor, and functional currency
        - `createdAt` string, date-time, required
        - `updatedAt` string, date-time, required
      - `streams` ForecastStream[], required
        - `id` string, uuid
        - `forecastId` string, uuid
        - `type` 'subscription' | 'usage' | 'license' | 'onetime' | 'services_hours' | 'services_retainer' | 'ledger_run_rate'
        - `label` string
        - `position` integer
        - `drivers` object
        - `archived` boolean
        - `createdAt` string, date-time
        - `updatedAt` string, date-time
      - `headcount` ForecastHeadcount[], required
        - `id` string, uuid
        - `forecastId` string, uuid
        - `role` string
        - `employmentType` 'w2' | 'contractor'
        - `count` integer
        - `monthlyCostCents` integer: Monthly cost per head in the model's authoritative minor units
        - `startOffset` integer
        - `rampMonths` integer
        - `position` integer
      - `opex` ForecastOpex[], required
        - `id` string, uuid
        - `forecastId` string, uuid
        - `name` string
        - `behavior` 'fixed' | 'pct_revenue' | 'per_head'
        - `amountCents` integer, nullable: Fixed or per-head amount in the model's authoritative minor units
        - `pct` number, nullable: Percentage of revenue (for pct_revenue), in [0,1]
        - `position` integer
      - `financingEvents` ForecastFinancingEvent[], required: Repository-authoritative financing assumptions; preview clients cannot submit this field
        - `id` string, uuid, required
        - `forecastId` string, uuid, required
        - `legalEntityId` string, uuid, required
        - `amountCents` integer, required
        - `currency` string, required
        - `effectiveMonth` string, required
        - `expectedDate` string, date, nullable: Explicit expected receipt day within effectiveMonth. Omitted or null means undated; a date alone is not evidence of posted cash.
        - `source` 'manual' | 'forecast_ai' | 'forecast_mcp' | 'deterministic_lever', required
        - `promptHash` string, nullable, required
        - `createdAt` string, date-time, required
      - `scenarios` ForecastScenario[], required
        - `id` string, uuid
        - `forecastId` string, uuid
        - `name` string
        - `kind` 'adhoc' | 'budget'
        - `isLocked` boolean
        - `baseModelId` string, uuid, nullable
        - `overrides` object
        - `createdAt` string, date-time

## Other responses

- `401`: Authentication required
- `403`: Insufficient permissions or not a company member
- `404`: Resource not found
- `409`: The posted books changed after review; refresh before applying
- `422`: Invalid fingerprint or unavailable accounting authority

---

[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)
