Skip to content

Download Purchase Order PDF

GET
/purchase_orders/{id}.pdf

🚀 Paid plan only

Renders the purchase order document synchronously and returns it as a PDF attachment. There is no queue, no job to poll, no asset to fetch afterwards and no notification - never tell a user the document will arrive somewhere.

The response body is binary, so it cannot be parsed as JSON. Send a user here by NAVIGATING (a link or a download control), not by reading the body as data.

The template is chosen by the server: a Veeqo-owned purchase order template, or the supplier’s own purchase_order_template on a plan with customizable templates. There is nothing to select and no template parameter.

id
required
integer

Purchase order ID. The .pdf suffix is part of the path, not part of the id.

Example
491
x-api-key
string

E.g. 123

Example
123

The rendered purchase order document, with Content-Disposition: attachment - so it DOWNLOADS as a file rather than displaying. Label a control for it “Download PDF”, never “open”.

string format: binary
Content-Disposition
string

REDIRECT to /orders, not an error document: the purchase-orders plan gate answers any non-JSON format with a redirect. A browser navigation follows it, so the seller lands on the orders page with no explanation and the caller learns nothing.

Location
string

A JSON error body ({"error_messages":[...]}) served under this operation’s filename, from the paid-plan-feature check or the manage_purchase_orders permission check. It is NOT a document. Together with the 302 above this is why the JSON representation should be read FIRST and the download only offered once it succeeded.

Purchase order not found (or belongs to another company).

The document is rendered by an external generator inside the server’s request budget (about 29 seconds) with no fallback, so a very large purchase order can fail here.