Connect API lists uploads as folder items: paginates GET /folders/{folderId}/items for the uploads folder (folder_id default uploads) with item_types image. There is no GET /assets list in the OpenAPI spec.
Generate MCP URLOverview: Connect API lists uploads as folder items: paginates GET /folders/{folderId}/items for the uploads folder (folder_id default uploads) with item_types image. There is no GET /assets list in the OpenAPI spec through Canva.
Benefits:
Common Use Cases:
1. Automated Content Creation & Branding
AI agents generate on-brand social media graphics, presentations, and marketing materials in Canva based on templates and brand guidelines.
2. Multi-Channel Asset Generation
Automatically resize and adapt Canva designs for different platforms � social media, email headers, ads, and print � from a single source design.
3. Design Approval Workflow
AI agents route Canva designs through approval chains, collect stakeholder feedback, and track revision status to streamline the review process.
4. Template Management & Distribution
AI agents organize and distribute Canva templates across teams, ensuring everyone has access to the latest approved designs and brand assets.
5. Campaign Visual Reporting
AI agents pull campaign performance data and auto-generate visual reports and infographics in Canva for executive presentations and team updates.
Returns the Json Web Key Set (public keys) of an app. These keys are used to verify JWTs sent to app backends.
Gets the result of a URL import job created using the [Create URL import job API](https://www.canva.dev/docs/connect/api-reference/design-imports/create-url-import-job/). You might need to make multiple requests to this endpoint until you get a `success` or `failed` status. For more information on the workflow for using asynchronous jobs, see [API requests and responses](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints).
Lists all brand templates with automatic continuation pagination. Use before create_design_from_template or autofill_brand_template_and_wait.
Lists the API capabilities for the user account associated with the provided access token. For more information, see [Capabilities](https://www.canva.dev/docs/connect/capabilities/).
PATCH /designs/{designId}/comments/{commentId} marking resolved. comment_id is the thread or comment ID. Preview APIs may change; verify against current Canva docs if this fails.
Starts a new [asynchronous job](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints) to upload an asset to the user's content library. Supported file types for assets are listed in the [Assets API overview](https://www.canva.dev/docs/connect/api-reference/assets/). The request format for this endpoint is an `application/octet-stream` body of bytes. Attach information about the upload using an `Asset-Upload-Metadata` header. <Note> For more information on the workflow for using asynchronous jobs, see [API requests and responses](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints). You can check the status and get the results of asset upload jobs created with this API using the [Get asset upload job API](https://www.canva.dev/docs/connect/api-reference/assets/get-asset-upload-job/). </Note>.
<Warning> This API is currently provided as a preview. Be aware of the following: - There might be unannounced breaking changes. - Any breaking changes to preview APIs won't produce a new [API version](https://www.canva.dev/docs/connect/versions/). - Public integrations that use preview APIs will not pass the review process, and can't be made available to all Canva users. </Warning> Get the result of an asset upload job that was created using the [Create asset upload job via URL API](https://www.canva.dev/docs/connect/api-reference/assets/create-url-asset-upload-job/). You might need to make multiple requests to this endpoint until you get a `success` or `failed` status. For more information on the workflow for using asynchronous jobs, see [API requests and responses](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints).
Fetches the current UserInfo claims for the authorized user. This is the same fields returned by a id_token returns during authorization.
Returns design metadata from GET /designs/{designId} and all pages from GET /designs/{designId}/pages (paginated via offset/limit).
Updates a folder's details using its `folderID`. Currently, you can only update a folder's name.
POST /autofills then polls GET /autofills/{jobId} until success or failure. data maps field names to dataset values (text/image/chart objects).
<Warning> This API is currently provided as a preview. Be aware of the following: - There might be unannounced breaking changes. - Any breaking changes to preview APIs won't produce a new [API version](https://www.canva.dev/docs/connect/versions/). - Public integrations that use preview APIs will not pass the review process, and can't be made available to all Canva users. </Warning> Creates a new comment thread on a design. For information on comments and how they're used in the Canva UI, see the [Canva Help Center](https://www.canva.com/help/comments/).
Starts a new [asynchronous job](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints) to import an external file from a URL as a new design in Canva. Supported file types for imports are listed in [Design imports overview](https://www.canva.dev/docs/connect/api-reference/design-imports/#supported-file-types). <Note> For more information on the workflow for using asynchronous jobs, see [API requests and responses](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints). You can check the status and get the results of design import jobs created with this API using the [Get URL import job API](https://www.canva.dev/docs/connect/api-reference/design-imports/get-url-import-job/). </Note>.
Get the result of an asset upload job that was created using the [Create asset upload job API](https://www.canva.dev/docs/connect/api-reference/assets/create-asset-upload-job/). You might need to make multiple requests to this endpoint until you get a `success` or `failed` status. For more information on the workflow for using asynchronous jobs, see [API requests and responses](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints).
<Warning> This API is currently provided as a preview. Be aware of the following: - There might be unannounced breaking changes. - Any breaking changes to preview APIs won't produce a new [API version](https://www.canva.dev/docs/connect/versions/). - Public integrations that use preview APIs will not pass the review process, and can't be made available to all Canva users. </Warning> Starts a new [asynchronous job](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints) to upload an asset from a URL to the user's content library. Supported file types for assets are listed in the [Assets API overview](https://www.canva.dev/docs/connect/api-reference/assets/). <Note> Uploading a video asset from a URL is limited to a maximum 100MB file size. For importing larger video files, use the [Create asset upload job API](https://www.canva.dev/docs/connect/api-reference/assets/create-asset-upload-job/). </Note> <Note> For more information on the workflow for using asynchronous jobs, see [API requests and responses](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints). You can check the status and get the results of asset upload jobs created with this API using the [Get asset upload job via URL API](https://www.canva.dev/docs/connect/api-reference/assets/get-url-asset-upload-job/). </Note>.
Gets the result of a design import job created using the [Create design import job API](https://www.canva.dev/docs/connect/api-reference/design-imports/create-design-import-job/). You might need to make multiple requests to this endpoint until you get a `success` or `failed` status. For more information on the workflow for using asynchronous jobs, see [API requests and responses](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints).
Gets the metadata for a design. This includes owner information, URLs for editing and viewing, and thumbnail information.
Gets the JSON Web Key Set (public keys) for OIDC. These keys are used to verify JWTs in OpenID Connect flows.
Lists all designs in the user's Canva account using continuation tokens until exhausted. Optional query, ownership filter, page size.
AVAILABILITY: To use this API, your integration must act on behalf of a user that's on a Canva plan with premium features (such as Canva Pro). Gets the result of a design resize job that was created using the [Create design resize job API](https://www.canva.dev/docs/connect/api-reference/resizes/create-design-resize-job/). If the job is successful, the response includes a summary of the new resized design, including its metadata. You might need to make multiple requests to this endpoint until you get a `success` or `failed` status. For more information on the workflow for using asynchronous jobs, see [API requests and responses](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints).
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/create/documents/)). - Image assets. Currently, video assets are not returned in the response.
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.
You can update the name and tags of an asset by specifying its `assetId`. Updating the tags replaces all existing tags of the asset.
You can retrieve the metadata of an asset by specifying its `assetId`.
Starts a new [asynchronous job](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints) to export a file from Canva. Once the exported file is generated, you can download it using the URL(s) provided. The download URLs are only valid for 24 hours. The request requires the design ID and the exported file format type. Supported file formats (and export file type values): PDF (`pdf`), JPG (`jpg`), PNG (`png`), GIF (`gif`), Microsoft PowerPoint (`pptx`), and MP4 (`mp4`). <Note> This endpoint has the following additional rate limits: - **Integration throttle:** Each integration can export a maximum of 750 times per 5-minute window, and 5,000 times per 24-hour window. - **Document throttle:** Each document can be exported a maximum of 75 times per 5-minute window. - **User throttle:** Each user can export a maximum of 75 times per 5-minute window, and 500 times per 24-hour window. </Note> <Note> For more information on the workflow for using asynchronous jobs, see [API requests and responses](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints). You can check the status and get the results of export jobs created with this API using the [Get design export job API](https://www.canva.dev/docs/connect/api-reference/exports/get-design-export-job/). </Note>.
Uploads an asset from a URL via POST /url-asset-uploads, then polls until the job completes. Use before create_design_from_template for custom images.
Creates a new Canva design from a brand template. Sends POST /designs with brand_template_id (Canva may require this field alongside title and optional asset_id). If the API rejects the body, use autofill_brand_template_and_wait with template data instead. Requires brand_template_id from list_brand_templates.
Creates a new Canva design. To create a new design, you can either: - Use a preset design type. - Set height and width dimensions for a custom design. Additionally, you can also provide the `asset_id` of an asset in the user's [projects](https://www.canva.com/help/find-designs-and-folders/) to add to the new design. Currently, this only supports image assets. To list the assets in a folder in the user's projects, use the [List folder items API](https://www.canva.dev/docs/connect/api-reference/folders/list-folder-items/). NOTE: Blank designs created with this API are automatically deleted if they're not edited within 7 days. These blank designs bypass the user's Canva trash and are permanently deleted.
Exports a Canva design to PDF, PNG, JPG, GIF, PPTX, or MP4 and polls GET /exports/{exportId} until the job completes, returning download URLs. Use instead of create_design_export_job when you need the file URL without manual polling.
Lists metadata for all the designs in a Canva user's [projects](https://www.canva.com/help/find-designs-and-folders/). You can also: - Use search terms to filter the listed designs. - Show designs either created by, or shared with the user. - Sort the results.
AVAILABILITY: To use this API, your integration must act on behalf of a user that's a member of a [Canva Enterprise](https://www.canva.com/enterprise/) organization. Get the result of a design autofill job that was created using the [Create design autofill job API](https://www.canva.dev/docs/connect/api-reference/autofills/create-design-autofill-job/). You might need to make multiple requests to this endpoint until you get a `success` or `failed` status. For more information on the workflow for using asynchronous jobs, see [API requests and responses](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints).
WARNING: Brand templates were migrated to use a new ID format in September 2025. If your integration stores brand template IDs, you'll need to migrate to use the new IDs. Old brand template IDs will continue to be accepted for 6 months to give you time to migrate to the new IDs. AVAILABILITY: To use this API, your integration must act on behalf of a user that's a member of a [Canva Enterprise](https://www.canva.com/enterprise/) organization. Retrieves the metadata for a brand template.
<Warning> This API is currently provided as a preview. Be aware of the following: - There might be unannounced breaking changes. - Any breaking changes to preview APIs won't produce a new [API version](https://www.canva.dev/docs/connect/versions/). - Public integrations that use preview APIs will not pass the review process, and can't be made available to all Canva users. </Warning> Retrieves a list of replies for a comment or suggestion thread on a design. For information on comments and how they're used in the Canva UI, see the [Canva Help Center](https://www.canva.com/help/comments/).
<Warning> This API is currently provided as a preview. Be aware of the following: - There might be unannounced breaking changes. - Any breaking changes to preview APIs won't produce a new [API version](https://www.canva.dev/docs/connect/versions/). - Public integrations that use preview APIs will not pass the review process, and can't be made available to all Canva users. </Warning> Creates a reply to a comment or suggestion thread on a design. To reply to an existing thread, you must provide the ID of the thread which is returned when a thread is created, or from the `thread_id` value of an existing reply in the thread. Each thread can have a maximum of 100 replies created for it. For information on comments and how they're used in the Canva UI, see the [Canva Help Center](https://www.canva.com/help/comments/).
Deletes a folder with the specified `folderID`. Deleting a folder moves the user's content in the folder to the [Trash](https://www.canva.com/help/deleted-designs/) and content owned by other users is moved to the top level of the owner's [projects](https://www.canva.com/help/find-designs-and-folders/).
Moves a design or asset using POST /folders/move (to_folder_id + item_id). item_type is accepted for documentation; API uses item_id only.
Gets the result of a design export job that was created using the [Create design export job API](https://www.canva.dev/docs/connect/api-reference/exports/create-design-export-job/). If the job is successful, the response includes an array of download URLs. Depending on the design type and export format, there is a download URL for each page in the design. The download URLs are only valid for 24 hours. You might need to make multiple requests to this endpoint until you get a `success` or `failed` status. For more information on the workflow for using asynchronous jobs, see [API requests and responses](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints).
<Warning> This API is currently provided as a preview. Be aware of the following: - There might be unannounced breaking changes. - Any breaking changes to preview APIs won't produce a new [API version](https://www.canva.dev/docs/connect/versions/). - Public integrations that use preview APIs will not pass the review process, and can't be made available to all Canva users. </Warning> Lists metadata for pages in a design, such as page-specific thumbnails. For the specified design, you can provide `offset` and `limit` values to specify the range of pages to return. NOTE: Some design types don't have pages (for example, Canva docs).
Creates a folder via POST /folders. Use parent_folder_id or parent_folder_id root/uploads; omit for top-level by passing parent_folder_id root.
GET /users/me — authenticated user's profile (user id, team, display context).
Lists all items in a folder via GET /folders/{folderId}/items with continuation. item_type filters map to item_types when set.
Starts a new [asynchronous job](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints) to import an external file as a new design in Canva. The request format for this endpoint has an `application/octet-stream` body of bytes, and the information about the import is provided using an `Import-Metadata` header. Supported file types for imports are listed in [Design imports overview](https://www.canva.dev/docs/connect/api-reference/design-imports/#supported-file-types). <Note> For more information on the workflow for using asynchronous jobs, see [API requests and responses](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints). You can check the status and get the results of design import jobs created with this API using the [Get design import job API](https://www.canva.dev/docs/connect/api-reference/design-imports/get-design-import-job/). </Note>.
<Warning> This API is currently provided as a preview. Be aware of the following: - There might be unannounced breaking changes. - Any breaking changes to preview APIs won't produce a new [API version](https://www.canva.dev/docs/connect/versions/). - Public integrations that use preview APIs will not pass the review process, and can't be made available to all Canva users. </Warning> Gets a comment or suggestion thread on a design. To retrieve a reply to a comment thread, use the [Get reply](https://www.canva.dev/docs/connect/api-reference/comments/get-reply/) API. For information on comments and how they're used in the Canva UI, see the [Canva Help Center](https://www.canva.com/help/comments/).
<Warning> This API is currently provided as a preview. Be aware of the following: - There might be unannounced breaking changes. - Any breaking changes to preview APIs won't produce a new [API version](https://www.canva.dev/docs/connect/versions/). - Public integrations that use preview APIs will not pass the review process, and can't be made available to all Canva users. </Warning> Gets a reply to a comment or suggestion thread on a design. For information on comments and how they're used in the Canva UI, see the [Canva Help Center](https://www.canva.com/help/comments/).
Returns GET /brand-templates/{brandTemplateId}/dataset — autofill field definitions for a template.
Gets the name and other details of a folder using a folder's `folderID`.
Creates a copy of a design by posting to POST /designs with source_design_id and title. If the API shape differs, use create_design_resize_job or the Canva UI to duplicate.
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 already use it.
WARNING: Brand templates were migrated to use a new ID format in September 2025. If your integration stores brand template IDs, you'll need to migrate to use the new IDs. Old brand template IDs will continue to be accepted for 6 months to give you time to migrate to the new IDs. AVAILABILITY: To use this API, your integration must act on behalf of a user that's a member of a [Canva Enterprise](https://www.canva.com/enterprise/) organization. Starts a new [asynchronous job](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints) to autofill a Canva design using a brand template and input data. To get a list of input data fields, use the [Get brand template dataset API](https://www.canva.dev/docs/connect/api-reference/brand-templates/get-brand-template-dataset/). Available data field types to autofill include: - Images - Text - Charts WARNING: Chart data fields are a [preview feature](https://www.canva.dev/docs/connect/#preview-apis). There might be unannounced breaking changes to this feature which won't produce a new API version. NOTE: For more information on the workflow for using asynchronous jobs, see [API requests and responses](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints). You can check the status and get the results of autofill jobs created with this API using the [Get design autofill job API](https://www.canva.dev/docs/connect/api-reference/autofills/get-design-autofill-job/).
Attempts GET /designs/{designId}/comments with continuation pagination. Note: the shipped OpenAPI spec may only define POST for this path; if the API returns 404, list threads via webhooks or known thread IDs and get_thread.
AVAILABILITY: To use this API, your integration must act on behalf of a user that's on a Canva plan with premium features (such as Canva Pro). Starts a new [asynchronous job](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints) to create a resized copy of a design. The new resized design is added to the top level of the user's [projects](https://www.canva.com/help/find-designs-and-folders/) (`root` folder). To resize a design into a new design, you can either: - Use a preset design type. - Set height and width dimensions for a custom design. Note the following behaviors and restrictions when resizing designs: - Designs can be resized to a maximum area of 25,000,000 pixels squared. - Resizing designs using the Connect API always creates a new design. In-place resizing is currently not available in the Connect API, but can be done in the Canva UI. - Resizing a multi-page design results in all pages of the design being resized. Resizing a section of a design is only available in the Canva UI. - [Canva docs](https://www.canva.com/create/documents/) can't be resized, and other design types can't be resized to a Canva doc. - Canva Code designs can't be resized, and other design types can't be resized to a Canva Code design. <Note> For more information on the workflow for using asynchronous jobs, see [API requests and responses](https://www.canva.dev/docs/connect/api-requests-responses/#asynchronous-job-endpoints). You can check the status and get the results of resize jobs created with this API using the [Get design resize job API](https://www.canva.dev/docs/connect/api-reference/resizes/get-design-resize-job/). </Note>.
Creates a folder in one of the following locations: - The top level of a Canva user's [projects](https://www.canva.com/help/find-designs-and-folders/) (using the ID `root`), - The user's Uploads folder (using the ID `uploads`), - Another folder (using the parent folder's ID). When a folder is successfully created, the endpoint returns its folder ID, along with other information.
Moves an item to another folder. You must specify the folder ID of the destination folder, as well as the ID of the item you want to move. NOTE: In some situations, a single item can exist in multiple folders. If you attempt to move an item that exists in multiple folders, the API returns an `item_in_multiple_folders` error. In this case, you must use the Canva UI to move the item to another folder.
Lists the available file formats for [exporting a design](https://www.canva.dev/docs/connect/api-reference/exports/create-design-export-job/). <Note> The available export formats depend on the design type and the types of pages in the design. In general, the available export formats returned are only those that are supported by every page type in the design. </Note>.
Do I need my own developer credentials to use Canva MCP with Adopt AI?
No, you can get started immediately using Adopt AI's built-in Canva integration. For production use, we recommend configuring your own API credentials for greater control and security.
Can I connect Canva with other apps through Adopt AI?
Yes! Adopt AI supports multi-app workflows, so your AI agents can seamlessly move data between Canva and CRMs, spreadsheets, messaging platforms, and more.
Is Adopt AI secure?
Absolutely. Adopt AI is SOC 2 Type 2 certified and ISO/IEC 27001 compliant, and adheres to EU GDPR, CCPA, and HIPAA standards. All data is encrypted in transit and at rest, ensuring the confidentiality, integrity, and availability of your data. Learn more here.
What happens if the Canva API changes?
Adopt AI maintains and updates all integrations automatically, so your agents always work with the latest API versions, no manual maintenance required.
Do I need coding skills to set up the Canva integration?
Not at all. Adopt AI's zero-shot API discovery means your agents understand Canva's schema on first contact. Setup takes minutes with no code required.
How do I set up custom Canva MCP in Adopt AI?
For a step-by-step guide on creating and configuring your own Canva API credentials with Adopt AI, see here.