Browse the API reference

Financial Statement Analysis

post/extensions/roboledger/{graph_id}/operations/financial-statement-analysis

Part of Extensions: RoboLedger.

Query a rendered financial statement from the graph-backed XBRL hypercube (Structure → FactSet → Fact). Works on the SEC shared repository today and on any RoboLedger tenant graph whose ledger has been materialized to LadybugDB. For shared-repo graphs, provide ticker to auto-resolve the latest filing; for tenant graphs, provide report_id explicitly.

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
statement_typerequiredstring

income_statement | balance_sheet | cash_flow_statement | equity_statement

tickeroptionalstring

Company ticker (required on shared-repo graphs, ignored otherwise)

report_idoptionalstring

Specific report identifier. If omitted, auto-resolves latest by ticker + filters.

fiscal_yearoptionalinteger

Filter by fiscal year focus when auto-resolving the report

period_typeoptionalstring

annual | quarterly | instant

limitoptionalinteger

Default: 1000

Example request

curl
curl -X POST "https://api.robosystems.ai/extensions/roboledger/{graph_id}/operations/financial-statement-analysis" \
  -H "X-API-Key: $ROBOSYSTEMS_API_KEY" \
  -H "Idempotency-Key: <Idempotency-Key>" \
  -H "Content-Type: application/json" \
  -d '{
  "statement_type": "string"
}'

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

resultoptionalFinancialStatementAnalysisResponse

Command-specific result payload

FinancialStatementAnalysisResponse fields
FieldTypeDescription
graph_idrequiredstring
statement_typerequiredstring
tickeroptionalstring
report_idoptionalstring
resolved_reportoptionalResolvedReportInfo

Information about the auto-resolved report.

ResolvedReportInfo fields
FieldTypeDescription
report_idrequiredstring
formoptionalstring
filing_dateoptionalstring
fiscal_yearoptionalinteger
fiscal_periodoptionalstring
factsrequiredAnalyticalStatementFactRow[]

A single fact row from the graph-backed statement analysis.

AnalyticalStatementFactRow fields
FieldTypeDescription
canonical_conceptoptionalstring
qnamerequiredstring
namerequiredstring
valueoptionalnumber
start_dateoptionalstring
end_dateoptionalstring
period_typeoptionalstring
duration_typeoptionalstring
fact_countrequiredinteger
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