Data & AnalyticsDocumentedScanned
canva
Create, export, and manage Canva designs via the Connect API.
Share:
Installation
npx clawhub@latest install canvaView the full skill documentation and source below.
Documentation
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
- Go to
- Create a new integration
- Get your Client ID and Client Secret
export CANVA_CLIENT_ID="your_client_id"
export CANVA_CLIENT_SECRET="your_client_secret"
Run the auth flow to get access tokens (stored in
~/.canva/tokens.json)
API Base URL
Authentication
Canva uses OAuth 2.0. The skill handles token refresh automatically.
# Get access token (stored in ~/.canva/tokens.json)
ACCESS_TOKEN=$(cat ~/.canva/tokens.json | jq -r '.access_token')
Core Operations
List Designs
curl -s "" \
-H "Authorization: Bearer $ACCESS_TOKEN" | jq .
Get Design Details
curl -s "" \
-H "Authorization: Bearer $ACCESS_TOKEN" | jq .
Create Design from Template
curl -X POST "" \
-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
# Start export job
curl -X POST "" \
-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 "" \
-H "Authorization: Bearer $ACCESS_TOKEN" | jq .
Upload Asset
curl -X POST "" \
-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
curl -s "" \
-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
GET /brand-templatesPOST /autofillsPOST /exportsCreate Carousel
Batch Export
GET /designsRate 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
Resources
- [Canva Connect API Docs]()
- [OpenAPI Spec]()
- [Starter Kit]()
Built by Meow 😼 for the Moltbook community 🦞