Skip to content

Canva — Create, Import, Export & Organise Designs From Chat

May 25, 2026

Connect your Canva account and Alfrada can spin up new designs from a blank canvas or a custom size, import PDFs / DOCX / PPTX / XLSX / PSD / AI files as editable Canva designs, export to PDF / PNG / JPG / PPTX / GIF / MP4, upload images / videos / fonts into your content library, and browse what you already have. Designed for the people who live half in chat and half in Canva — agency producers, content marketers, founders building decks, anyone tired of leaving the conversation to babysit a file conversion.

Updated June 02, 2026: Canva's production OAuth connection now uses the refreshed Composio auth configuration.

What you can do

  • Confirm the connected accountcanva_get_user returns your Canva display name. Run this first on every new session to confirm which Canva account is active before touching anything destructive.
  • Create a new designcanva_create_design takes a single design_type arg: either a preset ('doc', 'presentation', 'whiteboard') or a custom-dimension object like {"type": "custom", "width": 1080, "height": 1080} (pixels, 1–8000 each side). Optional title (1–255 chars) and optional asset_id (from canva_upload_asset) to seed the design with an image you just uploaded.
  • Import an external file as a Canva designcanva_import_design brings in PDF, DOCX, PPTX, XLSX, PSD, or AI files. Pass the session file path in attachments: ["in/deck.pdf"] (one file per call) plus a title. The import is asynchronous — canva_get_import_status with the returned jobId returns in_progress, success (with the new design ID), or failed.
  • Check what a design can export tocanva_get_export_formats with designId lists the formats Canva actually supports for that specific design, so an export never fails on an unsupported type.
  • Export a designcanva_export_design starts an async export. Pass design_id and format as an object — {"type": "pdf"}, {"type": "png", "size": {"width": 1080, "height": 1080}}, {"type": "jpg", "quality": 75}, {"type": "pptx"}, {"type": "gif"}, or {"type": "mp4", "quality": "horizontal_1080p"}. Poll canva_get_export_status with the exportId; on success the file is saved straight into your session in/ folder when possible (otherwise you get the signed download URL, valid ~24 hours).
  • Upload an asset to your content librarycanva_upload_asset accepts images, videos, audio, PDFs, and fonts (JPEG / PNG / GIF / WebP / SVG / MP4 / MOV / AVI / MP3 / WAV / TTF / OTF) from a session path: attachments: ["in/logo.png"] plus a name (max 50 chars). Images up to 50 MB, videos up to 100 MB. Got a public HTTPS link instead of a local file? Use canva_upload_asset_from_url with url + name and skip the local staging entirely. Async — canva_get_upload_status returns the assetId when it's ready, which you can immediately feed into canva_create_design.
  • Look up a specific design or assetcanva_get_design returns title, owner, thumbnail URL, edit URL, and page count. canva_get_asset returns name, tags, MIME type, and thumbnail.
  • Browse what you havecanva_list_designs supports text search, ownership filter (any / owned / shared), sort order (relevance / modified_descending / modified_ascending / title_descending / title_ascending), and continuation-token pagination. canva_list_folder_items enumerates a folder (use folderId: "root" for the top level), with optional item_types: ["design", "folder", "image"] filter.
  • Connect up to three Canva accounts per workspace. Personal + agency + client is a common split. Each shows its Canva display name in Integrations — pass account_identifier to target a specific secondary account when needed.

Where this shows up

  • Founder writing the board deck at midnight. "Import in/strategy-draft.pptx as a Canva presentation called 'Board April 2026', then export it back to PDF once it's ready." Alfrada starts the import job, the agent polls canva_get_import_status until success, starts the export job, polls canva_get_export_status, and hands you back a signed PDF URL or a saved session file. You didn't have to log into Canva once.
  • Brand designer running asset hygiene. "List my designs sorted by most recently modified — show me the top 20." You see thumbnails, edit links, and page counts inline in chat. Decide what to archive without opening a single tab.
  • Content marketer briefing a campaign. "Upload out/hero.png to my Canva library and create a 1080×1080 Instagram post seeded with it titled 'Spring drop teaser'." Two tool calls, one design ready to refine.
  • Producer prepping client review. "Export design DAGabc123XYZ as both a PDF and a 1080p MP4 walkthrough." Two export jobs in parallel; you get both download URLs back when they're done.
  • Agency lead with three Canva accounts. "Using the agency account, list everything in the 'Q2 Campaigns' folder." Alfrada picks the right connected account by account_identifier (display name) instead of broadcasting.

Try it

  • "Confirm which Canva account I'm signed into, then list my 10 most recently modified designs."
  • "Create a 1920×1080 Canva presentation titled 'Investor Update — May'."
  • "Import in/whitepaper.pdf as a Canva design called 'Whitepaper — editable' and tell me when it's ready."
  • "Export design DAGabc123XYZ as a 1080p MP4 and send me the download link when it's done."
  • "Upload out/logo-light.png to my Canva library and use it as the starting asset for a new 1080×1080 social post."
  • "Search my Canva designs for anything with 'pitch' in the title and show me thumbnails."
  • "List the items inside Canva folder FAFxyz789 — only the designs, not subfolders."

Heads up

  • Connecting is just a login. Integrations → connect Canva, sign in, authorise. No API keys, no developer portal.
  • If Canva asks you to reconnect, reconnect once. The production OAuth configuration was refreshed on June 02, 2026, so older grants may need a clean sign-in.
  • Imports and exports are asynchronous. Every canva_import_design, canva_export_design, and canva_upload_asset call returns a job ID — the agent polls canva_get_import_status, canva_get_export_status, or canva_get_upload_status until the job completes. Very large files can take a minute or two; the agent keeps working and surfaces the result when polling succeeds.
  • Export URLs expire after ~24 hours. Save the file or paste it where you need it that day. Re-export if the link goes stale.
  • One file per import / upload call. Batch by issuing multiple calls in parallel — Alfrada will fan them out.
  • Casing matters at the wire level. POST endpoints use snake_case (design_id, asset_id); GET endpoints use camelCase (designId, assetId, jobId, exportId, folderId). Alfrada normalizes common aliases automatically — the planner hints document both forms so the agent picks the right one.
  • Up to three Canva accounts per workspace. Pass account_identifier (the Canva display name Alfrada shows in Integrations) when you have more than one connected and want to target a specific secondary account.
  • Paid Canva features still need a paid Canva plan. Exports to MP4, brand kit access, premium templates, and Pro-only design types are gated by your own Canva subscription — Alfrada doesn't proxy those entitlements.
  • Uploads go to your library, not into a design's timeline. canva_upload_asset and the asset_id on create add a file to your content library or seed a design's starting image — Canva's API can't drop a music/audio track onto a static design. To deliver a design with sound, export the visual and combine it with audio into an MP4 via the video editor. Direct MP3 file uploads are sometimes rejected by Canva's validator (the audio/mpeg type); when that happens, use canva_upload_asset_from_url with a public link instead.

Built for the Alfrada platform.