canonical: https://jentic.com/apis/canva.dev/canva

# Canva Connect API

Jentic publishes the only available OpenAPI specification for Canva Connect API, keeping it validated and agent-ready. The Canva Connect API lets external applications build directly on Canva - creating designs, importing source files, exporting in multiple formats, autofilling brand templates with structured data, uploading and managing assets, and reading or writing comments inside designs. It supports OAuth 2.0 user-context flows so apps can act on behalf of a Canva account, plus a Basic auth path for connect-key management. Marketing automation, content factories, and embedded design tools use it to programmatically produce on-brand assets at scale.

## For AI agents

Create, autofill, export, and comment on Canva designs from an external app. Useful for content automation, brand-template factories, and asset management workflows acting on behalf of a Canva user.

## Scope

Does not handle billing, team admin, or print fulfilment - use for design creation, autofill, asset upload, comments, and export only.

## Capabilities

- Autofill a brand template with row data to generate hundreds of on-brand designs
- Export a design to PNG, PDF, MP4, or other formats and poll the export job to completion
- Upload assets via direct upload or URL ingest and reference them inside designs
- Create, retrieve, and list designs and their pages programmatically
- Post and reply to comments on a design or comment thread to coordinate review
- Import source files into Canva and convert them into editable designs

## Use cases

### Programmatic Brand Template Autofill

Marketing teams maintain a Canva brand template for ads or product cards and need to generate hundreds of variants per campaign. POST /v1/autofills accepts a brand template id and a row of field data, then returns a job that produces the rendered design. Polling /v1/autofills/{jobId} returns the design id once ready, which can then be exported to PNG or PDF.

Example prompt: POST /v1/autofills with brand_template_id and a row of field values, poll GET /v1/autofills/{jobId} until status is success, then call POST /v1/exports for the resulting design id.

### Content Pipeline Export

A content pipeline needs final assets out of Canva in a downstream-friendly format. POST /v1/exports kicks off an export with the requested format and quality settings, and GET /v1/exports/{exportId} returns the download URLs once the job finishes. The same flow handles single-page PNG exports and multi-page PDF deliverables.

Example prompt: POST /v1/exports with the design_id and format=pdf, then poll GET /v1/exports/{exportId} until the job returns a download URL.

### Asset Library Sync

Apps that manage brand assets sync logos, photography, and product imagery into Canva so designers can drop them into templates. POST /v1/asset-uploads handles direct uploads, while POST /v1/url-asset-uploads ingests by URL for assets already hosted elsewhere. Both return a jobId to poll, and the resulting asset id can be referenced inside designs.

Example prompt: POST /v1/url-asset-uploads with the asset URL and name fields, then poll GET /v1/url-asset-uploads/{jobId} until the asset is registered.

### AI Agent Design Generation

An agent that writes ad copy and selects imagery hands the final spec to Canva via Jentic to render a finished design. The agent searches for the autofill operation, loads the schema, supplies the brand template id and copy fields, and exports the result - all without storing Canva OAuth tokens itself.

Example prompt: Search Jentic for 'autofill a Canva brand template', load the createDesignAutofillJob schema, and execute POST /v1/autofills with brand_template_id and the data row.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | /v1/autofills | Start a brand template autofill job |
| POST | /v1/exports | Submit a design export job |
| POST | /v1/designs | Create a new design |
| POST | /v1/asset-uploads | Upload an asset directly |
| POST | /v1/url-asset-uploads | Upload an asset from a URL |
| GET | /v1/brand-templates | List brand templates |
| POST | /v1/designs/{designId}/comments | Comment on a design |

## Key resources

- **design** — Create, retrieve, list, and inspect pages and export formats for designs
- **autofill** — Submit and poll autofill jobs that populate brand templates with data
- **brand_template** — List brand templates and read their dataset definitions
- **asset** — Upload assets directly or by URL and reference them in designs
- **export** — Submit export jobs and retrieve download URLs once complete
- **comment** — Create and reply to comments on designs and threads
- **folder** — List and manage items inside Canva folders
- **oauth** — OAuth 2.0 authorization code flow for user-scoped access

## Why Jentic

- **Setup:** Wiring the Canva Connect API by hand means running its OAuth 2.0 authorization-code flow, refreshing tokens, and finding the right design, autofill, and export routes across 46 operations. Through Jentic you install once, import Canva Connect from the API Directory, store the credential once, and your agent calls it.
- **Permission scoping:** Canva puts the design id in the URL path (/designs/{designId}/comments), so a rule can pin your agent to one design: it can add comments to that design and nothing else. You choose the operations it may call, so asset uploads or exports are not included unless you add them.
- **Credential handling:** Your Canva OAuth access and refresh tokens are stored once, encrypted, by your own Jentic One instance, which refreshes and injects them at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'autofill a brand template' or 'export a design as PDF', and Jentic returns the matching Canva operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **CanvasFlare** — Templated image generation via API without a full design tool
- **Cantrip API** — Publish Canva-exported assets into a CMS as featured images
- **Captivated** — Send Canva-generated assets to customers through messaging

## FAQ

### Why is there no official OpenAPI spec for Canva Connect API?

Canva does not publish the Connect API as an OpenAPI specification on their developer site. Jentic generates and maintains this spec so that AI agents and developers can call Canva Connect API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Canva Connect API use?

Canva Connect uses OAuth 2.0 authorization code flow for user-scoped operations and Basic auth for connect key management. Through Jentic, the OAuth tokens are stored encrypted in the vault and refreshed automatically, so the agent never sees the raw access token.

### Can I autofill a brand template with the Canva Connect API?

Yes. POST /v1/autofills with a brand_template_id and a data row containing the field values. The endpoint returns a jobId; poll GET /v1/autofills/{jobId} until the status is success and use the returned design id.

### How do I export a design as a PDF through Jentic?

Search Jentic for 'export a Canva design', load the createDesignExportJob operation, and execute POST /v1/exports with the design_id and the desired format. Poll GET /v1/exports/{exportId} until the download URLs are returned.

### What are the rate limits for the Canva Connect API?

Canva applies per-integration rate limits that are not enumerated in the spec. Most autofill and export endpoints are job-based, so design at one job per request and back off on 429 responses. Check the Canva developer dashboard for your app's quotas.

### Can I upload an asset from a URL?

Yes. POST /v1/url-asset-uploads with the asset URL and metadata kicks off an ingest job. Poll GET /v1/url-asset-uploads/{jobId} for completion, and reference the returned asset id when creating or autofilling designs.

### Can I limit what my agent is allowed to do with the Canva Connect API?

Yes. Jentic One runs self-hosted on your own infrastructure, so your rules decide which Canva Connect operations and credentials the agent may use. Because Canva puts the design id in the URL path, such as /v1/designs/{designId}/comments, you can pin the agent to a single design and let it add comments there and nothing else. You choose the operations it may call, so asset uploads through /v1/asset-uploads or exports through /v1/exports are excluded unless you add them.
