Skip to content

Create a report export job

POST
/v1/organizations/{organizationId}/report-exports

API key scope: reports:export. Captures a temporary PostgreSQL snapshot and generates files on demand at download time.

X-Request-Id
string

Optional client request id returned in structured errors.

Media typeapplication/json
object
reportType
required
string
Allowed values: inventory_snapshot stock_movements operations_summary exceptions
format
required
string
Allowed values: csv xlsx
filters
object
createdFrom
string format: date-time
createdTo
string format: date-time
productId
string
locationId
string
ownerId
string
channelId
string
status
string
operation
string
Allowed values: receive adjust fulfill write_off return_stock move_state reconcile reserve commit release reservation_cancel expire transfer_out transfer_in transfer_cancel transfer_close inbound_expect inbound_receive inbound_close inbound_cancel outbound_allocate outbound_pick outbound_pack outbound_ship outbound_fulfill outbound_cancel composition_assemble_component composition_assemble_output composition_disassemble_input composition_disassemble_component
inventoryState
string
Allowed values: onHand available reserved committed incoming damaged qualityControl safetyStock
limit
number
default: 5000 >= 1 <= 5000

Report export job created and processed.

Media typeapplication/json
object
id
required
string format: uuid
organizationId
required
string format: uuid
environment
required
string
Allowed values: live test
reportType
required
string
Allowed values: inventory_snapshot stock_movements operations_summary exceptions
format
required
string
Allowed values: csv xlsx
status
required
string
Allowed values: pending running completed failed
filters
object
key
additional properties
any
rowCount
required

Number of rows captured in the temporary export snapshot.

number
downloadAvailable
required

Whether the completed snapshot is still available for on-demand file generation.

boolean
hasFile
required

Deprecated compatibility alias for downloadAvailable. No server-side file is stored.

boolean
expiresAt
required
string format: date-time
requestedBy
object
completedAt
object
errorCode
object
createdAt
required
string format: date-time
updatedAt
required
string format: date-time
Example
{
"id": "77777777-7777-4777-8777-777777777777",
"organizationId": "11111111-1111-4111-8111-111111111111",
"environment": "test",
"reportType": "inventory_snapshot",
"format": "csv",
"status": "completed",
"filters": {
"productId": "22222222-2222-4222-8222-222222222222",
"locationId": "33333333-3333-4333-8333-333333333333"
},
"rowCount": 1,
"downloadAvailable": true,
"hasFile": true,
"expiresAt": "2026-07-13T12:00:00.000Z",
"requestedBy": "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa",
"completedAt": "2026-07-06T12:01:00.000Z",
"errorCode": null,
"createdAt": "2026-07-06T12:00:00.000Z",
"updatedAt": "2026-07-06T12:01:00.000Z"
}

The organization has exhausted its monthly public API request quota.

The organization plan does not allow the requested action.

Media typeapplication/json
Example
{
"error": {
"code": "PLAN_LIMIT_EXCEEDED",
"message": "Plan limit exceeded for active_products",
"requestId": "req_123",
"details": {
"entitlementKey": "active_products",
"scope": "environment",
"environment": "live",
"configured": true,
"limit": "100",
"used": "100",
"requested": "1",
"currentPlan": {
"code": "free",
"version": 1
},
"requiredPlan": {
"code": "starter",
"version": 1,
"requiresOverride": false
}
}
}
}