Start an export
Queues an export in the caller's mode, written as gzip JSON Lines. products: the catalogue the caller can see, one product per line as GET /v1/products returns it; needs products:read beside exports:write and the plan's bulk exports (403 feature_unavailable), and exported products count against the export_rows quota (429 quota_exceeded). organisation: everything the organisation holds, one file per dataset, each line as its API read returns it, closed by a manifest; needs every dataset's read permission (403 insufficient_scope), takes no filters (422), and is neither plan-gated nor metered. Follow it with GET /v1/exports/{id} or the export.completed event. An organisation may have at most 3 open (pending or running) exports per mode, test and live counted apart; one more answers 409 conflict.
- Scopes
exports:write - Rate classexport
- Idempotency-Key required
/v1/exportsQueues an export in the caller's mode, written as gzip JSON Lines. products: the catalogue the caller can see, one product per line as GET /v1/products returns it; needs products:read beside exports:write and the plan's bulk exports (403 feature_unavailable), and exported products count against the export_rows quota (429 quota_exceeded). organisation: everything the organisation holds, one file per dataset, each line as its API read returns it, closed by a manifest; needs every dataset's read permission (403 insufficient_scope), takes no filters (422), and is neither plan-gated nor metered. Follow it with GET /v1/exports/{id} or the export.completed event. An organisation may have at most 3 open (pending or running) exports per mode, test and live counted apart; one more answers 409 conflict.
Authorization
apiKey An API key (fo_live_… / fo_test_…) as a bearer token
In: header
Header Parameters
Dated API version; pinned per organisation on first use and overridable per request
Value in
- "2026-10-01"
- "2026-10-04"
The data the request acts on: test is the organisation's sandbox. An OAuth token picks it (live by default); an API key's mode is fixed, and naming the other one is refused
Value in
- "live"
- "test"
Unique key for this operation, reused on retries (24 h)
1 <= length <= 257Preview the write and change nothing: true answers the would-be response, explain a Preview (application/vnd.furniops.preview+json)
Value in
- "true"
- "explain"
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
The export to make
Response Body
application/json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
curl -X POST "https://example.com/v1/exports" \ -H "Idempotency-Key: string" \ -H "Content-Type: application/json" \ -d '{ "kind": "products" }'{ "id": "string", "object": "export", "kind": "products", "status": "pending", "livemode": true, "filters": { "updated_since": "2019-08-24T14:15:22Z" }, "rows": 0, "files": [ { "url": "http://example.com", "dataset": "string", "rows": 0, "bytes": 0 } ], "error": "string", "created_at": "2019-08-24T14:15:22Z", "completed_at": "2019-08-24T14:15:22Z", "expires_at": "2019-08-24T14:15:22Z"}Stream the change feed GET
The change feed as server-sent events (`text/event-stream`), for dashboards and consoles: each event's `event` is its type, its `data` the event as `GET /v1/changes` shows it, and its `id` a feed cursor. A reconnecting client sends the last `id` as `Last-Event-ID` and carries on after it. Without a cursor the stream starts with events committed from now on. A comment line is sent every 15 s while it is quiet. The server ends a stream after a while (the client reconnects, and its access is checked again). Webhooks or the feed, not the stream, are for systems that must not miss an event.
Get an export GET
An export and, once it has succeeded, its files: each with a download link valid 15 minutes from this read. Read it again for fresh links; the files are kept 7 days.