# Canva — how to use (mcp.ai)

Canva offers a drag-and-drop design suite for creating social media graphics, presentations, and marketing materials with prebuilt templates and a vast element library

## Option A — via MCP (recommended)
Remote MCP endpoint (HTTP, streamable): `https://api.mcp.ai/p_canva?ms=1781541900000`
Add it as a custom/remote MCP connector in your client (Claude, Cursor, VS Code…), then authenticate when prompted. Once connected, ask the agent to use the server's tools (e.g. `canva_access_user_specific_brand_templates_list`).

## Option B — via direct REST API
Base URL: `https://api.mcp.ai/api/canva`
Auth: `Authorization: Bearer sk_live_…` — create a workspace API key at https://mcp.ai/settings/api-keys
Discover endpoints: `GET https://api.mcp.ai/api/canva/_endpoints`

### Endpoints
- `POST https://api.mcp.ai/api/canva/access/user/specific/brand/templates/list` — This year, brand template ids will change; integrations storing them must update within 6 months. also, api use requires canva enterprise membership.
  - body: { query?: string, dataset?: string, sort_by?: string, ownership?: string, continuation?: string }
- `POST https://api.mcp.ai/api/canva/create/canva/design/with/optional/asset` — Create a new canva design using a preset or custom dimensions, and add an asset with `asset id` from a user's project using relevant apis.
  - body: { title?: string, asset_id?: string }
- `POST https://api.mcp.ai/api/canva/create/comment/reply/in/design` — This preview api allows replying to comments within a design on canva, with a limit of 100 replies per comment. users should note potential unannounced changes, and that preview apis are not eligible 
  - body: { message: string, commentId: string }
- `POST https://api.mcp.ai/api/canva/create/design/comment/in/preview/api` — This api is in preview and may change without notice; integrations using it won't pass review. it allows creating comments on a design, with a limit of 1000 comments per design.
  - body: { message: string, assignee_id?: string }
- `POST https://api.mcp.ai/api/canva/create/user/or/sub/folder` — This api creates a folder in a canva user's projects at the top level or within another folder, returning the new folder's id and additional details upon success.
  - body: { name: string, parent_folder_id: string }
- `POST https://api.mcp.ai/api/canva/delete/asset/by/id` — You can delete an asset by specifying its `assetid`. this operation mirrors the behavior in the canva ui. deleting an item moves it to the trash. deleting an asset doesn't remove it from designs that 
  - body: { assetId: string }
- `POST https://api.mcp.ai/api/canva/exchange/oauth20/access/or/refresh/token` — The oauth 2.0 endpoint issues time-limited (4-hour) access tokens of up to 4kb for user authorization via codes or refresh tokens. it requires client id/secret for authentication.
- `POST https://api.mcp.ai/api/canva/fetch/asset/upload/job/status` — Summarize asset upload outcome by repeatedly calling the endpoint until a 'success' or 'failed' status is received after using the create asset upload job api.
  - body: { jobId: string }
- `POST https://api.mcp.ai/api/canva/fetch/canva/connect/signing/public/keys` — The api for verifying canva webhooks, 'connect/keys,' is in preview, meaning unstable, not for public integrations, and provides a rotating jwk for signature verification to prevent replay attacks. ca
- `POST https://api.mcp.ai/api/canva/fetch/current/user/details` — Returns the user id, team id, and display name of the user account associated with the provided access token.
- `POST https://api.mcp.ai/api/canva/fetch/design/metadata/and/access/information` — Gets the metadata for a design. this includes owner information, urls for editing and viewing, and thumbnail information.
  - body: { designId: string }
- `POST https://api.mcp.ai/api/canva/get/design/export/job/result` — Get the outcome of a canva design export job; if done, receive download links for the design’s pages. for details, visit the create design export job api documentation.
  - body: { exportId: string }
- `POST https://api.mcp.ai/api/canva/initiate/canva/design/autofill/job` — Upcoming brand template id updates require migration within 6 months. canva enterprise users can auto-fill designs using various data types, including experimental chart data. monitor jobs with specif
  - body: { data: object, title?: string, brand_template_id: string }
- `POST https://api.mcp.ai/api/canva/initiates/canva/design/export/job` — Canva's new job feature exports designs in multiple formats using a design id, with provided download links. the export status can be tracked via an api. exports with 'pro' quality may fail if the des
  - body: { design_id: string }
