npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@canva/n8n-nodes-canva

v0.1.4

Published

Canva API integration for n8n. Create, edit, and export designs, folders, and more.

Readme

n8n-nodes-canva

Banner

An n8n community node for connecting Canva to n8n using the Canva Connect API. Create and export designs, bulk-generate from brand templates, manage assets and folders, import external files, and connect Canva to the rest of your stack.

Installation

This section is for people who already have an n8n instance running (cloud or self-hosted). If you want to test this node on your own machine first, see Running n8n locally below.

Follow the installation guide in the n8n community nodes documentation.

Running n8n locally

This section is for developers who want to run and test this node locally.

Prerequisites: Node.js 24+, npm.

  1. Install dependencies and start n8n in dev mode:

    npm install
    npm run dev

    This builds the node, links it to a local n8n instance, and starts n8n at http://127.0.0.1:5678 with hot reload enabled. The Canva node will appear in the node picker under Community Nodes.

  2. Follow the Credentials section below to connect your Canva account.

    Note: When running locally, use http://127.0.0.1:5678/rest/oauth2-credential/callback as the redirect URI in the Canva Developer Portal. Canva does not accept localhost — you must use the IP address.

Troubleshooting

npm run dev fails with EACCES: permission denied, rename ... inside ~/.npm/_cacache

npm run dev starts n8n via npx n8n@latest, which downloads n8n through your machine's shared npm cache (~/.npm). If that cache contains files owned by another user — usually root, left behind by running npm with sudo at some point — the download fails with EACCES/EEXIST rename errors. Reclaim ownership of the cache and retry:

sudo chown -R $(id -u):$(id -g) ~/.npm
npm run dev

Credentials

This node uses OAuth2 with PKCE to authenticate with Canva.

1. Create a Canva integration

Go to the Canva Developer Portal and create a new private integration. After creation, the integration's settings page will automatically open.

  • In the Credentials section, click on Generate secret to generate a new secret.

  • Copy and paste both the Client ID and Client secret to a secure file.

  • In the Authentication tab, add the OAuth Redirect URL shown in the n8n credential dialog to the URL 1 field of the Authorized redirects:

    • n8n Cloud: https://oauth.n8n.cloud/oauth2/callback
    • Self-hosted n8n: https://your-n8n-instance.com/rest/oauth2-credential/callback
    • Local n8n: http://127.0.0.1:5678/rest/oauth2-credential/callback
  • In the Scopes tab, enable the following scopes:

| Scope | Used by | | ---------------------------------------------------------------------------------------- | ------------------------------------------------- | | asset:read / asset:write | Asset resource | | brandtemplate:content:read / brandtemplate:content:write / brandtemplate:meta:read | Brand Template resource | | comment:read / comment:write | Comment resource (Preview) | | design:content:read / design:content:write / design:meta:read | Design, Autofill, Export, Merge, Resize resources | | folder:read / folder:write | Folder resource | | profile:read | User resource |

Your integration's Scopes settings should look like this:

2. Add your integration's credentials to the Canva node in n8n

  1. In n8n, open Credentials → New → Canva OAuth2 API.
  2. Enter the Client ID and Client secret that you saved earlier.
  3. Click Connect my account and complete the OAuth flow.

Operations

Asset

| Operation | Description | | --------------------------- | ----------------------------------------------------------------- | | Delete | Delete an asset | | Get | Get metadata for an asset | | Update | Update an asset's name or tags | | Upload From URL (Preview) | Upload an asset from a public URL and wait for completion (async) |

Autofill

💎 The Autofill API can only be used on behalf of users who are members of a Canva Enterprise organization.

| Operation | Description | | --------- | ----------------------------------------------------------------------------- | | Create | Populate a brand template with data and wait for the resulting design (async) |

Brand Template

💎 The Brand Template APIs require a Canva plan with premium features (such as Canva Pro).

| Operation | Description | | ------------------- | ----------------------------------------------- | | Get | Get metadata for a brand template | | Get Dataset | Get the autofill dataset for a brand template | | Get Many | Get many brand templates accessible to the user | | Publish (Preview) | Publish a design as a brand template |

Comment (Preview API)

⚠️ All Comment operations use a Preview API that may have unannounced breaking changes and cannot be used in public integrations submitted for Canva review.

| Operation | Description | | ------------- | ------------------------------------------ | | Create Reply | Reply to a comment thread on a design | | Create Thread | Create a new comment thread on a design | | Get Reply | Get a specific reply from a comment thread | | Get Thread | Get metadata for a comment thread | | List Replies | List all replies in a comment thread |

Design

| Operation | Description | | ----------------------- | --------------------------------------------- | | Create | Create a new design | | Get | Get metadata for a design | | Get Dataset (Preview) | Get the autofill dataset for a design | | Get Export Formats | Get the available export formats for a design | | Get Many | Get many designs from the user's projects | | Get Pages (Preview) | Get metadata for pages in a design |

Design Import

| Operation | Description | | --------------- | ---------------------------------------------------------------------------------------------- | | Import From URL | Import an external file (e.g. PPTX, PDF) into Canva from a URL and wait for completion (async) |

Export

| Operation | Description | | ------------- | ---------------------------------------------------------------------- | | Export Design | Export a design to a file format and wait for the download URL (async) |

Folder

| Operation | Description | | ---------- | ----------------------------------------------------- | | Create | Create a new folder | | Delete | Delete a folder | | Get | Get metadata for a folder | | List Items | List items inside a folder | | Move Item | Move a design, asset, or folder to a different folder | | Update | Rename a folder |

Merge (Preview API)

⚠️ All Merge operations use a Preview API that may have unannounced breaking changes and cannot be used in public integrations submitted for Canva review.

| Operation | Description | | ---------------- | ----------------------------------------------------------------------------------- | | Create Merge Job | Merge design pages by applying page operations to create or modify a design (async) |

Resize

💎 The Resize API requires a Canva plan with premium features (such as Canva Pro). Users on the Canva Free plan have access to a limited trial.

| Operation | Description | | ----------------- | --------------------------------------------------------------------------------- | | Create Resize Job | Create a resized copy of a design in new dimensions or a different format (async) |

User

| Operation | Description | | ---------------- | -------------------------------------------------------------- | | Get Capabilities | Get the API capabilities available to the current user account | | Get Me | Get the User ID and Team ID of the authenticated user | | Get Profile | Get the display name of the authenticated user |

Usage notes

Async operations

Several operations — Asset Upload From URL, Autofill, Design Import, Export, Merge, and Resize — create background jobs in Canva. This node automatically polls for completion and returns the final result once the job succeeds.

You can tune polling behaviour with two optional parameters available on each async operation:

  • Poll Interval (default 2–3 s depending on the operation) — how often to check for job completion
  • Max Wait (default 60 s, or 120 s for Design Import) — maximum time to wait before throwing a timeout error

If a job fails, the node throws an error with the Canva error details.

Preview APIs

Operations marked (Preview) use endpoints that are still in preview on the Canva platform. They may change without notice and cannot be used in integrations submitted to Canva's public integration review. Use them only for internal or development workflows.

Moving items

The Folder → Move Item operation accepts any item ID (design, asset, or folder). To move an item to the top-level Projects folder, use root as the To Folder ID.

Autofill dataset format

The Autofill → Create operation requires a data object whose keys must match the dataset fields returned by Brand Template → Get Dataset. Use the Get Dataset operation first to discover the correct field names.

Resources