Preview designs with data
- Last updated on August 22, 2025
- •
- 3 minutes to read
The endpoints POST /api/atoms/v1/designs/render-proof and POST /api/atoms/v1/designs/render-preview allows you to preview the resulting designs. To apply variable data printing, their request body must include a variableData array with the updated field values.
Obtaining a list of variables
You may want to verify the variables before rendering. To do so, get the list of variable fields by using the endpoint GET /api/atoms/v1/designs/{id}/variables.
This endpoint will return all design fields created with the <VAR> marker in Adobe software, isVariable property in the Design Editor, and Variable field toggle in the Template Editor. The response contains an array of design items.
{
"name": "string", // The name of the variable field, e.g., "Job title"
"value": "string", // The value of the variable field, e.g., "junior copywriter"
"type": "string" // The type of the variable field, one of "Text", "InString", "ImagePlaceholder", "Image"
}
Defining values for variables
To change the data in the rendered design copies, use the same variable item model, where the name and type are case-sensitive strings. The type can be one of "Image", "ImagePlaceholder", "Text", or "InString".
The value for text types is a plain string, and for image types, it contains a path to an image. You can specify paths to images located in the following sources:
Public images uploaded to the Assets > Images:
"public:folder-path/file-name.jpg"User images upload to their private storage:
"user:folder-path/file-name.jpg"Images in an external system:
"https://example.com/image.jpg"
Providing the endpoint parameters
To render private designs, you must specify a designId and ownerId (the user who created the design). To populate text and images, provide a variableData array defining field values. You need also to specify the rendering config in the request body:
{
"designId": "6698b073306ecea21de39b11",
"ownerId": "crisford",
"variableData": [
{
"name": "Company Name",
"type": "Text",
"value": "CA Printing Inc."
},
{
"name": "CompanyLogo",
"type": "Image",
"value": "https://example.com/logos/company.png"
}
],
"renderingConfig": {
"surfaceIndex": 0,
"width": 300,
"height": 300,
"fileFormat": "Jpeg"
}
}
When renderingConfig.surfaceIndex is undefined, the response will contain the first design page for the "Jpeg", "Png", and "Tiff" formats and all the pages for "Pdf".
Making a call
Now, let's generate a preview with the provided parameters.
curl -X \
POST "https://api.customerscanvashub.com/api/atoms/v1/designs/render-preview" \
-H "accept: application/octet-stream" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{
"designId": "6698b073306ecea21de39b11",
"ownerId": "crisford",
"variableData": [
{
"name": "Company Name",
"type": "Text",
"value": "CA Printing Inc."
},
{
"name": "CompanyLogo",
"type": "Image",
"value": "https://example.com/logos/company.png"
}
],
"renderingConfig": {
"surfaceIndex": 0,
"width": 300,
"height": 300,
"fileFormat": "Jpeg"
}
}'