Export Sales Orders
GET/api/sales-orders/list/export
Exports the sales order list view as an XLSX or CSV file download.
orders:readGrant this scope to your token under Settings → Developer → Personal Access Tokens.
Accepts the same filter, filter_groups, and sort query params as the List endpoint (the active list view filters). The Hold Until Date column is included in the export (alongside Ship By Date and Deliver By Date); date columns are converted from UTC to the tenant timezone, and each such heading names it — Order Date (America/New_York).
Response: a binary file download (Content-Type application/vnd.openxmlformats-officedocument.spreadsheetml.sheet for xlsx, text/csv for csv) — not JSON.
Authentication: Requires Bearer token. Scope: orders (read).
Requires permission: sales_orders.export
Response shape - delivery. By default an export of up to 1,000 rows (orders for content_mode=summary, line items for content_mode=line_items) is returned directly in this response, and a larger one runs in the background and returns {"tracked_job_log_id": ..., "queued": true}. Pass delivery=job to get the job response every time: a small export still runs immediately (it is never queued) and comes back already finished - {"tracked_job_log_id": ..., "queued": false, "status": "completed", "results": {"download_url": ..., "record_count": ...}} - while a large one is queued exactly as before. scope=current_page always returns the page directly, whatever delivery says. Use it when your client expects one flow for every export (start, then check GET /api/tracked-job-logs/{trackedJobLog}, then download), such as an ETL connector. Subscribe to the export.completed webhook to be told when a queued export is ready instead of polling.
Request
Responses
- 200
- 401
- 403
- 429
Successful response
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden — the token lacks a required scope, the endpoint is not available to API tokens, or the user behind the token lacks the permission. A human must adjust the token scopes or user permissions; do not retry.
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.