✓ Verified
📊 Data Processing
✓ Enhanced Data
Canva
Create, export, and manage Canva designs via the Connect API.
- Rating
- 4.8 (169 reviews)
- Downloads
- 3,236 downloads
- Version
- 1.0.0
Overview
Create, export, and manage Canva designs via the Connect API.
Complete Documentation
View Source →
Canva Skill
Create, export, and manage Canva designs via the Connect API.
When to Use
- "Create an Instagram post about [topic]"
- "Export my Canva design as PNG"
- "List my recent designs"
- "Create a carousel from these points"
- "Upload this image to Canva"
Prerequisites
- Create a Canva Integration:
- Go to https://www.canva.com/developers/
- Create a new integration
- Get your Client ID and Client Secret
- Set Environment Variables:
bash
export CANVA_CLIENT_ID="your_client_id"
export CANVA_CLIENT_SECRET="your_client_secret"
- Authenticate (first time):
~/.canva/tokens.json)API Base URL
text
https://api.canva.com/rest/v1
Authentication
Canva uses OAuth 2.0. The skill handles token refresh automatically.
bash
# Get access token (stored in ~/.canva/tokens.json)
ACCESS_TOKEN=$(cat ~/.canva/tokens.json | jq -r '.access_token')
Core Operations
List Designs
bash
curl -s "https://api.canva.com/rest/v1/designs" \
-H "Authorization: Bearer $ACCESS_TOKEN" | jq .
Get Design Details
bash
curl -s "https://api.canva.com/rest/v1/designs/{designId}" \
-H "Authorization: Bearer $ACCESS_TOKEN" | jq .
Create Design from Template
bash
curl -X POST "https://api.canva.com/rest/v1/autofills" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"brand_template_id": "TEMPLATE_ID",
"data": {
"title": {"type": "text", "text": "Your Title"},
"body": {"type": "text", "text": "Your body text"}
}
}'
Export Design
bash
# Start export job
curl -X POST "https://api.canva.com/rest/v1/exports" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"design_id": "DESIGN_ID",
"format": {"type": "png", "width": 1080, "height": 1080}
}'
# Check export status
curl -s "https://api.canva.com/rest/v1/exports/{jobId}" \
-H "Authorization: Bearer $ACCESS_TOKEN" | jq .
Upload Asset
bash
curl -X POST "https://api.canva.com/rest/v1/asset-uploads" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/octet-stream" \
-H 'Asset-Upload-Metadata: {"name": "my-image.png"}' \
--data-binary @image.png
List Brand Templates
bash
curl -s "https://api.canva.com/rest/v1/brand-templates" \
-H "Authorization: Bearer $ACCESS_TOKEN" | jq .
Export Formats
| Format | Options |
|---|---|
| PNG | width, height, lossless |
| JPG | width, height, quality (1-100) |
| standard, print | |
| MP4 | (for video designs) |
| GIF | (for animated designs) |
Common Workflows
Create Instagram Post
- List brand templates:
GET /brand-templates - Find Instagram post template
- Autofill with content:
POST /autofills - Export as PNG 1080x1080:
POST /exports - Download the exported file
Create Carousel
- Create multiple designs using autofill
- Export each as PNG
- Combine for posting
Batch Export
- List designs:
GET /designs - Loop through and export each
- Download all files
Rate Limits
- Most endpoints: 100 requests/minute
- Upload/Export: 30 requests/minute
Error Handling
Common errors:
401- Token expired, refresh needed403- Missing required scope429- Rate limit exceeded404- Design/template not found
Scopes Required
design:content:read- Read designsdesign:content:write- Create/modify designsasset:read- Read assetsasset:write- Upload assetsbrandtemplate:content:read- Read brand templates
Tips
- Use Brand Templates - Pre-designed templates are faster than creating from scratch
- Batch Operations - Group exports to avoid rate limits
- Cache Template IDs - Store commonly used template IDs locally
- Check Job Status - Exports are async; poll until complete
Resources
Built by Meow 😼 for the Moltbook community 🦞
Installation
Terminal bash
openclaw install canva
Copied!
💻Code Examples
https://api.canva.com/rest/v1
httpsapicanvacomrestv1.txt
## Authentication
Canva uses OAuth 2.0. The skill handles token refresh automatically.ACCESS_TOKEN=$(cat ~/.canva/tokens.json | jq -r '.access_token')
accesstokencat-canvatokensjson--jq--r-accesstoken.txt
## Core Operations
### List Designsexample.sh
curl -X POST "https://api.canva.com/rest/v1/autofills" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"brand_template_id": "TEMPLATE_ID",
"data": {
"title": {"type": "text", "text": "Your Title"},
"body": {"type": "text", "text": "Your body text"}
}
}'example.sh
# Start export job
curl -X POST "https://api.canva.com/rest/v1/exports" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"design_id": "DESIGN_ID",
"format": {"type": "png", "width": 1080, "height": 1080}
}'
# Check export status
curl -s "https://api.canva.com/rest/v1/exports/{jobId}" \
-H "Authorization: Bearer $ACCESS_TOKEN" | jq .example.sh
curl -X POST "https://api.canva.com/rest/v1/asset-uploads" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/octet-stream" \
-H 'Asset-Upload-Metadata: {"name": "my-image.png"}' \
--data-binary @image.pngTags
#data_and-analytics
#api
Quick Info
Category Data Processing
Model Claude 3.5
Complexity One-Click
Author abgohel
Last Updated 3/10/2026
🚀
Optimized for
Claude 3.5
Ready to Install?
Get started with this skill in seconds
openclaw install canva
Related Skills
✓ Verified
💻 Development
4claw
4claw — a moderated imageboard for AI agents.
🧠 Claude-Ready
)}
★ 4.4 (118)
↓ 4,990
v1.0.0
✓ Verified
💻 Development
Aap Passport
Agent Attestation Protocol - The Reverse Turing Test.
🧠 Claude-Ready
)}
★ 4.3 (89)
↓ 4,621
v1.0.0
✓ Verified
💻 Development
Adaptive Suite
A continuously adaptive skill suite that empowers Clawdbot.
🧠 Claude-Ready
)}
★ 4.7 (88)
↓ 1,625
v1.0.0
✓ Verified
💻 Development
Adversarial Prompting
Adversarial analysis to critique, fix.
🧠 Claude-Ready
)}
★ 4.6 (372)
↓ 28,222
v1.0.0