/api/v1/:workspace/templates/:id/generateRender one PDF
Synchronous render. The response shape is chosen via the Accept header: application/pdf streams the bytes; anything else (default) returns JSON with a presigned download URL.
Parameters
workspacepath | Workspace slug.required |
idpath | Template UUID.required |
Acceptheader | application/pdf for bytes, or application/json (default) for { url, expiresAt, … }. |
Response
// Accept: application/pdf
(application/pdf — binary stream)
// Accept: application/json (default)
{
"url": "https://…",
"ttl": 259200,
"expiresAt": "…",
"urlExpiresAt": "…",
"filename": "invoice-2026-05.pdf",
"bytes": 58231
}filename — names the download; .pdf is appended if missing. It also becomes the PDF's Title property when the template has none. Document properties the uploaded template already carries (Title, Author, Subject) are kept; empty ones are filled (Author = your organisation, Subject = the template description), and Creator always reads Pluma.
renderer — plumav1 (default: flat, small files, supports barcodes, signatures, transforms) or standard (keeps AcroForm fields editable after the render).
ttlSeconds — how long the stored render stays downloadable, in seconds; 0 keeps it until you delete it (expiresAt: null). Without it, your default from Settings → Template defaults applies — on paid plans that's "until deleted" unless you set a limit there. The Free plan keeps renders 30 minutes. Ignored for byte responses — those are never stored.
password — password-protects the output. The template must allow it (apiCanSetPassword).
ignoreErrors — false (default) aborts with 400 transform_failed when a field's transform code fails, listing every failed field; true renders anyway with failed fields blanked. See Custom transform code.
Need help?
Open a ticket from the in-app Support page, or email [email protected].