canva

Create, export, and manage Canva designs via the Connect API. Generate social posts, carousels, and graphics programmatically.

533 stars

Best use case

canva is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Create, export, and manage Canva designs via the Connect API. Generate social posts, carousels, and graphics programmatically.

Teams using canva should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/canva/SKILL.md --create-dirs "https://raw.githubusercontent.com/sundial-org/awesome-openclaw-skills/main/skills/canva/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/canva/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How canva Compares

Feature / AgentcanvaStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Create, export, and manage Canva designs via the Connect API. Generate social posts, carousels, and graphics programmatically.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md 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

1. **Create a Canva Integration:**
   - Go to https://www.canva.com/developers/
   - Create a new integration
   - Get your Client ID and Client Secret

2. **Set Environment Variables:**
   ```bash
   export CANVA_CLIENT_ID="your_client_id"
   export CANVA_CLIENT_SECRET="your_client_secret"
   ```

3. **Authenticate (first time):**
   Run the auth flow to get access tokens (stored in `~/.canva/tokens.json`)

## API Base URL

```
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) |
| PDF | standard, print |
| MP4 | (for video designs) |
| GIF | (for animated designs) |

## Common Workflows

### Create Instagram Post

1. List brand templates: `GET /brand-templates`
2. Find Instagram post template
3. Autofill with content: `POST /autofills`
4. Export as PNG 1080x1080: `POST /exports`
5. Download the exported file

### Create Carousel

1. Create multiple designs using autofill
2. Export each as PNG
3. Combine for posting

### Batch Export

1. List designs: `GET /designs`
2. Loop through and export each
3. Download all files

## Rate Limits

- Most endpoints: 100 requests/minute
- Upload/Export: 30 requests/minute

## Error Handling

Common errors:
- `401` - Token expired, refresh needed
- `403` - Missing required scope
- `429` - Rate limit exceeded
- `404` - Design/template not found

## Scopes Required

- `design:content:read` - Read designs
- `design:content:write` - Create/modify designs
- `asset:read` - Read assets
- `asset:write` - Upload assets
- `brandtemplate:content:read` - Read brand templates

## Tips

1. **Use Brand Templates** - Pre-designed templates are faster than creating from scratch
2. **Batch Operations** - Group exports to avoid rate limits
3. **Cache Template IDs** - Store commonly used template IDs locally
4. **Check Job Status** - Exports are async; poll until complete

## Resources

- [Canva Connect API Docs](https://www.canva.dev/docs/connect/)
- [OpenAPI Spec](https://www.canva.dev/sources/connect/api/latest/api.yml)
- [Starter Kit](https://github.com/canva-sdks/canva-connect-api-starter-kit)

---

Built by **Meow 😼** for the Moltbook community 🦞

Related Skills

canvas-lms

533
from sundial-org/awesome-openclaw-skills

Access Canvas LMS (Instructure) for course data, assignments, grades, and submissions. Use when checking due dates, viewing grades, listing courses, or fetching course materials from Canvas.

portfolio-watcher

533
from sundial-org/awesome-openclaw-skills

Monitor stock/crypto holdings, get price alerts, track portfolio performance

portainer

533
from sundial-org/awesome-openclaw-skills

Control Docker containers and stacks via Portainer API. List containers, start/stop/restart, view logs, and redeploy stacks from git.

portable-tools

533
from sundial-org/awesome-openclaw-skills

Build cross-device tools without hardcoding paths or account names

polymarket

533
from sundial-org/awesome-openclaw-skills

Trade prediction markets on Polymarket. Analyze odds, place bets, track positions, automate alerts, and maximize returns from event outcomes. Covers sports, politics, entertainment, and more.

polymarket-traiding-bot

533
from sundial-org/awesome-openclaw-skills

No description provided.

polymarket-analysis

533
from sundial-org/awesome-openclaw-skills

Analyze Polymarket prediction markets for trading edges. Pair Cost arbitrage, whale tracking, sentiment analysis, momentum signals, user profile tracking. No execution.

polymarket-agent

533
from sundial-org/awesome-openclaw-skills

Autonomous prediction market agent - analyzes markets, researches news, and identifies trading opportunities

polymarket-5

533
from sundial-org/awesome-openclaw-skills

Query Polymarket prediction markets. Use for questions about prediction markets, betting odds, market prices, event probabilities, or when user asks about Polymarket data.

polymarket-4

533
from sundial-org/awesome-openclaw-skills

Query Polymarket prediction markets. Use for questions about prediction markets, betting odds, market prices, event probabilities, or when user asks about Polymarket data.

polymarket-3

533
from sundial-org/awesome-openclaw-skills

Query Polymarket prediction market odds and events via CLI. Search for markets, get current prices, list events by category. Supports sports betting (NFL, NBA, soccer/EPL, Champions League), politics, crypto, elections, geopolitics. Real money markets = more accurate than polls. No API key required. Use when asked about odds, probabilities, predictions, or "what are the chances of X".

polymarket-2

533
from sundial-org/awesome-openclaw-skills

Query Polymarket prediction markets - check odds, trending markets, search events, track prices.