Canva
Create, edit, organize, autofill, and export Canva designs.
Connect a Canva account with OAuth to work with designs end to end: create and list designs, import files as designs, export to PDF/PNG/JPG/PPTX/GIF/MP4, upload and manage assets, autofill brand templates (Enterprise), organize folders, and comment on designs. Import, export, upload, and autofill are async job pairs - a create tool starts the job, its paired status tool polls until success or failure.
Connect
Sign in with Canva. Sign in with Canva to create, organize, autofill, and export designs as yourself. An organization admin configures the OAuth app once under Integrations → OAuth apps; after that, connecting is a consent screen.
-
Connecting signs in as YOU - tools see exactly the designs, assets, and folders your Canva account can.
-
Brand-template tools need a Canva Pro/Teams/Enterprise plan; autofill needs Canva Enterprise.
Tools
| Tool | Access | What it does |
|---|---|---|
Authenticated user (yekar.canva.users.me) | Read | Return the connected Canva user's id and team id (verifies the connection works). |
User capabilities (yekar.canva.users.capabilities) | Read | List the connected user's plan-gated API capabilities (e.g. 'autofill' = Enterprise, 'brand_template' = Pro/Teams/Enterprise) - check before calling gated tools. |
Create design (yekar.canva.designs.create) | Write | Create a new Canva design from a preset/custom type, optionally inserting an uploaded image asset. |
Get design (yekar.canva.designs.get) | Read | Fetch a design's metadata: title, edit/view URLs, thumbnail, owner, page count. |
List designs (yekar.canva.designs.list) | Read | List the user's designs, optionally filtered by search term and ownership. Paginated. |
Import design (yekar.canva.imports.create) | Write | Start an async job importing a file (PDF, DOCX, PPTX…) as a new Canva design. Poll imports.get until it resolves. |
Import job status (yekar.canva.imports.get) | Read | Poll a design import job. Non-terminal → retryAfterMs; success → the created design(s); failure → error detail. |
Import design from URL (yekar.canva.imports.create-from-url) | Write | Start an async job importing a publicly hosted file as a new Canva design (Canva downloads the URL server-side). Poll imports.get-from-url. |
URL import job status (yekar.canva.imports.get-from-url) | Read | Poll a URL design import job. Non-terminal → retryAfterMs; success → the created design(s); failure → error detail. |
Export design (yekar.canva.exports.create) | Write | Start an async job exporting a design to pdf/png/jpg/pptx/gif/mp4/html/csv. Poll exports.get for download URLs. |
Export job status (yekar.canva.exports.get) | Read | Poll a design export job. Non-terminal → retryAfterMs; success → download URLs (valid 24h); failure → error detail. |
Export formats (yekar.canva.exports.formats) | Read | List which export formats a design supports (call before exports.create to avoid a doomed job). |
Upload asset (yekar.canva.assets.upload) | Write | Start an async job uploading an image (<50MB) or video (<500MB) to the user's Canva assets. Poll assets.upload-status. |
Asset upload status (yekar.canva.assets.upload-status) | Read | Poll an asset upload job. Non-terminal → retryAfterMs; success → the created asset; failure → error detail. |
Get asset (yekar.canva.assets.get) | Read | Fetch an asset's metadata: name, tags, type, thumbnail. |
Update asset (yekar.canva.assets.update) | Write | Update an asset's name and/or tags (tags replace the existing set). |
Delete asset (yekar.canva.assets.delete) | Write | Move an asset to the Canva trash (designs already using it keep it). |
List brand templates (yekar.canva.brand-templates.list) | Read | List the user's brand templates (requires Canva Pro/Teams/Enterprise). Paginated. |
Get brand template (yekar.canva.brand-templates.get) | Read | Fetch a brand template's metadata (requires Canva Pro/Teams/Enterprise). |
Get brand template dataset (yekar.canva.brand-templates.get-dataset) | Read | Fetch a brand template's autofill data fields (name → text/image/chart) - the keys autofills.create's data map must use. Requires a plan with brand templates; autofilling needs Enterprise. |
Autofill design (yekar.canva.autofills.create) | Write | Start an async job creating a design by autofilling a brand template's data fields (requires Canva Enterprise). Poll autofills.get. |
Autofill job status (yekar.canva.autofills.get) | Read | Poll a design autofill job. Non-terminal → retryAfterMs; success → the created design (saved to the user's root folder); failure → error detail. |
Create folder (yekar.canva.folders.create) | Write | Create a folder inside another folder (or at the top level via parent_folder_id "root"). |
Get folder (yekar.canva.folders.get) | Read | Fetch a folder's metadata. |
Rename folder (yekar.canva.folders.update) | Write | Rename a folder (name is the only updatable field). |
Delete folder (yekar.canva.folders.delete) | Write | Delete a folder: the user's content moves to the Trash; content owned by others moves to the top of the owner's projects. |
List folder items (yekar.canva.folders.list-items) | Read | List a folder's contents (designs, subfolders, images, brand templates). Paginated. |
Move folder item (yekar.canva.folders.move-item) | Write | Move an item into another folder (items that live in multiple folders must be moved in the Canva UI). |
Comment on design (yekar.canva.comments.create) | Write | Start a new comment thread on a design (Canva marks the comments API as preview). |
Reply to comment (yekar.canva.comments.reply) | Write | Reply to a comment thread on a design (Canva marks the comments API as preview). |
Get comment thread (yekar.canva.comments.get-thread) | Read | Fetch a comment (or suggestion) thread on a design (Canva marks the comments API as preview). |
Get comment reply (yekar.canva.comments.get-reply) | Read | Fetch a single reply in a comment thread (Canva marks the comments API as preview). |
List comment replies (yekar.canva.comments.list-replies) | Read | List the replies in a comment thread. Paginated. (Canva marks the comments API as preview.) |
Notes
- Sign in with Canva to connect - tools act as your Canva account.
- Async operations (import, export, upload, autofill) return a jobId: poll the paired status tool (e.g. exports.get) until status is success or failed, waiting retryAfterMs between polls.
- Brand-template tools need Canva Pro/Teams/Enterprise; autofill needs Canva Enterprise - check users.capabilities first.
- Export/edit/view URLs are temporary (downloads ~24h, design links ~30 days) - use them promptly.