Start a csv/xlsx export. Runs in the background; poll GET /exports/{id} or subscribe to export.completed. Needs the exported entity read scope as well (403 SCOPE_REQUIRED names it). Requires Idempotency-Key. (scope: exports:write)
bearerAuthAuthorizationBearer <token>API key as Bearer token
Idempotency-Key*stringRequired. Retries with the same key replay the first response instead of starting a second job (24 h).
length <= 200application/json- body
entity*stringAlso requires the entity read scope: invoices_* → invoices:read, contacts → contacts:read, articles → articles:read, stock → inventory:read, trial_balance → accounting:read, expenses → expenses:read.
"invoices_issued""invoices_received""contacts""articles""stock""trial_balance""expenses"format*string"csv""xlsx"scope?OK
application/json- response
data*An export job. The file itself is never part of this object; fetch it through GET /exports/{id}/download while expires_at is in the future.
error*nullcurl -X POST "https://example.com/exports" \ -H "Idempotency-Key: string" \ -H "Content-Type: application/json" \ -d '{ "entity": "invoices_issued", "format": "csv" }'{ "data": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "entity": "invoices_issued", "format": "string", "status": "running", "row_count": 0, "filename": "string", "content_type": "string", "byte_size": 0, "sha256": "string", "expires_at": "2019-08-24T14:15:22Z", "error": "string", "created_at": "2019-08-24T14:15:22Z", "finished_at": "2019-08-24T14:15:22Z" }, "error": null}Update a expense PATCH
Previous Page
Download an export. Stored files: 200 JSON {url, expires_at, filename, sha256} with a short-lived signed URL. Legacy files (and deployments without object storage): 200 with the raw bytes and Content-Disposition: attachment. 409 while running or when the job failed; 410 once the file expired (the sha256 stays in error.details). (scope: exports:read) GET
Next Page