Layerre API Documentation
Create dynamic design variations at scale with the Layerre API. Generate images programmatically from your design templates, automate repetitive workflows, and maintain visual consistency across every output. Currently, the API supports templates built in Canva.
Quickstart Guide
Get up and running with Layerre in minutes. Follow these simple steps to create your first dynamic image variant. Currently, Layerre supports Canva designs only.
Step 1: Get Your API Key
First, generate an API key from your dashboard to authenticate your API requests.
Get Your API Key →Step 2: Get Your Canva Share URL
Open your design in Canva and get a shareable link that Layerre can use to import your design.
Click the "Share" button in the top right corner
Click "Anyone with the link" and copy the link

Step 3: Create a Template from Canva
Import your Canva design as a template. Layerre automatically extracts the layers, fonts, images, and other properties from the design. Note: When pasting your Canva URL, ensure it is not escaped (no backslashes before ? or & characters).
curl -X POST "https://api.layerre.com/v1/template" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"canva_url": "https://www.canva.com/design/..."}'Step 4: Get Template Details
Retrieve your template with all its editable layers.
curl "https://api.layerre.com/v1/template/{template_id}" -H "Authorization: Bearer YOUR_API_KEY"Step 5: Generate a Variant
Create a customized version by overriding text, images, or other layer properties.
curl -X POST "https://api.layerre.com/v1/template/{template_id}/variant" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"overrides": [{"layer_id": "text-layer-uuid", "properties": {"text": "Hello, World!"}}], "export_type": "png"}'Key Concepts
Understanding the core building blocks of the Layerre API will help you get the most out of the platform.
Templates
The foundation of your designs. Templates contain all the layers (text, images, etc.) that can be customized. Once created, a single template can be used to generate unlimited variants with different content.
Layers
Editable elements within templates. Each layer represents a specific component (text, image) that can be customized independently. Layers preserve their styling, fonts, positioning, and other properties from the original design.
Variants
Generated images with custom content. Each variant is created by applying overrides to specific layers in your template. Create unlimited variants from one template with different text, images, colors, or other layer properties.
Overrides
Layer-specific customizations applied when generating variants. Overrides allow you to change text content, swap images, modify colors, adjust positioning, and update other properties without affecting the template itself.
Authentication
The Layerre API uses bearer token authentication. Include your API key in the Authorization header for all requests.
curl "https://api.layerre.com/v1/templates" -H "Authorization: Bearer YOUR_API_KEY"Keep your API keys secure! Never share them publicly or commit them to version control.
Rate Limiting
To ensure fair usage and system stability, the Layerre API implements rate limiting on all endpoints. Rate limits are applied per IP address.
Rate Limit Details
- •10 requests per second - Sustained rate limit
- •20 requests burst - Allows short spikes in traffic
- •600 requests per minute - Maximum per minute
429 Too Many Requests
When you exceed the rate limit, the API returns a 429 Too Many Requests status code with a JSON error response.
HTTP/1.1 429 Too Many Requests
Retry-After: 10
Content-Type: application/json
{
"error": "Rate limit exceeded",
"message": "Too many requests. Please try again later.",
"retry_after": 10
}Templates
/v1/templateCreate Template
Create a template from a Canva URL. This endpoint processes a Canva URL and extracts template information including layers, dimensions, and other metadata.
Example Request
curl -X POST "https://api.layerre.com/v1/template" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{
"canva_url": "https://www.canva.com/design/..."
}'/v1/template/{template_id}Get Template
Get a template by ID with all its layers. Refreshes signed URLs for all image layers.
Parameters
template_idstringrequiredExample Request
curl -X GET "https://api.layerre.com/v1/template/{template_id}" -H "Authorization: Bearer YOUR_API_KEY"/v1/template/{template_id}Update Template
Update a template (name, width, height, background_color) and/or layers.
Parameters
template_idstringrequiredExample Request
curl -X PATCH "https://api.layerre.com/v1/template/{template_id}" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{
"name": "My Template",
"width": 800,
"height": 600,
"background_color": "#FFFFFF"
}'/v1/template/{template_id}Delete Template
Soft delete a template.
Parameters
template_idstringrequiredExample Request
curl -X DELETE "https://api.layerre.com/v1/template/{template_id}" -H "Authorization: Bearer YOUR_API_KEY"/v1/templatesList Templates
List all templates for the current user, sorted by last modified. Includes variant counts.
Parameters
skipintegerNumber of templates to skip
limitintegerMaximum number of templates to return
include_layersbooleanWhether to include layers in the response (slower for large templates)
Example Request
curl -X GET "https://api.layerre.com/v1/templates?skip=0&limit=100&include_layers=false" -H "Authorization: Bearer YOUR_API_KEY"Layers
/v1/template/{template_id}/layerCreate Layer
Create a new layer for a template. Accepts either img_url or text to create image or text layers respectively.
Parameters
template_idstringrequiredExample Request
curl -X POST "https://api.layerre.com/v1/template/{template_id}/layer" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{
"name": "Title Layer",
"layer_type": {},
"x": 0,
"y": 0,
"properties": {
"width": 100,
"height": 100,
"color": "#FF0000",
"rotation": 0,
"text": "Hello World",
"font_size": 16,
"font_name": "Arial",
"font_style": {
"weight": "example_string"
},
"text_align": {},
"letter_spacing": 0,
"line_spacing": 1000,
"vertical_align": "middle"
}
}'/v1/template/{template_id}/layer/{layer_id}Get Layer
Get a specific layer by ID. Refreshes signed URL if expired.
Parameters
template_idstringrequiredlayer_idstringrequiredExample Request
curl -X GET "https://api.layerre.com/v1/template/{template_id}/layer/{layer_id}" -H "Authorization: Bearer YOUR_API_KEY"/v1/template/{template_id}/layer/{layer_id}Update Layer
Update a layer. Supports updating text content, img_url, or any other layer properties.
Parameters
template_idstringrequiredlayer_idstringrequiredExample Request
curl -X PATCH "https://api.layerre.com/v1/template/{template_id}/layer/{layer_id}" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{
"id": "example_string",
"name": "Title Layer",
"layer_type": {},
"x": 0,
"y": 0,
"position": 0,
"properties": {
"width": 100,
"height": 100,
"color": "#FF0000",
"rotation": 0,
"text": "Hello World",
"font_size": 16,
"font_name": "Arial",
"font_style": {
"weight": "example_string"
},
"text_align": {},
"letter_spacing": 0,
"line_spacing": 1000,
"vertical_align": "middle",
"img_url": "https://example.com/image.png",
"image_fit": "contain",
"signed_url_expiry": "example_string",
"opacity": 1,
"flip_horizontal": false,
"flip_vertical": false
}
}'/v1/template/{template_id}/layer/{layer_id}Delete Layer
Soft delete a layer.
Parameters
template_idstringrequiredlayer_idstringrequiredExample Request
curl -X DELETE "https://api.layerre.com/v1/template/{template_id}/layer/{layer_id}" -H "Authorization: Bearer YOUR_API_KEY"Variants
/v1/template/{template_id}/variantCreate Variant
Create a single variant from a template with layer overrides.
Parameters
template_idstringrequiredExample Request
curl -X POST "https://api.layerre.com/v1/template/{template_id}/variant" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{
"width": 800,
"height": 600,
"export_type": "png"
}'/v1/template/{template_id}/variant/{variant_id}Get Variant
Get a variant by ID. Refreshes signed URL if expired.
Parameters
template_idstringrequiredvariant_idstringrequiredExample Request
curl -X GET "https://api.layerre.com/v1/template/{template_id}/variant/{variant_id}" -H "Authorization: Bearer YOUR_API_KEY"/v1/template/{template_id}/variant/{variant_id}Delete Variant
Soft delete a variant.
Parameters
template_idstringrequiredvariant_idstringrequiredExample Request
curl -X DELETE "https://api.layerre.com/v1/template/{template_id}/variant/{variant_id}" -H "Authorization: Bearer YOUR_API_KEY"/v1/template/{template_id}/variantsList Template Variants
List all variants for a template. Refreshes signed URLs for all variants.
Parameters
template_idstringrequiredskipintegerNumber of variants to skip
limitintegerMaximum number of variants to return
Example Request
curl -X GET "https://api.layerre.com/v1/template/{template_id}/variants?skip=0&limit=100" -H "Authorization: Bearer YOUR_API_KEY"Analyze
/v1/analyze/canva-designAnalyze Canva design
Extract colors, fonts, and images from a public Canva share URL.
Example Request
curl -X POST "https://api.layerre.com/v1/analyze/canva-design" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{
"canva_url": "https://www.canva.com/design/..."
}'Need help? Contact us at hello@layerre.com
© 2026 Layerre. All rights reserved.