Canva

SkillDocs & knowledge

Lets your agent work with Canva designs through the Canva Claude skill.

Use Canva in Claude, ChatGPT or Ahel Desktop

Free. Sign in, add Canva and connect your AI. About a minute.

Also: Claude Code · Cursor · Codex

Then ask your AI: use the Canva skill

Details

Instructions available. Your AI can read the instructions. Execution depends on the setup they require.

Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

About this skill

Work with Canva designs: list designs and folders, create designs, upload assets, and export to PNG/JPG/PDF/MP4. Trigger phrases: canva, canva design, export canva design.

What this skill tells your AI

The instructions your AI receives, as published by anil-matcha/awesome-muse-connectors in connectors/canva/SKILL.md and read by ahel’s review.

Purpose

Read and manage Canva designs through the Canva Connect API: list designs and folders, inspect a design, create designs, upload assets, and export designs. Exports are async jobs: submit with export, then poll with export-status until the job succeeds.

Tooling

All commands go through bin/canva.py:

bin/canva.py auth                                        # verify the connection (prints the Canva user)
bin/canva.py designs --query "pitch deck"                # list designs, optional search
bin/canva.py design --id DESIGN_ID                      # get one design's details
bin/canva.py folders                                     # list folders
bin/canva.py folder-items --id FOLDER_ID                 # list items in a folder
bin/canva.py assets                                      # list uploaded assets
bin/canva.py create --data '{"design_type":{"type":"preset","name":"presentation"}}'
                                                         # create a design (raw JSON body, per Canva docs)
bin/canva.py upload-asset --file ./logo.png              # upload a local file as an asset
bin/canva.py upload-asset --url https://example.com/a.png  # import an asset from a URL
bin/canva.py export --design-id DESIGN_ID --format png   # submit an async export job (png, jpg, pdf, mp4, ...)
bin/canva.py export-status --id EXPORT_ID                # poll the export job; prints download URLs when done

Auth

  • Provider id: canva (credential is collected as custom.canva)
  • Collection: OAuth 2.0 authorization-code + PKCE via the secure credential flow (credentials.request_api_access); any Canva account can create a developer integration for free, but using it for other users requires Canva app review
  • Required scopes: whatever the Canva integration granted (design read/write as configured)
  • Allowed hosts: api.canva.com
  • Status check: bin/canva.py auth

Operating Rules

  1. Access tokens expire after about 4 hours; the credential flow handles refresh, but re-run auth if calls start failing.
  2. Exports are async: export returns a job id, then poll export-status with backoff until the status is success. Download URLs expire, so download the file promptly and never store the URL as the artifact.
  3. Confirm with the user before creating designs, uploading assets, running exports, or deleting anything: each burns Canva usage or changes the account.
  4. Never exfiltrate the credential: the CLI only ever handles surrogates. Do not print, log, or transmit the token value.

Files

  • SKILL.md
  • bin/canva.py

Maturity

🧪 Draft: written from Canva's public Connect API docs; not yet live-tested end to end.

Signals

GitHub stars
1k
Forks
282
Last commit
Sep 2026
Advanced
Item type
skill
Key
canva
Source
github.com/anil-matcha/awesome-muse-connectors