- `POST https://api.mcp.ai/api/canva/list/design/pages/with/pagination` — Preview api for canva: subject to unannounced changes and not for public integrations. lists metadata for design pages with optional `offset` and `limit`; not applicable to all design types.
  - body: { limit?: integer, offset?: integer, designId: string }
- `POST https://api.mcp.ai/api/canva/list/folder/items/by/type/with/sorting` — Lists the items in a folder, including each item's `type`. folders can contain: - other folders. - designs, such as instagram posts, presentations, and documents ([canva docs](https://www.canva.com/cr
  - body: { sort_by?: string, folderId: string, item_types?: string[], continuation?: string }
- `POST https://api.mcp.ai/api/canva/list/user/designs` — Provides a summary of canva user designs, includes search filtering, and allows showing both self-created and shared designs with sorting options.
  - body: { query?: string, sort_by?: string, ownership?: string, continuation?: string }
- `POST https://api.mcp.ai/api/canva/move/item/to/specified/folder` — Transfers an item to a different folder by specifying both the destination folder's id and the item's id. if the item is in various folders, an error occurs; manual relocation via canva ui is required
  - body: { item_id: string, to_folder_id: string }
- `POST https://api.mcp.ai/api/canva/remove/folder/and/move/contents/to/trash` — Deletes a folder by moving the user's content to trash and reassigning other users' content to their top-level projects.
  - body: { folderId: string }
- `POST https://api.mcp.ai/api/canva/retrieve/a/specific/design/comment` — This preview api is subject to unannounced changes and can't be used in public integrations. it retrieves a comment, details of which are on canva help center.
  - body: { designId: string, commentId: string }
- `POST https://api.mcp.ai/api/canva/retrieve/app/public/key/set` — Returns the json web key set (public keys) of an app. these keys are used to verify jwts sent to app backends.
  - body: { appId: string }
- `POST https://api.mcp.ai/api/canva/retrieve/asset/metadata/by/id` — You can retrieve the metadata of an asset by specifying its `assetid`.
  - body: { assetId: string }
- `POST https://api.mcp.ai/api/canva/retrieve/brand/template/dataset/definition` — Canva's brand template ids will change later this year, including a 6-month integration migration. api access requires enterprise membership, providing autofill for images, text, and charts, although 
  - body: { brandTemplateId: string }
- `POST https://api.mcp.ai/api/canva/retrieve/canva/enterprise/brand/template/metadata` — Upcoming update will change brand template ids; integrations must migrate within 6 months. api use requires canva enterprise membership.
  - body: { brandTemplateId: string }
- `POST https://api.mcp.ai/api/canva/retrieve/design/autofill/job/status` — Api users with canva enterprise membership can retrieve design autofill job results, potentially requiring multiple requests until a `success` or `failed` status is received.
  - body: { jobId: string }
- `POST https://api.mcp.ai/api/canva/retrieve/design/import/job/status` — Gets the status and results of design import jobs created using the [create design import job api](https://www.canva.dev/docs/connect/api-reference/design-imports/create-design-import-job/).
  - body: { jobId: string }
- `POST https://api.mcp.ai/api/canva/retrieve/folder/details/by/id` — Gets the name and other details of a folder using a folder's `folderid`.
  - body: { folderId: string }
- `POST https://api.mcp.ai/api/canva/retrieve/user/profile/data` — Currently, this returns the display name of the user account associated with the provided access token. more user information is expected to be included in the future.
- `POST https://api.mcp.ai/api/canva/revoke/oauth/tokens` — Revoke a refresh token to end its lineage and user consent, requiring re-authentication. authenticate using either basic access with base64-encoded credentials or body parameters with client id and se
  - body: { token: string, client_id?: string, client_secret?: string }
- `POST https://api.mcp.ai/api/canva/update/asset/s/name/and/tags/by/id` — You can update the name and tags of an asset by specifying its `assetid`. updating the tags replaces all existing tags of the asset.
  - body: { name?: string, tags?: string[], assetId: string }
- `POST https://api.mcp.ai/api/canva/update/folder/details/by/id` — Updates a folder's details using its `folderid`. currently, you can only update a folder's name.
  - body: { name: string, folderId: string }
- `POST https://api.mcp.ai/api/canva/validate/oauth/token/properties` — Check an access token's validity and properties via introspection, requiring authentication. use basic access (base64 encoded `client id:client secret`) or body parameters for credentialing.
  - body: { token: string, client_id?: string, client_secret?: string }

## More
- Page: https://mcp.ai/canva
- Agent spec (llms.txt): https://mcp.ai/canva/llms.txt
- Postman collection: https://mcp.ai/canva/postman.json
