Skip to main content
POST
/
products
/
api
/
v1
/
labels
/
export
Submit a bulk label-export job
curl --request POST \
  --url https://www.closient.com/products/api/v1/labels/export/ \
  --header 'Content-Type: application/json' \
  --header 'X-API-Key: <api-key>' \
  --data '
{
  "scope": "products",
  "export_type": "qr_codes",
  "file_format": "svg",
  "filters": {
    "gtins": [
      "00012345678905"
    ],
    "never_printed": true
  },
  "asset_config": {
    "sheet_template": "63up_1in_letter"
  }
}
'
{
  "job_id": "<string>",
  "status": "pending",
  "poll_url": "<string>"
}

Documentation Index

Fetch the complete documentation index at: https://docs.closient.com/llms.txt

Use this file to discover all available pages before exploring further.

Authorizations

X-API-Key
string
header
required

Body

application/json

Request body for POST /products/api/v1/labels/export/.

Mirrors the field set the Dashboard's bulk-export form posts. The combination (export_type, file_format) must be coherent — sheet PDFs require file_format='pdf'; the symbology ZIP exports (qr_codes / datamatrix) accept svg/png; barcodes_1d accepts svg/eps.

scope
enum<string>
required

Which entity table the filters resolve against. lots and serials are supported today; products is reserved for a future per-product export and currently rejected at the renderer layer.

Available options:
products,
lots,
serials
export_type
enum<string>
required

What asset the job produces. qr_codes / datamatrix / barcodes_1d produce ZIPs of one symbol per entity; sheet_pdf produces a multi-up label sheet PDF; codes_combined produces ZIPs containing both QR and 1D variants per entity.

Available options:
qr_codes,
datamatrix,
barcodes_1d,
codes_combined,
sheet_pdf
file_format
enum<string>
required

Output container/format. Must be coherent with export_type: sheet_pdf requires pdf; qr_codes/datamatrix accept svg/png; barcodes_1d accepts svg/eps.

Available options:
svg,
png,
pdf,
eps
filters
LabelExportFiltersIn · object

Optional selection filters. Omit to export every active lot/serial in the caller's organization at the chosen scope. Use a narrowing key (gtins, product_id, lot_ids/serial_ids, lot_run_id, etc.) to bound the result set.

Example:
{
"gtins": ["00012345678905"],
"never_printed": true
}
asset_config
LabelExportAssetConfigIn · object

Optional renderer-side knobs (sheet template choice, etc.). Defaults are renderer-specific; see field descriptions on LabelExportAssetConfigIn.

Example:
{ "sheet_template": "63up_1in_letter" }

Response

Accepted

Response for an accepted bulk-label-export job — always HTTP 202.

Even when the underlying job runs synchronously (count below LabelExportJob.SYNC_THRESHOLD), the response shape is the receipt-only envelope: callers always poll the status endpoint to fetch the download URL. This keeps the API contract identical regardless of which side of the cutover the job lands on.

job_id
string
required

Identifier of the queued LabelExportJob (22-char shortuuid). Use to poll the status endpoint at GET /labels/export/{job_id}/.

status
enum<string>
required

Initial lifecycle state at submission. Typically pending; for very small jobs that ran inline this may already be completed or failed.

Available options:
pending,
processing,
completed,
failed
poll_url
string
required

Relative URL of the polling endpoint for this job — combine with the API host to retrieve status. Embeds the same job_id for convenience.