API reference

Report runs

Reports kept as they stood, produced again figure for figure after later corrections and reopened months.

Guides: Read and export reports

List kept reports

GET/v1/report_runs

client.reportRuns.list()

Kept reports, the newest first: those kept by hand, and those each close kept of its month.

Parameters

NameTypeDescription
reportQuerystring or null

Only runs of this report.

One of trial_balance, balance_sheet, income_statement, cash_flow, board_pack
close_run_idQuerystring or null

An id that starts with close_run_.

limitQueryinteger

Page size, 1–200.

Default 50
cursorQuerystring or null

The next_cursor of the previous page.

Response

200ReportRunPage

Errors

400
The request was malformed or a parameter is invalid.
401
No valid credential was sent.
403
The credential or the member's role does not allow this.
404
No such resource in this ledger.
409
A conflicting request, e.g. one with the same Idempotency-Key still running.
422
A well-formed request a business rule refused.
429
Too many requests; retry after the Retry-After header.
500
Something failed on our side; the request_id identifies it.

Example

curl
curl "https://api.ledgerit.ai/v1/report_runs" \
  -H "Authorization: Bearer $LEDGERIT_TOKEN"

Keep a report

POST/v1/report_runs· Idempotent

client.reportRuns.create()

Keep a report as it stands now: the books read through their latest posting sequence, and the manifest recorded so it can be produced again exactly. Any member may keep one, a viewer included; a read-only API key may not, since keeping is a write.

Request body

ReportRunCreate

Response

201ReportRunWithReportOut

Errors

400
The request was malformed or a parameter is invalid.
401
No valid credential was sent.
403
The credential or the member's role does not allow this.
404
No such resource in this ledger.
409
A conflicting request, e.g. one with the same Idempotency-Key still running.
422
A well-formed request a business rule refused.
429
Too many requests; retry after the Retry-After header.
500
Something failed on our side; the request_id identifies it.

Example

curl
curl -X POST "https://api.ledgerit.ai/v1/report_runs" \
  -H "Authorization: Bearer $LEDGERIT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"report":"trial_balance"}'

Produce a kept report again

GET/v1/report_runs/{run_id}

client.reportRuns.get()

A kept report, produced again from its manifest, with whether it says exactly what it said when it was kept.

Parameters

NameTypeDescription
run_idPath · Requiredstring

An id that starts with rpt_run_.

Response

200ReportRunWithReportOut

Errors

400
The request was malformed or a parameter is invalid.
401
No valid credential was sent.
403
The credential or the member's role does not allow this.
404
No such resource in this ledger.
409
A conflicting request, e.g. one with the same Idempotency-Key still running.
422
A well-formed request a business rule refused.
429
Too many requests; retry after the Retry-After header.
500
Something failed on our side; the request_id identifies it.

Example

curl
curl "https://api.ledgerit.ai/v1/report_runs/{run_id}" \
  -H "Authorization: Bearer $LEDGERIT_TOKEN"

Explain a figure in a kept report

GET/v1/report_runs/{run_id}/explain

client.reportRuns.explain()

Why a figure in a kept report is what it is: every journal line behind it, read through the posting sequence the report was, with the entry each belongs to and the transactions and documents behind that entry. Name an account, or a figure.

