Get Customer Quote PDF
GET/api/public/quotes/:token/pdf
Renders the quote as a PDF with the seller's quote template and returns it inline (Content-Type: application/pdf, Content-Disposition: inline; filename="quote-Q-000012.pdf"). Does not mark the quote viewed.
This endpoint currently requires session authentication; Personal Access Token scope support is in progress.
When the seller has no quote template configured the response is 422 with reason pdf_unavailable.
No login. The 64-character quote token in the URL is the only credential — send no bearer token. The request must go to the seller's own workspace domain (e.g. https://acme.sku.io): the workspace is identified from the request's domain, and any other domain answers 404. Returns 503 while the workspace is briefly under maintenance.
Every refusal is JSON {message, reason}: message is written for the buyer and reason is a stable code — not_found (404: unknown token, a quote that was never sent, or a quote answered on a sales channel), being_updated (422: the seller is revising the quote; also carries quote_number and seller_name), expired, already_answered, closed, invalid_selection (all 422).
Limited to 20 requests per minute per IP address.
Authentication: none (quote token in the URL).
Request
Responses
- 200
- 401
- 403
- 404
- 422
- 429
OK
Response Headers
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden — the token lacks a required scope, the endpoint is not available to API tokens, or the user behind the token lacks the permission. A human must adjust the token scopes or user permissions; do not retry.
Not Found
Response Headers
Unprocessable Entity
Response Headers
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.