Skip to main content
POST

Authorizations

Authorization
string
header
required

API key prefixed with finta_

Headers

Idempotency-Key
string
required

Nonblank, case-sensitive key; reuse with identical inputs after an uncertain response.

Required string length: 1 - 255

Body

application/json
report_type
enum<string>
required

income_statement exports profit and loss; balance_sheet compares cumulative balances across the requested periods; cash_flow exports operating, investing, and financing activity. GAAP P&L uses income_statement with department rows.

Available options:
income_statement,
balance_sheet,
cash_flow
start_date
string<date>
required

Required for all report types. For balance sheets, selects the first displayed period while retaining cumulative historical balances.

end_date
string<date>
required

Inclusive; required for all report types. Must be on or after start_date. The range may cover at most 120 calendar months, counting both boundary months. PDF exports additionally allow at most 13 displayed periods.

format
enum<string>
default:pdf
Available options:
pdf,
csv,
xlsx
group_by
object

Omitted members default to month for period and category for rows. Department rows are supported only for income statements and require the feature.

Response

Export created or replayed; status may already be terminal on replay.

id
string
required
Pattern: ^export_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
object
enum<string>
required
Available options:
report_export
report_type
enum<string>
required
Available options:
income_statement,
balance_sheet,
cash_flow
format
enum<string>
required
Available options:
pdf,
csv,
xlsx
start_date
string<date>
required
end_date
string<date>
required
group_by
object
required

Omitted members default to month for period and category for rows. Department rows are supported only for income statements and require the feature.

status
enum<string>
required

pending awaits generation; processing includes generation and retry waits; succeeded exposes the retained file after final access checks while within 30 days of completed_at, then file is null; failed is terminal and requires a new key for a new job. An HTTP 200 retrieval may still carry failed status.

Available options:
pending,
processing,
succeeded,
failed
created
integer
required
started_at
integer | null
required

Unix timestamp of the first generation attempt. Null until generation starts, including a terminal failure when access is revoked before generation.

completed_at
integer | null
required

Unix timestamp of terminal completion, whether succeeded or failed. Null while unfinished.

generation_duration_ms
integer | null
required

Cumulative generation attempt duration in milliseconds, including upload but excluding queue and retry wait time. Null until an attempt finishes.

Required range: x >= 0
file
object | null
required

Available only for succeeded exports before completed_at plus 30 days. Null at or after that cutoff, including on idempotent POST replay; status remains succeeded and error remains null. Within the window, refresh download_url by retrieving the export again. Already-issued links keep their original expiry; neither link expiry nor the regeneration cutoff removes the stored file.

error
object | null
required

Safe job failure details, present only when status is failed. This is distinct from an HTTP error envelope. New submissions with unconfirmed dispatch return HTTP 503 and retain a pending job, rather than setting enqueue_failed.