Generate an image (synchronous)
Sample request
# Every field is optional — an empty body renders the design's saved content.
curl -X POST \
-H "x-api-key: $ABYSSALE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"template_format_name": "facebook-post",
"elements": {
"title": { "payload": "Summer sale — 40% off" },
"cta": { "payload": "Shop now" }
}
}' \
"https://api.abyssale.com/banner-builder/$DESIGN_ID/generate"import abyssale from '@abyssale/sdk';
const designId = 'YOUR_DESIGN_ID';
const { data, error } = await abyssale.generateImage(designId, {
"template_format_name": "facebook-post",
"elements": {
"title": {
"payload": "Summer sale — 40% off"
},
"cta": {
"payload": "Shop now"
}
}
});
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_image(design_id, {
"template_format_name": "facebook-post",
"elements": {
"title": {
"payload": "Summer sale — 40% off"
},
"cta": {
"payload": "Shop now"
}
}
})
print(result)Example request body
{
"template_format_name": "facebook-post",
"elements": {
"title": {
"payload": "Summer sale — 40% off"
},
"cta": {
"payload": "Shop now"
}
}
}Example 200 response
{
"id": "64238d01-d402-474b-8c2d-fbc957e9d290",
"version": 1,
"sharing_id": "5fcec999-2bfb-4dd7-ba38-2d9e16c49149",
"file": {
"type": "jpeg",
"url": "https://production-banners.s3.eu-west-1.amazonaws.com/demo/996739f4-b563-428a-a6e8-ec3cb8bd03d4.jpeg",
"cdn_url": "https://cdn.abyssale.com/demo/996739f4-b563-428a-a6e8-ec3cb8bd03d4.jpeg",
"filename": "996739f4-b563-428a-a6e8-ec3cb8bd03d4.jpeg",
"fallback_image_url": "string"
},
"format": {
"id": "facebook-post",
"unit": "px",
"width": 1200,
"height": 1200
},
"template": {
"id": "64238d01-d402-474b-8c2d-fbc957e9d290",
"name": "Ad campaign fall 2025",
"created_at": 1649942114,
"updated_at": 1649942114
},
"project": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"created_at_ts": 0
},
"image": {
"type": "string",
"url": "string"
},
"edit_url": "string",
"view_url": "string",
"visual_status": {
"status": "string",
"status_updated_at_ts": 0,
"reason": "string",
"content_to_replace": "string",
"content_to_hide": "string"
}
}Example 400 error response
{
"id": "template_not_static",
"message": "The current template is of type 'animated', expected 'static'. Use the /async endpoint instead."
}Synchronously generate a single image from a design. Send your dynamic data (text, images, colors) as element overrides in the request body and receive the generated file URL immediately in the response.
Behaviour, limits and caveats
static designs only. An animated, printer or printer_multipage design answers 400 with id: template_not_static — use asynchronous generation instead. This is a property of the endpoint, not of your plan: a video or a print PDF cannot be produced inside a synchronous request, so there is no combination of parameters that makes this work.
Best for: real-time image generation, single-asset workflows, or when you need the result inline without polling. The rendering budget is hard-capped at 10 seconds: the call returns the finished file within that window or fails with 500 internal_server_error (typical renders take tens of milliseconds).
For bulk generation across multiple formats, use the asynchronous endpoint instead.
AI features and the 10-second cap. text_to_image is not accepted here — an AI generation takes far longer than the budget, so the field exists only on the asynchronous endpoint and sending it answers 400 invalid_payload. Background removal (remove_bg) is accepted but is deprecated on this endpoint: it adds an AI round-trip before the render, so a large or slow source image can push the call past the cap and fail with 500 internal_server_error rather than returning your asset. Existing integrations keep working; new ones should remove backgrounds asynchronously. auto_focus is unaffected and fully supported here — it runs on Abyssale's own detection model and is fast enough that it does not put the budget at risk.
All body fields are optional — omit elements to render the design's saved default content. A template_format_name that does not exist on the design answers 404 with id: format_not_found (the format is addressed as a resource, so this is a 404 by contract, not a 400).
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
elements Elements
Element overrides keyed by layer name. On this synchronous endpoint every value MUST be an object — a bare string value answers 400 invalid_payload (the asynchronous endpoint is lenient).
More about elements
A dictionary containing all elements with properties you would like to override from the default design (keys correspond to layer names). The reserved key vars is not a layer: it carries the design-wide text variable values.
Unknown names are accepted, not rejected — and this is the one thing to know before you generate this object programmatically. The API does not check element names or property names against the design: a key naming a layer that does not exist, or a property that layer does not have, passes validation and simply does not change the output. There is no error and no warning, so a typo shows up as an asset that renders with the design's saved content instead of yours.
This leniency is deliberate and long-standing — live integrations depend on it, so it will not be tightened. Two consequences worth designing for:
- Check names against
GET /designs/{designId}rather than against a400. That response lists every element and every attribute it accepts. - Offline schema validation cannot help either. The branches below overlap by design (an element payload carries no type field — the layer's type comes from the design), so a generic JSON-Schema validator accepts any object here.
Show child attributes
<element-name> RootElement | Element | 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)
Element
Properties every layer type accepts, whatever its type. Composed into Element and AsyncElement with allOf so they survive the per-type anyOf — declared as a sibling of anyOf they would be dropped from every branch.
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.
ImageElement
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
Deprecated. Activates AI background removal when set to true.
More about remove_bg
Activates AI background removal when set to true.
Deprecated on this endpoint, and not recommended. It works and existing integrations keep working, but removing a background is an extra AI round-trip on top of the render, and this endpoint is hard-capped at 10 seconds — a large or slow source image can push the whole call past the cap and fail with 500 internal_server_error instead of returning your asset. Use asynchronous generation, which has no such bound.
remove_bg_properties object
Deprecated. Additional settings for background removal. Deprecated here for the same reason as remove_bg.
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.
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.
template_format_name string
Format ID to generate. Optional — when omitted, the design's first format is generated.
image_file_type string
Output file type (auto ≡ omitted). When omitted: jpeg, or png when the format's background color is transparent. One of "png", "jpeg", "webp", "avif", "pdf", "auto".
original_visual_id string (uuid)
Regenerate an existing visual in place, keeping its share URL (visual versioning). Unknown or unrelated visuals answer 404 (visual_not_found, not_related_to_same_template, not_related_to_same_format).
file_compression_level integer
Output quality, 1-100 — 100 is the best quality (least compression), 1 the smallest file. Despite the name, higher = better. Range 1–100.
Response 200
The generated banner, including its file URLs.
id string (uuid) always
version integer
Version number of the generated file — an integer counter, NOT the API version. A banner response reports this counter; the vYYYY-MM-DD stamp other responses carry never appears here.
sharing_id string (uuid)
Identifier used for sharing this generated file.
file File always
Show child attributes
type string always
File type. webp and avif are returned when image_file_type asked for them; an html5 generation is delivered as zip. One of "jpeg", "png", "webp", "avif", "pdf", "gif", "mp4", "zip".
url string always
URL of the banner (useful to download the image).
cdn_url string
The CDN URL of the banner (useful to host the image; on a website for instance). (A bandwidth usage limit applies, related to your plan). (Not available for zip)
filename string
Name of the file. If the related design contains a custom naming scheme, the custom name will be available from this property.
fallback_image_url string
Backup JPEG URL — present only when type is zip (HTML5 output).
format Format
Show child attributes
id string
Identifier/name of the format. Absent on multi-page print visuals.
unit string
Unit of width/height — px, or mm/in on print designs.
width number always
Width of the format, in unit. A float on print designs (mm/in).
height number always
Height of the format, in unit. A float on print designs (mm/in).
template DesignSummary
The design this file was generated from.
More about template
A short reference to a design, nested inside another resource. Deliberately narrower than Design — only the fields the parent resource carries.
Show child attributes
id string (uuid) always
Unique identifier (UUID) of the design.
name string always
Name of the design.
created_at integer
updated_at integer
project object
The design's project — present when the design has one.
Show child attributes
id string (uuid)
name string
created_at_ts integer
image object
Deprecated. Deprecated — same information as file.type / file.url.
Show child attributes
type string
url string (uri)
edit_url string
Platform edit URL — only for visuals bookmarked or downloaded in the platform.
view_url string
Platform view URL — only for visuals bookmarked or downloaded in the platform.
visual_status object
Present when the visual carries a review status.
Show child attributes
status string
status_updated_at_ts integer
reason string
content_to_replace string
Review feedback — content the reviewer asked to be replaced.
content_to_hide string
Review feedback — content the reviewer asked to be hidden.
Errors
Every failure uses the shared error envelope — {id, message, errors?}. Branch on id, never on message. See Errors.
| Status | When |
|---|---|
400 | The request body or parameters are invalid, or the design is not static (template_not_static — this endpoint renders single images only). |
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. |
