---
name: sales-canva
description: "Canva platform help — the design and branding tool solopreneurs, makers, and GTM teams use for brand kits, social/marketing creative, and the Connect API for design automation. Covers the Brand Kit / Brand Hub, Magic Studio AI, Content Planner social scheduling, print, and the OAuth Connect API (autofill, brand templates, asset upload, design export, comments, webhooks) plus the Canva Dev MCP server. Use when automating branded designs with the Connect API, bulk-generating designs from a brand template via autofill, exporting designs to PNG/PDF programmatically, wiring Canva assets into a pipeline, setting up OAuth or the MCP server, scheduling social posts in Content Planner, working out which Brand Kit or autofill features are plan-gated (autofill and the brand-template API need Enterprise), or comparing Canva with alternatives like Adobe Express or Visme. Do NOT use for validating an idea before branding it (use /sales-idea-validation) or generating a name or logo (use /sales-namelix or /sales-brandmark)."
argument-hint: "[describe what you need help with in Canva]"
license: MIT
version: 1.0.0
tags: [sales, social-media-pr, platform]
github: "https://github.com/canva-sdks"
---

# Canva Platform Help

Canva is a broad visual-design platform. This skill focuses on the **GTM/marketing surface** — Brand Kit, Content Planner, and (for developers) the **Connect API** for automating and bulk-generating on-brand designs. It is not a design tutorial and not an idea-validation or naming tool.

## Step 1 — Gather context

If `references/learnings.md` exists, read it first for accumulated platform knowledge.

Ask only what you can't infer from the user's prompt:

