Generate a multi-page PDF (asynchronous)
Sample request
curl -X POST "https://api.abyssale.com/async/banner-builder/$DESIGN_ID/generate-multipage-pdf" \
-H "x-api-key: $ABYSSALE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"pages": {
"page_1": {
"your-element-name": {
"background_color": "#FF0000"
}
}
}
}'import abyssale from '@abyssale/sdk';
const designId = 'YOUR_DESIGN_ID';
const { data, error } = await abyssale.generateMultiPagePdf(designId, {
"pages": {
"page_1": {
"your-element-name": {
"background_color": "#FF0000"
}
}
}
});
if (error) console.error(error.id, error.message);
else console.log(data);from abyssale import Abyssale
design_id = "YOUR_DESIGN_ID"
with Abyssale() as client:
result = client.generate_multi_page_pdf(design_id, {
"pages": {
"page_1": {
"your-element-name": {
"background_color": "#FF0000"
}
}
}
})
print(result)Example request body
{
"pages": {
"page_1": {
"your-element-name": {
"background_color": "#FF0000"
}
}
}
}Example 200 response
{
"generation_request_id": "00000000-0000-0000-0000-000000000000",
"version": "v2026-08-21"
}Example 400 error response
{
"id": "invalid_payload",
"message": "Invalid JSON"
}Asynchronously generate a multi-page print-ready PDF from a printer_multipage design. Each page is defined by a pages dictionary entry, allowing different element overrides per page — ideal for brochures, catalogs, and variable data printing.
Behaviour, limits and caveats
Provide a callback_url to receive a webhook when the PDF is ready, or poll GET /generation-request/{generationRequestId} for status.
You can find available formats and elements by calling GET /designs/{designId}.
Path parameters
designId string (uuid) required
Unique identifier (UUID) of the design. A value that is not a UUID does not match the route and answers 404 with id: endpoint_not_found.
Request body
pages Pages required
Per-page element overrides, keyed by page identifier (page_1 … page_N).
More about pages
Per-page element overrides, keyed by page identifier (page_1 … page_N). Each value is a dictionary of element overrides for that page, in the same shape as elements on every other generation endpoint — root plus any layer of that page, keyed by layer name. This endpoint is asynchronous, so its image layers accept the AI properties too.
Show child attributes
<page-id> AsyncElements
One entry per page id.
Show child attributes
<element-name> RootElement | AsyncElement | VideoElement | AudioElement | ElementVars
One entry per element name.
Show child attributes
RootElement
background_color string
The background color displayed behind the element.
More about background_color
The background color displayed behind the element.
3 filling modes are available:
Monochrome: 6 or 8 hexadecimal colors starting with a #. i.e. #EAEAEA or #FF00FF55Linear Gradient:linear-gradient(x1% y1% x2% y2%,offset1% #color1 opacity1,offset2% #color2 opacity2)i.e. linear-gradient(0% 0% 100% 0%,0% #1a47ff 1,100% #b65151 1)Cmyka(print only):cmyka(c,m,y,k)orcmyka(c,m,y,k,alpha)where each value is 0–100. i.e. cmyka(0,100,100,0,100)
AsyncElement
Same as Element, but its image element also exposes AI generation properties (text_to_image, inpainting, background removal model) that are only available for asynchronous generation.
hidden boolean
true, false. If true it hides the current element
shadow_color string
6-8 digits hexadecimal color
shadow_blur number
Blur in pixels Minimum 0.
shadow_offset_x number
Horizontal offset in pixels (can be negative) Range -200–200.
shadow_offset_y number
Vertical offset in pixels (can be negative) Range -200–200.
TextElement
payload string
The text content. Length 1–10000 characters.
More about payload
The text content. Example: Lorem Ipsum
color string
The text color.
More about color
The text color.
3 filling modes are available:
Monochrome: 6 or 8 hexadecimal colors starting with a #. i.e. #EAEAEA or #FF00FF55Linear Gradient:linear-gradient(x1% y1% x2% y2%,offset1% #color1 opacity1,offset2% #color2 opacity2)Cmyka(print only):cmyka(c,m,y,k)orcmyka(c,m,y,k,alpha)where each value is 0–100.
background_color string
The background color displayed behind the element.
More about background_color
The background color displayed behind the element.
3 filling modes are available:
Monochrome: 6 or 8 hexadecimal colors starting with a #. i.e. #EAEAEA or #FF00FF55Linear Gradient:linear-gradient(x1% y1% x2% y2%,offset1% #color1 opacity1,offset2% #color2 opacity2)i.e. linear-gradient(0% 0% 100% 0%,0% #1a47ff 1,100% #b65151 1)Cmyka(print only):cmyka(c,m,y,k)orcmyka(c,m,y,k,alpha)where each value is 0–100. i.e. cmyka(0,100,100,0,100)
background_padding string
The padding of the background color around the text. Example: 10
More about background_padding
The padding of the background color around the text. Example: 10
This parameter will only be used if a background color is defined.
- String: Two numbers separated by a space: First number represents the vertical padding in pixels & the second the vertical padding. For instance: 0 10 : 0 as vertical padding & 10 as horizontal
- Number: Paddings (Horizontal & vertical) in pixels. i.e. 10
font_size number
Font size in pixels Example: 20 Minimum 1.
font string (uuid)
Force a specific font by ID.
More about font
Force a specific font by ID. Example: 6156907e-33c5-11ea-9877-92672c1b8195
The fonts list is available by calling the GET /fonts API route.
font_weight number
Force a font weight. One of 100, 200, 300, 400, 500, 600, 700, 800, 900.
More about font_weight
Force a font weight. Example: 500
| Value | Corresponding name |
|---|---|
| 100 | Thin |
| 200 | Extra Light |
| 300 | Light |
| 400 | Regular |
| 500 | Medium |
| 600 | Semi Bold |
| 700 | Bold |
| 800 | Extra Bold |
| 900 | Black |
If the font does not contain the given font weight, the nearest weight will be used.
line_height number
Force line height in percentage Example: 130 Minimum 1.
More about line_height
Force line height in percentage Example: 130
This parameter is only applied when the text is a multiline one.
skew_y number
Slant text on the y axis Example: 20 Range -20–20.
alignment string
The text alignment. Example: left One of "top", "middle", "bottom", "left", "center", "right", "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom right", "bottom center", "top custom", "middle custom", "bottom custom", "custom left", "custom center", "custom right", "custom custom".
More about alignment
The text alignment. Example: left
If given, the text position will be computed from the text bounding box defined within the design.
stroke_width number
Width of the stroke Example: 10. Range 0–40.
More about stroke_width
Width of the stroke Example: 10. Text and button top out at 40; a shape layer accepts up to 60 (see shapeStrokeWidth). The design import allows up to 1000, so a design can hold a stroke this endpoint cannot reproduce — the import bound is the design's, this one is the override's.
stroke_color string
Stroke Color. 6-8 digits Hexa color..
More about stroke_color
Stroke Color. 6-8 digits Hexa color.. Example: #FF0000
If your design does not contain any stroke, this color won't be visible
text_transform string
Text transformation style. Force the text to be transformed to one of the following options: - uppercase: All letters become uppercase (e.g., EXAMPLE) - lowercase: All letters become lowercase (e.g., example) - titlecase: The first letter of each word is capitalized (e.g., Example Text) - capitalize: Only the first letter of the entire text is capitalized (e.g., Example text) - none: No transformation — send it to clear one set on the design One of "none", "uppercase", "lowercase", "titlecase", "capitalize".
More about text_transform
Text transformation style. Force the text to be transformed to one of the following options: - uppercase: All letters become uppercase (e.g., EXAMPLE) - lowercase: All letters become lowercase (e.g., example) - titlecase: The first letter of each word is capitalized (e.g., Example Text) - capitalize: Only the first letter of the entire text is capitalized (e.g., Example text) - none: No transformation — send it to clear one set on the design
auto_resize boolean
Automatically adjusts the text size to fit within its container. When true, min_font_size must also be defined.
min_font_size number
Minimum font size allowed when auto_resize is enabled. Minimum 0.
max_lines number
Maximum number of lines allowed. Minimum 1.
text_harmony boolean
Attempts to balance line lengths with a maximum variance of 20% between lines. Adjusts character spacing (±20), then reduces font size (up to -10px) if needed.
text_truncation boolean
If the text does not fit, it is truncated and an ellipsis (...) is appended.
side_border string
Defines the side on which a border is rendered. Use none to disable an existing side border. One of "left", "right", "top", "bottom", "none".
side_border_thickness number
Thickness of the side border in pixels. Minimum 0.
side_border_color string
Color of the side border. 6-8 digits hexadecimal or cmyka (for print).
side_border_rounded boolean
Whether the border corners are rounded (true) or square (false). Default is false.
side_border_padding number
Distance in pixels between the text content and the side border. Default is 0. Minimum 0.
side_border_offset number
Moves the border along the perpendicular axis. Positive and negative values shift in opposite directions. Default is 0.
side_border_spread number
Extends the length of the border beyond the text bounding box by the specified number of pixels. Default is 0. Minimum 0.
AsyncImageElement
Image element properties available for asynchronous generation, including AI image generation, inpainting, and background removal model selection.
image_url string (uri)
HTTP(s) URL of the image Example: https://www.abyssale.com/imge/abyssale_logo.png
More about image_url
HTTP(s) URL of the image Example: https://www.abyssale.com/imge/abyssale_logo.png
It must be publicly accessible and at most 20 MB (500 MB on printer and printer_multipage designs).
Supported files: jpeg, jpg, png, webp, svg, gif, tiff, tif, avif
image_encoded string
Base64 encoded image as value. Example: /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQE...
More about image_encoded
Base64 encoded image as value. Example: /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQE...
If the image_url is given, this parameter will not be used.
opacity number
Opacity of the image Example: 60 Range 0–100.
fitting_type string
Defines the way the image will be inserted in the bounding box One of "cover", "fill".
More about fitting_type
Defines the way the image will be inserted in the bounding box
Two properties are supported:
cover: It will force the image to fill entirely the area without changing the aspect ratio (hence the image will be cropped if its ratio is not the same as the container)fill: The image will be displayed entirely within the box.
alignment string
The image alignment. Example: left. One of "top", "middle", "bottom", "left", "center", "right", "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom right", "bottom center", "top custom", "middle custom", "bottom custom", "custom left", "custom center", "custom right", "custom custom".
More about alignment
The image alignment. Example: left. A custom component resolves to the centre of that axis: custom custom, custom center and middle custom all place at the box centre, while custom left is the middle of the left edge. It is the value the editor stores for a hand-positioned layer, not a way to preserve one.
mask_name string
A mask can be added to the image. One of "circle", "rounded_corners", "blob", "squircle", "pentagon", "hexagon", "parallelogram", "window".
More about mask_name
A mask can be added to the image.
8 masks are available. Only rounded_corners takes a mask_properties; the other seven are shapes with no additional property.
circle: The image will be rendered as a circle.rounded_corners: Corners of the image will be rounded. It requires another property:mask_properties.blob: The image will be rendered as a blob.squircle: The image will be rendered as a squircle.pentagon: The image will be rendered as a pentagon.hexagon: The image will be rendered as a hexagon.parallelogram: The image will be rendered as a parallelogram.window: The image will be rendered as a window (an arch — flat base, rounded top).
mask_properties maskProperties
When the rounded_corners mask is applied, this parameter allows to define the radius.
More about mask_properties
When the rounded_corners mask is applied, this parameter allows to define the radius.
Two types of radius is supported:
- A number, that allows to define all corners' radius at once. Example: {"radius": 20}
- An object, that allows to customize each corner's radius individually. 4 properties are available: (
tl= top left,tr= top right,br= bottom right,bl= bottom left)
Example: {"radius": { "tl": 0, "tr": 56, "br": 56, "bl": 20 }}
filter_name string
A filter can be added to the image. Example: grayscale One of "grayscale", "duotone".
More about filter_name
A filter can be added to the image. Example: grayscale
2 filters are available:
grayscale: It converts the input image to grayscale. No additional property is available.duotone: Apply a duotone filter to the image. It requires another property:filter_properties
filter_properties filterProperties
When the duotone mask is applied, this parameter allows to define the duotone filter to apply. Example: { "name": "blue_orange" }
overlay_direction string
Direction of the overlay. One of "horizontal", "vertical", "diagonal".
overlay_color_1 string
First color of the overlay. 6-8 Digits Hexa color.
overlay_color_2 string
Second color of the overlay. 6-8 Digits Hexa color.
remove_bg boolean
Activates AI background removal when set to true.
remove_bg_properties object
Additional settings for background removal.
auto_focus boolean
Activates AI-powered auto-focus to detect and focus on specified objects or people within the image.
auto_focus_properties object
Additional settings for auto-focus.
text_to_image boolean | string
Activates AI image generation (text-to-image) or AI-assisted image editing (inpainting).
More about text_to_image
Activates AI image generation (text-to-image) or AI-assisted image editing (inpainting). If image_url (except default image) or image_encoded is provided, this property is ignored.
true uses text_to_image_properties. As a shorthand you may instead pass the prompt as a string — optionally "prompt,url1[,url2]" to supply inpainting sources — which is expanded into text_to_image_properties before validation.
text_to_image_properties TextToImageProperties
Settings for AI image generation or inpainting.
ButtonElement
payload string
The button's label. Same content rules as a text payload, but capped at 2 048 characters rather than 10 000 — the validator enforces the two separately. Length 1–2048 characters.
color string
The text color.
More about color
The text color.
3 filling modes are available:
Monochrome: 6 or 8 hexadecimal colors starting with a #. i.e. #EAEAEA or #FF00FF55Linear Gradient:linear-gradient(x1% y1% x2% y2%,offset1% #color1 opacity1,offset2% #color2 opacity2)Cmyka(print only):cmyka(c,m,y,k)orcmyka(c,m,y,k,alpha)where each value is 0–100.
background_color string
The background color displayed behind the element.
More about background_color
The background color displayed behind the element.
3 filling modes are available:
Monochrome: 6 or 8 hexadecimal colors starting with a #. i.e. #EAEAEA or #FF00FF55Linear Gradient:linear-gradient(x1% y1% x2% y2%,offset1% #color1 opacity1,offset2% #color2 opacity2)i.e. linear-gradient(0% 0% 100% 0%,0% #1a47ff 1,100% #b65151 1)Cmyka(print only):cmyka(c,m,y,k)orcmyka(c,m,y,k,alpha)where each value is 0–100. i.e. cmyka(0,100,100,0,100)
background_padding string
The padding of the background color around the text. Example: 10
More about background_padding
The padding of the background color around the text. Example: 10
This parameter will only be used if a background color is defined.
- String: Two numbers separated by a space: First number represents the vertical padding in pixels & the second the vertical padding. For instance: 0 10 : 0 as vertical padding & 10 as horizontal
- Number: Paddings (Horizontal & vertical) in pixels. i.e. 10
font_size number
Font size in pixels Example: 20 Minimum 1.
font string (uuid)
Force a specific font by ID.
More about font
Force a specific font by ID. Example: 6156907e-33c5-11ea-9877-92672c1b8195
The fonts list is available by calling the GET /fonts API route.
font_weight number
Force a font weight. One of 100, 200, 300, 400, 500, 600, 700, 800, 900.
More about font_weight
Force a font weight. Example: 500
| Value | Corresponding name |
|---|---|
| 100 | Thin |
| 200 | Extra Light |
| 300 | Light |
| 400 | Regular |
| 500 | Medium |
| 600 | Semi Bold |
| 700 | Bold |
| 800 | Extra Bold |
| 900 | Black |
If the font does not contain the given font weight, the nearest weight will be used.
line_height number
Force line height in percentage Example: 130 Minimum 1.
More about line_height
Force line height in percentage Example: 130
This parameter is only applied when the text is a multiline one.
text_transform string
Text transformation style. Force the text to be transformed to one of the following options: - uppercase: All letters become uppercase (e.g., EXAMPLE) - lowercase: All letters become lowercase (e.g., example) - titlecase: The first letter of each word is capitalized (e.g., Example Text) - capitalize: Only the first letter of the entire text is capitalized (e.g., Example text) - none: No transformation — send it to clear one set on the design One of "none", "uppercase", "lowercase", "titlecase", "capitalize".
More about text_transform
Text transformation style. Force the text to be transformed to one of the following options: - uppercase: All letters become uppercase (e.g., EXAMPLE) - lowercase: All letters become lowercase (e.g., example) - titlecase: The first letter of each word is capitalized (e.g., Example Text) - capitalize: Only the first letter of the entire text is capitalized (e.g., Example text) - none: No transformation — send it to clear one set on the design
alignment string
Placement of the button box — not of its label. A button keeps the two apart: this moves the box, text_align moves the label inside it. One of "top", "middle", "bottom", "left", "center", "right", "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom right", "bottom center", "top custom", "middle custom", "bottom custom", "custom left", "custom center", "custom right", "custom custom".
More about alignment
The image alignment. Example: left. A custom component resolves to the centre of that axis: custom custom, custom center and middle custom all place at the box centre, while custom left is the middle of the left edge. It is the value the editor stores for a hand-positioned layer, not a way to preserve one.
text_align string
Alignment of the label inside the button box. Default center. A button is the one layer type where these are two separate settings — on a text layer the alignment is the position. One of "left", "center", "right".
stroke_color string
Stroke Color. 6-8 digits Hexa color..
More about stroke_color
Stroke Color. 6-8 digits Hexa color.. Example: #FF0000
If your design does not contain any stroke, this color won't be visible
stroke_width number
Width of the stroke Example: 10. Range 0–40.
More about stroke_width
Width of the stroke Example: 10. Text and button top out at 40; a shape layer accepts up to 60 (see shapeStrokeWidth). The design import allows up to 1000, so a design can hold a stroke this endpoint cannot reproduce — the import bound is the design's, this one is the override's.
min_font_size number
Minimum font size allowed when auto_resize is enabled. Minimum 0.
auto_resize boolean
Automatically adjusts the label size to fit the button. When true, min_font_size must also be defined.
LogoElement
image_url string (uri)
HTTP(s) URL of the image Example: https://www.abyssale.com/imge/abyssale_logo.png
More about image_url
HTTP(s) URL of the image Example: https://www.abyssale.com/imge/abyssale_logo.png
It must be publicly accessible and at most 20 MB (500 MB on printer and printer_multipage designs).
Supported files: jpeg, jpg, png, webp, svg, gif, tiff, tif, avif
image_encoded string
Base64 encoded image as value. Example: /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQE...
More about image_encoded
Base64 encoded image as value. Example: /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQE...
If the image_url is given, this parameter will not be used.
alignment string
The image alignment. Example: left. One of "top", "middle", "bottom", "left", "center", "right", "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom right", "bottom center", "top custom", "middle custom", "bottom custom", "custom left", "custom center", "custom right", "custom custom".
More about alignment
The image alignment. Example: left. A custom component resolves to the centre of that axis: custom custom, custom center and middle custom all place at the box centre, while custom left is the middle of the left edge. It is the value the editor stores for a hand-positioned layer, not a way to preserve one.
ShapeElement
background_color string
The background color displayed behind the element.
More about background_color
The background color displayed behind the element.
3 filling modes are available:
Monochrome: 6 or 8 hexadecimal colors starting with a #. i.e. #EAEAEA or #FF00FF55Linear Gradient:linear-gradient(x1% y1% x2% y2%,offset1% #color1 opacity1,offset2% #color2 opacity2)i.e. linear-gradient(0% 0% 100% 0%,0% #1a47ff 1,100% #b65151 1)Cmyka(print only):cmyka(c,m,y,k)orcmyka(c,m,y,k,alpha)where each value is 0–100. i.e. cmyka(0,100,100,0,100)
pattern_name string
A pattern can be added to the shape. One of "bubbles", "cage", "cross", "doubleCircle", "drops", "parkay", "pills", "plus", "star", "ticTac", "ticTacFilled", "triangle", "wiggle".
More about pattern_name
A pattern can be added to the shape.
(List of patterns)[]
pattern_color string
A 6 or 8 hexadecimal shape color starting with a #. Example: #EAEAEA or #FF00FF55
More about pattern_color
A 6 or 8 hexadecimal shape color starting with a #. Example: #EAEAEA or #FF00FF55
If no pattern is applied to the shape, this property will not change anything.
stroke_width number
Width of the shape's stroke Example: 10. The design import allows up to 1000 — see strokeWidth. Range 0–60.
stroke_color string
Stroke Color. 6-8 digits Hexa color..
More about stroke_color
Stroke Color. 6-8 digits Hexa color.. Example: #FF0000
If your design does not contain any stroke, this color won't be visible
RatingElement
rating_score number
Score of the rating on a scale of 100. Example: 50 Range 0–100.
More about rating_score
Score of the rating on a scale of 100. Example: 50
For instance, as rating is displayed as five-stars, 50 will give a 2.5/5 score.
star_dimension number
Size in pixels of one star. Example: 100. The design import requires at least 4, so this endpoint accepts smaller stars than a design can be imported with. Range 0–400. Greater than true.
star_margin number
Margins in pixels between stars. Example: 60 Range 0–100.
star_color string
The color of the filled stars.
More about star_color
The color of the filled stars.
6 or 8 hexadecimal colors starting with a #. i.e. #EAEAEA or #FF00FF55
background_color string
The background color displayed behind all the stars.
More about background_color
The background color displayed behind all the stars.
6 or 8 hexadecimal colors starting with a #. i.e. #EAEAEA or #FF00FF55
IllustrationElement
illustration_type string
The illustration library the illustration name is looked up in. The public libraries are undraw, feather, twemoji and material_icons.
More about illustration_type
The illustration library the illustration name is looked up in. The public libraries are undraw, feather, twemoji and material_icons. Left as a free string rather than an enum on purpose: some workspaces have private libraries of their own, and an enum would make a generated client reject a value their API accepts.
illustration_file string
The illustration name..
illustration_properties illustrationProperties
Only Undraw, feather and material icons support illustration_properties.
alignment string
The image alignment. Example: left. One of "top", "middle", "bottom", "left", "center", "right", "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom right", "bottom center", "top custom", "middle custom", "bottom custom", "custom left", "custom center", "custom right", "custom custom".
More about alignment
The image alignment. Example: left. A custom component resolves to the centre of that axis: custom custom, custom center and middle custom all place at the box centre, while custom left is the middle of the left edge. It is the value the editor stores for a hand-positioned layer, not a way to preserve one.
opacity number
Opacity of the image Example: 60 Range 0–100.
QRCodeElement
background_color string
The background color displayed behind the qrcode.
More about background_color
The background color displayed behind the qrcode.
6 or 8 hexadecimal colors starting with a #. i.e. #EAEAEA or #FF00FF55
foreground_color string
The color of the qrcode (of all squares).
More about foreground_color
The color of the qrcode (of all squares).
6 or 8 hexadecimal colors starting with a #. i.e. #EAEAEA or #FF00FF55
payload string
**The content of the qrcode. i.e.
More about payload
The content of the qrcode. i.e. Lorem Ipsum
This content will be displayed once the QR Code is scanned.
image_url string
HTTP(s) URL of the icon displayed in the middle of the QR Code Example: https://www.abyssale.com/imge/abyssale_logo.png
More about image_url
HTTP(s) URL of the icon displayed in the middle of the QR Code Example: https://www.abyssale.com/imge/abyssale_logo.png
It must be a public accessible link and have a filesize of 10 mo maximum.
Supported files: jpeg, png, webp
hide_icon boolean
true, false. If true it hides the icon in the middle of the QRCode.
VideoElement
This element is only available for animated design
video_url string (uri)
HTTP(s) URL of the video Example: https://www.abyssale.com/imge/this_an_example.mp4
More about video_url
HTTP(s) URL of the video Example: https://www.abyssale.com/imge/this_an_example.mp4
It must be a public accessible link and have a filesize of 100 mo maximum.
Supported files: mp4
audio_muted number
Mute the video's audio track. Range 0–1.
More about audio_muted
Mute the video's audio track. 1 mutes it, 0 keeps it; values in between scale it. Default 0. A number, not a boolean — true/false answer 400 invalid_payload. The import spells this muted and takes a boolean; a design read returns video_muted / audio_muted, also booleans.
AudioElement
Audio layer element. Only available for animated designs with MP4 output.
audio_url string (uri)
HTTP(s) URL of the audio file.
More about audio_url
HTTP(s) URL of the audio file.
It must be a publicly accessible link with a filesize of 25 MB maximum.
Supported files: mp3, wav
audio_encoded string
Base64-encoded audio, as a data URI or raw base64. Ignored when audio_url is given. Same 25 MB ceiling.
max_volume number
Volume level. 1 = default volume, 0.5 = half volume, 0 = silent. Default is 1. Range 0–1.
speed number
Playback speed. 1 = 100%, 0.5 = 50%. Default is 1. Range 0.25–2.
VideoElement
This element is only available for animated design
video_url string (uri)
HTTP(s) URL of the video Example: https://www.abyssale.com/imge/this_an_example.mp4
More about video_url
HTTP(s) URL of the video Example: https://www.abyssale.com/imge/this_an_example.mp4
It must be a public accessible link and have a filesize of 100 mo maximum.
Supported files: mp4
audio_muted number
Mute the video's audio track. Range 0–1.
More about audio_muted
Mute the video's audio track. 1 mutes it, 0 keeps it; values in between scale it. Default 0. A number, not a boolean — true/false answer 400 invalid_payload. The import spells this muted and takes a boolean; a design read returns video_muted / audio_muted, also booleans.
AudioElement
Audio layer element. Only available for animated designs with MP4 output.
audio_url string (uri)
HTTP(s) URL of the audio file.
More about audio_url
HTTP(s) URL of the audio file.
It must be a publicly accessible link with a filesize of 25 MB maximum.
Supported files: mp3, wav
audio_encoded string
Base64-encoded audio, as a data URI or raw base64. Ignored when audio_url is given. Same 25 MB ceiling.
max_volume number
Volume level. 1 = default volume, 0.5 = half volume, 0 = silent. Default is 1. Range 0–1.
speed number
Playback speed. 1 = 100%, 0.5 = 50%. Default is 1. Range 0.25–2.
ElementVars
Design-wide text variable values.
<variable-name> string
One entry per variable name.
callback_url string (uri)
The url that will be called once generation of your PDF is done.
More about callback_url
The url that will be called once generation of your PDF is done.
We will do a POST request of the NewBannerBatch event on this URL with a JSON payload.
print object
Print output options
Show child attributes
color_profile string (uuid)
UUID of the color profile to apply.
More about color_profile
UUID of the color profile to apply. The built-ins, which are the same for every workspace:
| UUID | Profile |
|---|---|
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) |
fac91df8-1155-11ef-b77e-f93002785645 | CMYK — ISO Newspaper26 v4 |
db3c123e-1127-11ef-b77e-f93002785645 | RGB — No color profile |
A workspace may also hold custom profiles, whose UUIDs are not listed here. Omitted, the design's own profile is used. Not an enum: the list can grow, and a generated client should not reject a UUID it has not seen.
display_crop_marks boolean
original_visual_id string (uuid)
Do not use — visual versioning is not wired on this endpoint yet. Every other generation path resolves this UUID to an internal visual id and checks it belongs to the same design and format; this one does not, so the raw UUID is forwarded unresolved, no visual_not_found / not_related_to_same_template / not_related_to_same_format check runs, and the outcome is undefined.
More about original_visual_id
Do not use — visual versioning is not wired on this endpoint yet. Every other generation path resolves this UUID to an internal visual id and checks it belongs to the same design and format; this one does not, so the raw UUID is forwarded unresolved, no visual_not_found / not_related_to_same_template / not_related_to_same_format check runs, and the outcome is undefined. Use POST /async/banner-builder/{designId}/generate for versioned regeneration.
Response 200
Generation queued; poll generation_request_id or wait for the webhook.
generation_request_id string (uuid)
Unique identifier (UUID) of the batch generation
version string
The API version that produced this response, named by release date (vYYYY-MM-DD). Pattern ^v\d{4}-\d{2}-\d{2}$.
More about version
The API version that produced this response, named by release date (vYYYY-MM-DD). Stamped as a top-level field on JSON object bodies, success and error alike, so a client can always tell which contract answered. There is no version-selection parameter — a single version is maintained at a time.
Two kinds of body are not stamped. Array bodies (the listings) carry no envelope. And a body that already has a version key of its own is left alone — which in practice means Banner, whose version is the generated file's integer counter. So GET /banners/{bannerId} and the synchronous generate are the two responses that do not tell you which contract answered.
The value changes when a new version is released. Match the vYYYY-MM-DD shape rather than pinning today's literal, or your client breaks on the next release.
Errors
Every failure uses the shared error envelope — {id, message, errors?}. Branch on id, never on message. See Errors.
| Status | When |
|---|---|
400 | Bad Request — the request body or parameters are invalid. |
401 | Unauthorized — missing or invalid API key. |
404 | Not Found — the requested resource does not exist. |
429 | Rate limit exceeded (10 req/s) or a plan / credit restriction — inspect message to tell them apart. Both answer id: rate_limit_exceeded. |
500 | Internal Server Error — an unexpected error occurred on our side. |
