Sign Customiser

Queue the established CSV export for an inclusive UTC creation-date range. The email recipient is the authenticated Store's contact email and cannot be overridden. The range may contain at most 366 days and 1,000 orders; choose a shorter range when the bound is exceeded. Unlike the v3 read projection, the frozen CSV contract still includes cached legacy order rows. Requires orders:write. Supply an Idempotency-Key; replaying the same request does not queue or email a second export.

POST /api/v3/orders/export

Authorisation

Bearer token required. Include in the Authorization header.

Request body

created_from string body
created_to string body

Request body example

application/json
{
  "created_from": "2026-07-01",
  "created_to": "2026-07-19"
}
Queue an order CSV export
curl https://web.signcustomiser.com/api/v3/orders/export \
  --request POST \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_API_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "created_from": "2026-07-01",
  "created_to": "2026-07-19"
}'
Response 202
{
  "data": {
    "object": "order_export",
    "status": "queued",
    "recipient_email": "orders@example.com",
    "created_from": "2026-07-01",
    "created_to": "2026-07-19"
  },
  "links": {
    "self": "https://web.signcustomiser.com/api/v3/orders/export",
    "documentation": "https://www.signcustomiser.com/help/api/"
  },
  "meta": {
    "api_version": "v3",
    "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
  }
}
Response 400
{
  "type": "https://www.signcustomiser.com/help/api/problems/malformed_json",
  "title": "Malformed JSON",
  "status": 400,
  "code": "malformed_json",
  "detail": "The request body is not valid JSON.",
  "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}
Response 401
{
  "type": "https://www.signcustomiser.com/help/api/problems/missing_api_key",
  "title": "Missing API key",
  "status": 401,
  "code": "missing_api_key",
  "detail": "Provide a store API key as a bearer token.",
  "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}
Response 403
{
  "type": "https://www.signcustomiser.com/help/api/problems/insufficient_scope",
  "title": "Insufficient scope",
  "status": 403,
  "code": "insufficient_scope",
  "detail": "This operation requires the orders:write scope.",
  "required_scopes": [
    "orders:write"
  ],
  "granted_scopes": [
    "orders:read"
  ],
  "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}
Response 409
{
  "type": "https://www.signcustomiser.com/help/api/problems/idempotency_key_conflict",
  "title": "Idempotency key conflict",
  "status": 409,
  "code": "idempotency_key_conflict",
  "detail": "This Idempotency-Key was already used for a different request body on this operation.",
  "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}
Response 422
{
  "type": "https://www.signcustomiser.com/help/api/problems/export_too_large",
  "title": "Order export too large",
  "status": 422,
  "code": "export_too_large",
  "detail": "The selected range contains more than 1000 orders. Choose a shorter range and try again.",
  "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}
Response 429
{
  "type": "https://www.signcustomiser.com/help/api/problems/rate_limited",
  "title": "Too many requests",
  "status": 429,
  "code": "rate_limited",
  "detail": "You have exceeded the request limit for this API key.",
  "retry_after": 600,
  "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}