For a report over a window (the income statement, the cash flow statement, a board pack's figures) the figure is what the lines moved, closing entries left out. For a report as of a day (the balance sheet, the trial balance) and for cash, it is the balance on the day: the opening balance, then the lines of the month the day ends. The newest 500 lines are listed.

Parameters

NameTypeDescription
run_idPath · Requiredstring

An id that starts with rpt_run_.

account_idQuerystring or null

An id that starts with gla_.

figureQuerystring or null

A figure that is not one account's: cash, or mrr for a report over a window.

One of cash, mrr

Response

200ExplanationOut

Errors

400
The request was malformed or a parameter is invalid.
401
No valid credential was sent.
403
The credential or the member's role does not allow this.
404
No such resource in this ledger.
409
A conflicting request, e.g. one with the same Idempotency-Key still running.
422
A well-formed request a business rule refused.
429
Too many requests; retry after the Retry-After header.
500
Something failed on our side; the request_id identifies it.

Example

curl
curl "https://api.ledgerit.ai/v1/report_runs/{run_id}/explain" \
  -H "Authorization: Bearer $LEDGERIT_TOKEN"

Objects

The objects these operations take and return.

ReportRunPage

NameTypeDescription
dataRequiredarray of ReportRunOut
has_moreRequiredboolean
next_cursorRequiredstring or null

ReportRunCreate

NameTypeDescription
as_ofstring (date) or null

For the trial balance and the balance sheet: the day. Defaults to today.

reportRequiredstring

trial_balance, balance_sheet, income_statement or cash_flow. A board pack's figures are kept by its close.

One of trial_balance, balance_sheet, income_statement, cash_flow
sincestring (date) or null

For the income statement and the cash flow statement: the first day. Defaults to this month's first.

untilstring (date) or null

For the income statement and the cash flow statement: the last day. Defaults to today.

ReportRunWithReportOut

A run with the report it keeps, produced again from its manifest.

NameTypeDescription
artifact_hashRequiredstring

The sha256 of what the report said.

balance_sheetBalanceSheetOut or null
board_packBoardPackFiguresOut or null
cash_flowCashFlowStatementOut or null
close_run_idRequiredstring or null

An id that starts with close_run_.

created_byRequiredstring or null

An id that starts with usr_.

definition_versionRequiredinteger

The version of the report's definition it was made under.

idRequiredstring

An id that starts with rpt_run_.

income_statementIncomeStatementOut or null
parametersRequiredobject

What it was asked for.

periodRequiredstring

The day (2026-09-30), or the window (2026-01-01..2026-09-30).

recorded_atRequiredstring (date-time)
reportRequiredstringOne of trial_balance, balance_sheet, income_statement, cash_flow, board_pack
reproduced_hashRequiredstring

The sha256 of the report as produced now from the manifest.

reproducesRequiredboolean

True when its figures are exactly what they were when it was kept. Since definition version 2 an account renamed in between does not count against it.

through_sequenceRequiredinteger

The books were read as posted through this sequence, and no further.

trial_balanceTrialBalanceOut or null

ExplanationOut

Why a figure in a kept report is what it is: the journal lines it adds up from, read through the same posting sequence the report was, so they add up to the kept figure after any later posting or reopen.

NameTypeDescription
accountsRequiredarray of ExplanationAccountOut

The accounts the figure is read from: the account and every account beneath it, or every cash account.

closing_balanceRequiredstring

The balance on until, as posted through the sequence.

currencyRequiredstring
figureRequiredstring

What the report says: the closing balance, or what moved.

kindRequiredstring

balance: the figure is the accounts' balance on until, the opening balance plus the lines from since. movement: the figure is what the lines moved from since to until.

One of balance, movement
linesRequiredarray of ExplanationLineOut

Oldest first.

opening_balanceRequiredstring

The balance before since, as posted through the sequence.

reportRequiredstringOne of trial_balance, balance_sheet, income_statement, cash_flow, board_pack
report_run_idRequiredstring

An id that starts with rpt_run_.

sinceRequiredstring (date)
subjectRequiredstring

What is explained: the account asked for, or a figure (cash, mrr).

One of account, cash, mrr
through_sequenceRequiredinteger

Every line here was posted at or before this sequence.

truncatedRequiredboolean

True when older lines were left out; the opening balance is then what stood before the oldest line shown, so the lines still add up.

untilRequiredstring (date)

ReportRunOut

A kept report's manifest.

NameTypeDescription
artifact_hashRequiredstring

The sha256 of what the report said.

close_run_idRequiredstring or null

An id that starts with close_run_.

created_byRequiredstring or null

An id that starts with usr_.

definition_versionRequiredinteger

The version of the report's definition it was made under.

idRequiredstring

An id that starts with rpt_run_.

parametersRequiredobject

What it was asked for.

periodRequiredstring

The day (2026-09-30), or the window (2026-01-01..2026-09-30).

recorded_atRequiredstring (date-time)
reportRequiredstringOne of trial_balance, balance_sheet, income_statement, cash_flow, board_pack
through_sequenceRequiredinteger

The books were read as posted through this sequence, and no further.

BalanceSheetOut

NameTypeDescription
as_ofRequiredstring (date)
assetsRequiredBalanceSheetSectionOut
balancedRequiredboolean
currencyRequiredstring
differenceRequiredstring
equityRequiredBalanceSheetSectionOut
liabilitiesRequiredBalanceSheetSectionOut
total_assetsRequiredstring
total_liabilities_and_equityRequiredstring

BoardPackFiguresOut

What a month's board pack says in figures, every one read from the books through the same posting sequence.

NameTypeDescription
arrRequiredstring

MRR times twelve.

burningRequiredboolean

True when the trailing net burn is above zero.

cashRequiredstring

Cash across every cash account at the end of the month.

currencyRequiredstring

The books' currency, as an ISO 4217 code.

gross_burnRequiredstring or null

Operating cash that left in the month, as a positive figure. Null before the books began.

gross_marginRequiredstring or null

Gross profit over revenue, as a fraction (0.9 = 90%); null with no revenue.

monthsRequiredarray of BurnMonthOut

Burn for up to six complete months, oldest first, ending with this one; months before the books began are left out.

mrrRequiredstring

Subscription revenue recognized in the month, as Home reads it.

mrr_monthRequiredstring (date)

The month MRR is for: this one, by its first day.

net_burnRequiredstring or null

The month's gross burn less its operating inflows. Positive means more went out than came in.

net_incomeRequiredstring

Net income in the month.

operating_expensesRequiredstring

Operating expenses in the month.

revenueRequiredstring

Revenue in the month, from the income statement.

runway_monthsRequiredstring or null

Months of cash at the trailing net burn, to one decimal; null when not burning.

sinceRequiredstring (date)

The month's first day.

trailing_monthsRequiredinteger

How many months trailing_net_burn averages.

trailing_net_burnRequiredstring or null

Average net burn of the three complete months ending with this one: what runway divides by. The figure Home shows as net burn.

untilRequiredstring (date)

The month's last day.

CashFlowStatementOut

NameTypeDescription
balancedRequiredboolean
beginning_cashRequiredstring
currencyRequiredstring
differenceRequiredstring
ending_cashRequiredstring
net_changeRequiredstring
net_incomeRequiredstring
sectionsRequiredarray of CashFlowSectionOut
sinceRequiredstring (date)
untilRequiredstring (date)

IncomeStatementOut

NameTypeDescription
cost_of_revenueRequiredstring
currencyRequiredstring
gross_marginRequiredstring or null
gross_profitRequiredstring
net_incomeRequiredstring
operating_expensesRequiredstring
operating_incomeRequiredstring
other_expenseRequiredstring
other_incomeRequiredstring
revenueRequiredstring
sectionsRequiredarray of IncomeSectionOut
sinceRequiredstring (date)
untilRequiredstring (date)

TrialBalanceOut

NameTypeDescription
as_ofRequiredstring (date)
balancedRequiredboolean
currencyRequiredstring
differenceRequiredstring
rowsRequiredarray of TrialBalanceRowOut
total_creditsRequiredstring
total_debitsRequiredstring

ExplanationAccountOut

NameTypeDescription
codeRequiredstring
idRequiredstring

An id that starts with gla_.

nameRequiredstring

ExplanationLineOut

One journal line behind the figure, with the entry it belongs to and the evidence behind that entry.

NameTypeDescription
account_idRequiredstring

An id that starts with gla_.

amountRequiredstring
descriptionRequiredstring
directionRequiredstringOne of debit, credit
document_idsRequiredarray of string

The receipts and invoices that support them.

entry_dateRequiredstring (date)
entry_idRequiredstring

The journal entry to cite.

entry_noRequiredinteger
line_idRequiredstring

An id that starts with jel_.

memoRequiredstring or null
signed_amountRequiredstring

amount signed in the account type's normal direction.

sourceRequiredstring

How the entry was written: ingest, manual, schedule, …

transaction_idsRequiredarray of string

The bank, card or processor transactions the entry was filed from.

BalanceSheetSectionOut

NameTypeDescription
linesRequiredarray of BalanceSheetLineOut
totalRequiredstring

BurnMonthOut

NameTypeDescription
completeRequiredboolean

False for the current month, which is month to date.

gross_burnRequiredstring

Operating cash that left in the month, as a positive figure.

monthRequiredstring (date)

The first day of the month.

net_burnRequiredstring

Gross burn less operating inflows. Positive means more went out than came in.

operating_inflowsRequiredstring

Operating cash that came in during the month, as a positive figure.

CashFlowSectionOut

NameTypeDescription
keyRequiredstring
linesRequiredarray of CashFlowLineOut
nameRequiredstring
totalRequiredstring

IncomeSectionOut

NameTypeDescription
groupsRequiredarray of IncomeGroupOut
keyRequiredstring
nameRequiredstring
totalRequiredstring

TrialBalanceRowOut

NameTypeDescription
account_idRequiredstring

An id that starts with gla_.

codeRequiredstring
creditRequiredstring
debitRequiredstring
nameRequiredstring
typeRequiredstring

BalanceSheetLineOut

NameTypeDescription
account_idRequiredstring or null

An id that starts with gla_.

amountRequiredstring
codeRequiredstring
nameRequiredstring

CashFlowLineOut

NameTypeDescription
account_idRequiredstring

An id that starts with gla_.

amountRequiredstring
codeRequiredstring
nameRequiredstring

IncomeGroupOut

NameTypeDescription
codeRequiredstring
linesRequiredarray of IncomeLineOut
nameRequiredstring
totalRequiredstring

IncomeLineOut

NameTypeDescription
account_idRequiredstring

An id that starts with gla_.

amountRequiredstring
codeRequiredstring
nameRequiredstring