Generate Multi-Format PDFs for Printing
Asynchronously generate print-ready PDFs across multiple formats from a single printer design. Each PDF is exported with CMYK color space support and bleed settings configured in your design — ready to send directly to a print supplier.
Each format produces its own PDF file. When generation completes, a NEW_BANNER_BATCH event is sent to your callback_url carrying a banners array with one entry per format, each with its own file.url. The files are not bundled into a ZIP — a ZIP is only ever produced for HTML5 banners.
This is for a printer design, whose formats are separate documents. For a printer_multipage design — one document with several pages — use Generate Multi-Page PDF instead.
Plan requirement
This feature is available from the Suite plan.
Colors accept hex or CMYK
Colors you override at generation time — root.background_color and element *_color fields — accept both hex (#RRGGBB / #RRGGBBAA) and CMYK (cmyk(C,M,Y,K) / cmyka(C,M,Y,K,A)) tokens on print designs. The backend converts them to the design's color profile at render time. (Print imports store CMYK too, converting a solid hex for you — see Print Imports → Colors.)
Endpoint
Generation characteristics

- Supported Design Type:
printer - Response: Asynchronous
- Output: Single-page printable PDF per format
- Retrieval methods: Webhooks, Polling
Output customization
Use the print property to customize the PDF output:
Display crop marks
- Default: the value configured in the builder
- Type: Boolean
Color profiles
| UUID | Description |
|---|---|
be2ab219-8fe4-4d85-91ba-65bdc9ddaf01 | CMYK — ISO Coated v2 (ECI) |
03738f37-5b6f-4be9-9100-706b1711f9dd | CMYK — ISO Coated v2 (ECI) 300% |
e0c86a8a-050c-41f1-885a-0f74b9baac50 | CMYK — ISO Uncoated |
0e0355e6-2931-4c83-92f2-64db9f5ddffc | CMYK — US Web Coated (SWOP 2006 5v2) |
db3c123e-1127-11ef-b77e-f93002785645 | RGB — No color profile |
fac91df8-1155-11ef-b77e-f93002785645 | CMYK — ISO Newspaper26 v4 |
The color_profile value must be a UUID — the built-ins above, or a custom profile from your workspace.
{
"print": {
"display_crop_marks": true,
"color_profile": "e0c86a8a-050c-41f1-885a-0f74b9baac50"
}
}Request body fields
All body fields are optional.
| Field | Type | Required | Description |
|---|---|---|---|
elements | object | No | Dictionary of element overrides keyed by layer name. See Element Properties. Omit to render the design's saved default content. |
template_format_names | array<string> | No | Format IDs to generate. Omit to generate every format of the design. An entry that doesn't exist on the design answers 404 with id: format_not_found. |
callback_url | string (url) | No | Webhook URL notified when the batch completes. Omit to retrieve results by polling. |
image_file_type | string | No | Print designs always produce "pdf" — omit it, or set "pdf" explicitly (anything else is 400 invalid_filetype). |
file_compression_level | integer | No | Output quality, 1–100 — 100 is the best quality. |
print | object | No | Print output options: color_profile (UUID — see below), display_crop_marks (boolean, defaults to the builder value). |
original_visual_id | string (uuid) | No | Regenerate an existing visual in place — see Visual Versioning. Must target exactly one format. |
Sample request
Replace {YOUR-API-KEY} and {designId} before running.
curl -X POST \
-H "x-api-key: {YOUR-API-KEY}" \
-H "Content-Type: application/json" \
-d '{
"callback_url": "https://webhook.mycompany.com/pdfs",
"template_format_names": ["postcard", "tabloid-vertical"],
"elements": {
"root": { "background_color": "cmyk(0,0,0,0)" },
"text_0": {
"payload": "Lorem ipsum",
"color": "cmyka(0,0,0,100,100)",
"font_size": 24,
"font_weight": 400,
"line_height": 130,
"alignment": "top left"
}
}
}' \
https://api.abyssale.com/async/banner-builder/{designId}/generateSample response
{ "generation_request_id": "166e1852-dc97-43e3-a5f2-142076452c74" }Related
- Asynchronous Generation Overview
- Root Element Properties — CMYK background color for print
- Banner Events — webhook payload on completion
- Errors — error codes for failed requests
- Node.js SDK · Python SDK — every method, config, retries and the polling helpers
