Let's scale your image production 🚀
This documentation is about the Abyssale Rest API
. If you would like to discover other Abyssale features or to have a comprehensive understanding on how everything works, go to the Abyssale developers hub.
Base URL: https://api.abyssale.com
Content-Type: application/json
header.Abyssale uses API Key Authentication. Your API key is passed along with every API call, allowing Abyssale to identify your company account and access your data.
A design is a layout including at least:
All elements have their own properties that can be customized (color, text payload, image...).
Once designed, all properties of the design will act as a reference for subsequent image generation. Obviously, those properties can be overridden by sending new parameters in the generation API call.
Abyssale provides a list of free template designs in the Template Library page. Feel free to use one to start designing your design instead of doing it from scratch.
All of your designs are listed in the different project pages, only those are accessible via API.
Retrieve all of your designs (containing for each the id, name, creation date & update date)
category_id | string <uuid> Unique identifier (UUID) of a category. Filter designs by a category. |
type | string Enum: "static" "animated" "printer" "printer_multipage" Filter designs by one of these types static, animated, printer, printer_multipage |
[- {
- "id": "64238d01-d402-474b-8c2d-fbc957e9d290",
- "name": "Ad campaign fall 2025",
- "type": "static",
- "created_at": 1649942114,
- "updated_at": 1649942114,
- "category_name": "Fall campaigns",
}
]
Retrieve the details of a design (general information, formats, elements & properties).
designId required | string <uuid> Unique identifier (UUID) of the design |
{- "id": "64238d01-d402-474b-8c2d-fbc957e9d290",
- "name": "Ad campaign fall 2025",
- "type": "static",
- "created_at": 1649942114,
- "updated_at": 1649942114,
- "category_name": "Fall campaigns",
- "formats": [
- {
- "id": "facebook-post",
- "width": 1200,
- "height": 1200,
}
], - "elements": [
- {
- "name": "element-name",
- "type": "text",
- "attributes": [
- {
- "id": "payload",
- "help": "Text content (i.e. Lorem ipsum)",
- "values": {
- "facebook-post": "My image title"
}
}
]
}
]
}
Basically, images are created by injecting your data (and customization parameters) into your design.
The generation process is straightforward:
Generate multiple formats of an image/video/pdf at once from a design created in Abyssale. This method is asynchronous and allows to generate several media (images/videos/pdf/gif) with one API call. Of course, it can also be used for single image generation (because of time-constraints for instance).
You can find available formats & elements of a design by calling the GET /designs/{designId} route.
designId required | string <uuid> Unique identifier (UUID) of the design |
required | object (Elements) A |
template_format_names | Array of strings Format IDs you would like to generate. The array can be empty or not provided if you want to generate all formats of this design. |
callback_url | string <uri> The url that will be called once generation of your images is done. We will do a |
{- "elements": {
- "element-name1": {
- "background_color": "#FF0000"
}, - "element-name2": {
- "background_color": "#FF0000"
}
}, - "template_format_names": [
- "facebook-feed",
- "instagram-post",
- "iab-medium"
],
}
{- "generation_request_id": "06399fcd-0c21-47da-bd9b-1e653e0453e8"
}
You can generate an export (.zip format) of multiple banners. This process is asynchronous and requires a webhook on your side.
A new banner export is available
export_id | string <uuid> ID of the export |
archive_url | string <uri> The zip public URL |
requested_at | number Timestamp at which the export has been requested |
generated_at | number Timestamp at which the export has been done |
{- "export_id": "38cb7df3-1160-4824-8531-2bacde2b6517",
- "requested_at": 1642150000,
- "generated_at": 1642150002
}
Generation of files (images/videos or html5) can be listened from the following events. Once a file has been generated, its details can be retrieved from the "Get File" endpoint.
A new file is available
id required | string <uuid> |
required | object (File) |
object (Format) | |
object (Design) |
{- "id": "64238d01-d402-474b-8c2d-fbc957e9d290",
- "file": {
- "type": "jpeg",
- "filename": "996739f4-b563-428a-a6e8-ec3cb8bd03d4.jpeg"
}, - "format": {
- "id": "facebook-post",
- "width": 1200,
- "height": 1200
}, - "template": {
- "id": "64238d01-d402-474b-8c2d-fbc957e9d290",
- "name": "Ad campaign fall 2025",
- "type": "static",
- "created_at": 1649942114,
- "updated_at": 1649942114,
- "category_name": "Fall campaigns"
}
}
A batch generation of files is completed
id required | string <uuid> Unique identifier (UUID) of the batch generation |
required | Array of objects (Banner) List of generated images |
Array of objects If any errors occur, they will be listed under that property |
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "banners": [
- {
- "id": "64238d01-d402-474b-8c2d-fbc957e9d290",
- "file": {
- "type": "jpeg",
- "filename": "996739f4-b563-428a-a6e8-ec3cb8bd03d4.jpeg"
}, - "format": {
- "id": "facebook-post",
- "width": 1200,
- "height": 1200
}, - "template": {
- "id": "64238d01-d402-474b-8c2d-fbc957e9d290",
- "name": "Ad campaign fall 2025",
- "type": "static",
- "created_at": 1649942114,
- "updated_at": 1649942114,
- "category_name": "Fall campaigns"
}
}
], - "errors": [
- {
- "template_format_name": "string",
- "reason": "string"
}
]
}
Projects allow you to organize your designs into logical groups. Each project can contain multiple designs and helps manage your design assets efficiently.
Retrieve all of your projects (containing id, name & creation date)
[- {
- "id": "9d00e9fe-9bd5-4471-acad-baa702a867e9",
- "name": "Animation Tests",
- "created_at_ts": 1654763057
}, - {
- "id": "bdf9ab44-f5fd-47ad-881d-a45906901233",
- "name": "HTML5 Tests",
- "created_at_ts": 1663767647
}
]
Create a new project to organize your templates and images
name required | string [ 2 .. 100 ] characters Name of the project |
{- "name": "Summer Campaign 2024"
}
{- "id": "cb2c4add-4867-11f0-96f2-0a00d9eb8f78",
- "name": "Summer Campaign 2024",
- "created_at_ts": 1749827107
}
Workspace templates are shared templates that can be duplicated into your projects. The duplication process is asynchronous and allows you to copy workspace templates into your projects for customization.
Duplicate a workspace template into a project. This operation is asynchronous.
Use the returned duplication_request_id
to track the duplication progress
with the polling endpoint.
companyTemplateId required | string <uuid> Example: 0c967bd0-4137-4690-ad70-249aa021c68b Unique identifier (UUID) of the workspace template to duplicate |
project_id required | string <uuid> Target project ID where the template will be duplicated |
name | string [ 2 .. 100 ] characters Optional custom name for the duplicated template |
{- "project_id": "d59adee9-4867-11f0-96f2-0a00d9eb8f78"
}
{- "duplication_request_id": "40c32a4e-4869-11f0-96f2-0a00d9eb8f78"
}
Poll the status of a template duplication request. Use this endpoint to track the progress of an asynchronous duplication operation.
duplicateRequestId required | string <uuid> Example: 40c32a4e-4869-11f0-96f2-0a00d9eb8f78 Unique identifier (UUID) of the duplication request |
{- "request_id": "40c32a4e-4869-11f0-96f2-0a00d9eb8f78",
- "status": "COMPLETED",
- "created_at_ts": 1749827734,
- "completed_at_ts": 1749827736,
- "errored_at_ts": null,
- "target_project": {
- "id": "d59adee9-4867-11f0-96f2-0a00d9eb8f78",
- "name": "HTML5 Tests",
- "created_at_ts": 1749827125
}, - "designs": [
- {
- "original_design_id": "0c967bd0-4137-4690-ad70-249aa021c68b",
- "target_design_id": "afb1a61a-6c50-4bc3-a49b-3381822d4e81",
- "target_design_name": "New Design name"
}
]
}
Generate multiple page pdf designed in Abyssale. This method is asynchronous and allows to generate a multiple page printable PDF with one API call. Of course, it can also be used for single image generation (because of time-constraints for instance).
You can find available formats & elements of a design by calling the POST /designs/{designId} route.
designId required | string <uuid> Unique identifier (UUID) of the design |
object (Pages) A | |
callback_url | string <uri> The url that will be called once generation of your images is done. We will do a |
{- "pages": {
- "page_1": {
- "root": {
- "background_color": "#FF0000"
}
}, - "page_2": {
- "root": {
- "background_color": "#FF0000"
}
}
},
}
{- "generation_request_id": "06399fcd-0c21-47da-bd9b-1e653e0453e8"
}