Skip to main content

Bulk Print Packing Slips

POST 

/api/sales-orders/bulk-print-packing-slips

Generates packing slips for the targeted sales orders as a single merged PDF. The generation runs as an asynchronous background operation; the response returns a tracked_job_log_id to poll for progress, and the finished job's results contain the PDF download URL.

Required scope: orders:write

Grant this scope to your token under Settings → Developer → Personal Access Tokens.

Authentication: Requires Bearer token.

Request body fields (one of ids, filters, or apply_to_all is required):

  • ids (array of integers, required without filters/apply_to_all): Sales order IDs to print. Each ID must exist.
  • filters (string, required without ids/apply_to_all): Legacy JSON-string filter payload; resolves to the matching sales order IDs.
  • apply_to_all (boolean, optional): When true, targets every order matching the request's active filters instead of an explicit ID list.
  • engine (string, optional, default snappy): PDF renderer — snappy (current pipeline) or jasper (legacy pipeline).

Behavior:

  • Returns the tracked job log ID immediately; PDF generation runs in the background.
  • If the job finishes before the response is sent (small batches / fast queues), the response additionally includes file (the PDF download URL), printed_count, and failed_count so the file can be opened right away.
  • Otherwise, poll the tracked job log endpoints with the returned ID; the completed job's results include the download URL and per-order failures.

Requires permission: sales_orders.update

Request

Responses

OK

Response Headers
    Content-Type