1. **What are you trying to do?** (a) Automate/integrate via the Connect API · (b) Bulk-generate designs from a template · (c) Set up Brand Kit / keep designs on-brand · (d) Schedule social posts (Content Planner) · (e) Pick a plan / compare Canva vs alternatives · (f) Troubleshoot something.
2. **Are you on Free, Pro, Teams/Business, or Enterprise?** (This decides whether the automation you want is even available — Autofill and the Brand-Template API are **Enterprise-gated**.)
3. **If integrating:** are you doing it server-side? (OAuth token exchange can't run in a browser.)

Skip-ahead: if the prompt already contains enough context (e.g. "how do I export a design to PDF via the API"), go straight to Step 3.

## Step 2 — Route or answer directly

Canva touches several problem domains other skills own. Route when the question is really about the domain, not Canva-specific config:

- **Choosing/using a social scheduler, content calendar strategy, or comparing Canva Content Planner vs Buffer/Later/Hootsuite** → `/sales-social-media-management`
- **Validating whether the idea is worth building before you design a brand for it** → `/sales-idea-validation`
- **Generating a business/product name from scratch** → `/sales-namelix`
- **Generating a logo / brand-identity kit from scratch** → `/sales-brandmark`
- **Building the actual landing page / funnel** (Canva Websites is thin for this) → `/sales-funnel`

When routing, give the exact command: "This is a {domain} question — run: `/sales-{skill} {user's original question}`".

## Step 3 — Canva platform reference

**Read `references/platform-guide.md`** for the full reference — capabilities + automation surface, pricing/plan gates, data model, quick-start recipes (export, autofill, asset upload), and integration patterns. For raw API detail (OAuth/PKCE flow, scopes, endpoints, autofill/export JSON, MCP config) read `references/canva-api-reference.md`.

Answer using only the relevant section — don't dump the whole guide.

## Step 4 — Actionable guidance

- **Lead with the plan gate.** Before proposing any autofill/brand-template automation, state that **Autofill and the Brand-Template API require Canva Enterprise** (or a granted dev-access request in the Developer Portal; non-enterprise trials get only a limited number of autofill runs). Don't design a workflow around it without flagging this first.
- **Present all pricing and plan names as best-effort** and point to canva.com/pricing — note Teams/Business is per-seat with a recently increased minimum.
- **For any Connect API answer, keep the token exchange server-side** and note it's **OAuth 2.0 auth-code + PKCE (S256)**; call out that **refresh tokens are single-use** so the new one must be persisted on every refresh.
- **For autofill, walk the full workflow:** first **query the brand template's dataset** (`GET /brand-templates/{id}/dataset`) to learn its fields, then **create one autofill job per row** and **poll each job** until it completes. For both autofill and export, describe the **async job + poll pattern** with **exponential backoff**, not a single synchronous call.
- **Separate the two "bulk" features:** Data **Autofill** = API (Enterprise); **Bulk Create** = editor UI + CSV. Don't conflate them.
- **Content Planner is UI-only** — if the user wants to *schedule posts programmatically*, tell them there's no Connect API for it and route social-scheduling strategy to `/sales-social-media-management`.
- **When comparing Canva to alternatives**, name concrete ones (Adobe Express, Visme, VistaCreate, Figma) and tie the choice to the user's need, not features in the abstract.

If you discover a gotcha or tip not in `references/learnings.md`, append it there with today's date.

## Gotchas

*Best-effort from research (2026-07) — review these, especially plan-gated features and integration details that may be outdated.*

- **Autofill + Brand-Template APIs are Enterprise-gated.** The integration must act for a **Canva Enterprise** member. Without Enterprise you can request dev access in the Developer Portal, but trial autofill runs are capped. This is the #1 reason a "bulk-generate from a spreadsheet" plan stalls.
- **Refresh tokens are single-use.** Each refresh returns a *new* access token *and* a *new* refresh token — persist the new refresh token or the integration locks out.
- **OAuth token exchange can't run in a browser** (CORS) — the `client_id:client_secret` Basic-auth call must be server-side.
- **Brand-template IDs migrated (Sept 2025)** to a new format; old IDs accepted for a ~6-month grace period — migrate stored IDs.
- **Content Planner has no API** — social scheduling is UI-only and Pro+.
- **Export/autofill are async** — poll the job (`in_progress` → `success`/`failed`) with exponential backoff; **export download URLs are time-limited**.
- **Canva is not a validator or a name/logo generator** — it's where you make creative *after* the idea, name, and logo exist.

## Related skills

- `/sales-social-media-management` — Social scheduling strategy + tool comparison; where Canva's Content Planner fits vs Buffer/Later/Hootsuite
- `/sales-namelix` — Generate the business/product name (before you design a brand for it in Canva)
- `/sales-brandmark` — Generate a logo / brand-identity kit from scratch
- `/sales-manypixels` — The **"hire it out"** counterpart: a flat-monthly unlimited-request human design service (design-as-a-service) for when you'd rather brief a designer than make the creative yourself in Canva
- `/sales-idea-validation` — Validate demand before you spend time on brand creative
- `/sales-funnel` — Build the real landing page / smoke test (Canva Websites is thin for this)
- `/sales-do` — Not sure which skill to use? The router matches any sales objective to the right skill. Install: `npx skills add sales-skills/sales --skill sales-do -a claude-code`

## Examples

### Example 1 — "I want to auto-generate 200 on-brand social graphics from a Google Sheet"
Explain the **Data Autofill** workflow (query the brand template dataset → create an autofill job per row → poll → export each design), but **lead with the Enterprise gate**: Autofill + Brand-Template APIs need a Canva Enterprise member (or a dev-access grant), and image fields need an uploaded `asset_id`. Distinguish this from the UI **Bulk Create** (CSV) feature, which works on Pro without the API.

### Example 2 — "How do I export a Canva design to PDF from my backend?"
Walk through the **Create design export job** (async): `POST /v1/exports` with `design_id` + `format`, poll `GET /v1/exports/{jobId}` with exponential backoff, then fetch the **time-limited** download URL. Note it needs `design:content:read` and a server-side Bearer token.

### Example 3 — "Should I use Canva or something else for our team's marketing creative?"
Ask team size and needs. Contrast Canva (breadth, templates, Brand Kit, Content Planner — but **per-seat pricing recently increased**) with alternatives (Adobe Express for Adobe-ecosystem/Firefly, Visme for data-viz/infographics, VistaCreate for a generous free tier, Figma for real vector/design-system work). Present prices as best-effort → canva.com/pricing.

## Troubleshooting

### "The Autofill API returns an error / says I need Enterprise"
Autofill and the Brand-Template API require the acting user to be a **Canva Enterprise** member. Options: upgrade to Enterprise, or **request access** for a genuine dev use case when configuring the integration in the Developer Portal (trial autofill runs are limited). If you only need one-off bulk output, use the **UI Bulk Create** (CSV) feature on Pro instead.

### "My integration stopped working / refresh returns invalid_grant"
Refresh tokens are **single-use**. If you reused an old refresh token (or didn't persist the new one from the last refresh response), it's now invalid — re-run the OAuth authorize flow to get a fresh token pair, and fix storage to overwrite the refresh token on every refresh. Also confirm the token exchange runs **server-side** (browser calls are CORS-blocked).

### "My stored brand-template IDs suddenly 404 / autofill can't find the template"
Brand templates migrated to a **new ID format in September 2025**; the old IDs are honored only for a ~6-month grace window. Re-list brand templates to fetch current IDs and update anything you persisted. Also confirm the token carries `brandtemplate:meta:read` / `brandtemplate:content:read`.
