Retrieve export
Read an existing API export. Requires API access: Manage and Reports: View. Any authorized company teammate can retrieve it. Other companies, unknown IDs, raw database IDs, and exports created through the web UI return 404. Department exports also require the feature. GET never generates reports, dispatches workers, or marks a file downloaded. Status is pending, processing, succeeded, or failed. A file is exposed only after successful worker completion, final permission checks, and attachment. Fresh links are available for 30 days after completed_at. At or after that cutoff, status remains succeeded but file is null and error is null, including on an idempotent POST replay. The stored file is retained. Request a new export with a new Idempotency-Key to generate another report from the current books. Within that window, signed download URLs request expiry seven days after retrieval; retrieve this resource again for a fresh URL. Previously issued links keep their original expiry, which can extend beyond the 30-day regeneration cutoff. Signing credential expiry or storage policies can invalidate a link sooner. Link expiry does not delete the file. A download started before expiry can finish afterward; restarting or requesting further byte ranges after expiry requires a fresh link. Download URLs are bearer links and remain usable until expiration even if API access changes. Both responses use Cache-Control no-store. Failure details contain safe codes, never stack traces. The existing API request log stores export ID, status, and whether a link was issued, alongside caller and request time. Pending/failed polls and HEAD probes do not count as link issuance. Actual S3 downloads are not tracked. started_at records the first generation attempt and can remain null when access is revoked before generation; generation_duration_ms is the cumulative time spent in generation attempts, excluding queue and retry waits.
Authorizations
API key prefixed with finta_
Path Parameters
Export ID from creation, starting with export_.
Response
Current export status and result.
^export_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$report_export income_statement, balance_sheet, cash_flow pdf, csv, xlsx Omitted members default to month for period and category for rows. Department rows are supported only for income statements and require the feature.
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.
pending, processing, succeeded, failed Unix timestamp of the first generation attempt. Null until generation starts, including a terminal failure when access is revoked before generation.
Unix timestamp of terminal completion, whether succeeded or failed. Null while unfinished.
Cumulative generation attempt duration in milliseconds, including upload but excluding queue and retry wait time. Null until an attempt finishes.
x >= 0Available 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.
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.