Browse the API reference

Create Report

post/extensions/roboledger/{graph_id}/operations/create-report

Part of Extensions: RoboLedger.

Generates report facts from the ledger and marks the report as published.

Idempotency: supply an Idempotency-Key header to make safe retries; replays within 24 hours return the same envelope. Reusing the key with a different body returns HTTP 409 Conflict.

Authentication

Authenticate in any one of these ways — not all of them:

  • API key in the X-API-Key header.
  • Bearer token in the Authorization header.

Path parameters

NameTypeDescription
graph_idrequiredstringGraph Id

Header parameters

NameTypeDescription
Idempotency-KeyoptionalstringIdempotency-Key

Request body

Required, application/json.

FieldTypeDescription
namerequiredstring

Human-readable report name shown in lists and headers.

taxonomy_idoptionalstring

Taxonomy that defines the structures (BS / IS / CF / Equity / Schedules) this report can render. Accepts either an exact tenant-specific taxonomy UUID or a standard name (e.g. 'rs-gaap'). Standard names resolve to the latest reporting_standard taxonomy with that name. Defaults to 'rs-gaap', the canonical reporting vocabulary.

Default: rs-gaap

mapping_idrequiredstring

Mapping structure that rolls up the tenant's chart of accounts to the taxonomy's reporting concepts. Created via `create-mapping-association` / `auto-map-elements`.

period_startrequiredstring (date)

Current-period start (inclusive). Ignored when `periods` is supplied.

period_endrequiredstring (date)

Current-period end (inclusive). Must be >= `period_start`. Ignored when `periods` is supplied.

period_typeoptionalstring

Period cadence: `monthly`, `quarterly`, or `annual`.

Default: quarterly

comparativeoptionalboolean

When true, automatically generates a prior-period column (same length as the current period). Ignored when `periods` is supplied.

Default: true

periodsoptionalPeriodSpec[]

Explicit period columns. When set, overrides `period_start`/`period_end`/`comparative`. Use for multi-period layouts (YTD-by-quarter, multi-year, custom rolling windows).

PeriodSpec fields
FieldTypeDescription
startrequiredstring (date)

Period start date (inclusive). Window the column rolls up.

endrequiredstring (date)

Period end date (inclusive). Window the column rolls up.

labelrequiredstring

Column header label (e.g. 'FY2025 Q3', '2024', 'YTD').

Example request

curl
curl -X POST "https://api.robosystems.ai/extensions/roboledger/{graph_id}/operations/create-report" \
  -H "X-API-Key: $ROBOSYSTEMS_API_KEY" \
  -H "Idempotency-Key: <Idempotency-Key>" \
  -H "Content-Type: application/json" \
  -d '{
  "comparative": true,
  "mapping_id": "map_01HVF8T0M2YTAY3BBNRH0V0",
  "name": "Q3 2026 Financials",
  "period_end": "2026-09-30",
  "period_start": "2026-07-01",
  "period_type": "quarterly",
  "taxonomy_id": "tax_usgaap_reporting"
}'

Responses

200 Successful Response

FieldTypeDescription
operationrequiredstring

Kebab-case operation name

operationIdrequiredstring

op_-prefixed ULID for audit and SSE correlation

statusrequiredstring

Operation lifecycle state

One of: completed, pending, failed

resultoptionalReportResponse

Command-specific result payload

ReportResponse fields
FieldTypeDescription
idrequiredstring

Report identifier (ULID).

namerequiredstring

Human-readable report name.

taxonomy_idrequiredstring

Taxonomy this report renders against.

generation_statusrequiredstring

Computation lifecycle: `generating`, `published`, `failed`. Orthogonal to `filing_status`.

period_typerequiredstring

Period cadence: `monthly`, `quarterly`, `annual`.

period_startoptionalstring (date)

Current-period start.

period_endoptionalstring (date)

Current-period end.

comparativerequiredboolean

True when an auto-generated prior-period column is included.

periodsoptionalPeriodSpec[]

Explicit period columns when the report was created with a multi-period layout.

PeriodSpec fields
FieldTypeDescription
startrequiredstring (date)

Period start date (inclusive). Window the column rolls up.

endrequiredstring (date)

Period end date (inclusive). Window the column rolls up.

labelrequiredstring

Column header label (e.g. 'FY2025 Q3', '2024', 'YTD').

mapping_idoptionalstring

CoA → taxonomy mapping the facts were rolled up through.

ai_generatedoptionalboolean

True when the report was created by an AI agent rather than a user.

Default: false

created_atrequiredstring (date-time)

When the report row was created.

last_generatedoptionalstring (date-time)

When the facts were last (re)generated.

structuresoptionalStructureSummary[]

Structures available for this report's taxonomy — renderable sections (BS / IS / CF / Equity / Schedules).

StructureSummary fields
FieldTypeDescription
idrequiredstring

Structure identifier.

namerequiredstring

Human-readable structure name.

block_typerequiredstring

Structure category: `balance_sheet`, `income_statement`, `cash_flow_statement`, `equity_statement`, `schedule`.

entity_nameoptionalstring

Display name of the primary entity the report is tagged to.

filing_statusoptionalstring

Filing lifecycle (orthogonal to `generation_status`): `draft`, `under_review`, `filed`, `archived`.

Default: draft

filed_atoptionalstring (date-time)

When the report was transitioned to `filed`.

filed_byoptionalstring

User ID that transitioned the report to `filed`.

supersedes_idoptionalstring

When this report restates an earlier filing, the predecessor's report ID.

superseded_by_idoptionalstring

When this report has been restated, the successor's report ID.

source_graph_idoptionalstring

Origin graph for received (shared) reports — populated only on the recipient's copy.

source_report_idoptionalstring

Origin report ID for received (shared) reports — populated only on the recipient's copy.

shared_atoptionalstring (date-time)

When the report was shared into this graph (recipient side).

rule_summaryoptionalobject

Counts by rule outcome (e.g. `{'passed': 12, 'failed': 1}`) from the most recent evaluation. Null until rules run.

atrequiredstring

ISO-8601 UTC timestamp

createdByoptionalstring

User ID that initiated the operation (null for legacy callers)

idempotentReplayoptionalboolean

True when this envelope came from the idempotency cache — the underlying command did not execute again. False on fresh executions.

Default: false

StatusMeaning
400Invalid request
401Authentication required
403Access denied
404Resource not found
409Idempotency-Key conflict — key reused with different body
422Validation error
429Rate limit exceeded
500Internal server error