v0.1.0

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.

2.

Click the "Share" button in the top right corner

3.

Click "Anyone with the link" and copy the link

Canva Share Dialog showing how to get a shareable 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

post/v1/template

Create 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/..."
}'
get/v1/template/{template_id}

Get Template

Get a template by ID with all its layers. Refreshes signed URLs for all image layers.

Parameters

PATH PARAMETERS
template_idstringrequired
Format: uuid

Example Request

curl -X GET "https://api.layerre.com/v1/template/{template_id}" -H "Authorization: Bearer YOUR_API_KEY"
patch/v1/template/{template_id}

Update Template

Update a template (name, width, height, background_color) and/or layers.

Parameters

PATH PARAMETERS
template_idstringrequired
Format: uuid

Example 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"
}'
delete/v1/template/{template_id}

Delete Template

Soft delete a template.

Parameters

PATH PARAMETERS
template_idstringrequired
Format: uuid

Example Request

curl -X DELETE "https://api.layerre.com/v1/template/{template_id}" -H "Authorization: Bearer YOUR_API_KEY"
get/v1/templates

List Templates

List all templates for the current user, sorted by last modified. Includes variant counts.

Parameters

QUERY PARAMETERS
skipinteger

Number of templates to skip

Default: 0
Min: 0
limitinteger

Maximum number of templates to return

Default: 100
Min: 1
Max: 1000
include_layersboolean

Whether to include layers in the response (slower for large templates)

Default:

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

post/v1/template/{template_id}/layer

Create Layer

Create a new layer for a template. Accepts either img_url or text to create image or text layers respectively.

Parameters

PATH PARAMETERS
template_idstringrequired
Format: uuid

Example 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"
  }
}'
get/v1/template/{template_id}/layer/{layer_id}

Get Layer

Get a specific layer by ID. Refreshes signed URL if expired.

Parameters

PATH PARAMETERS
template_idstringrequired
Format: uuid
layer_idstringrequired
Format: uuid

Example Request

curl -X GET "https://api.layerre.com/v1/template/{template_id}/layer/{layer_id}" -H "Authorization: Bearer YOUR_API_KEY"
patch/v1/template/{template_id}/layer/{layer_id}

Update Layer

Update a layer. Supports updating text content, img_url, or any other layer properties.

Parameters

PATH PARAMETERS
template_idstringrequired
Format: uuid
layer_idstringrequired
Format: uuid

Example 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
  }
}'
delete/v1/template/{template_id}/layer/{layer_id}

Delete Layer

Soft delete a layer.

Parameters

PATH PARAMETERS
template_idstringrequired
Format: uuid
layer_idstringrequired
Format: uuid

Example Request

curl -X DELETE "https://api.layerre.com/v1/template/{template_id}/layer/{layer_id}" -H "Authorization: Bearer YOUR_API_KEY"

Variants

post/v1/template/{template_id}/variant

Create Variant

Create a single variant from a template with layer overrides.

Parameters

PATH PARAMETERS
template_idstringrequired
Format: uuid

Example 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"
}'
get/v1/template/{template_id}/variant/{variant_id}

Get Variant

Get a variant by ID. Refreshes signed URL if expired.

Parameters

PATH PARAMETERS
template_idstringrequired
Format: uuid
variant_idstringrequired
Format: uuid

Example Request

curl -X GET "https://api.layerre.com/v1/template/{template_id}/variant/{variant_id}" -H "Authorization: Bearer YOUR_API_KEY"
delete/v1/template/{template_id}/variant/{variant_id}

Delete Variant

Soft delete a variant.

Parameters

PATH PARAMETERS
template_idstringrequired
Format: uuid
variant_idstringrequired
Format: uuid

Example Request

curl -X DELETE "https://api.layerre.com/v1/template/{template_id}/variant/{variant_id}" -H "Authorization: Bearer YOUR_API_KEY"
get/v1/template/{template_id}/variants

List Template Variants

List all variants for a template. Refreshes signed URLs for all variants.

Parameters

PATH PARAMETERS
template_idstringrequired
Format: uuid
QUERY PARAMETERS
skipinteger

Number of variants to skip

Default: 0
Min: 0
limitinteger

Maximum number of variants to return

Default: 100
Min: 1
Max: 1000

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

post/v1/analyze/canva-design

Analyze 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.