# Canva REST APIs + MCP vs Layerre

> Canva REST scores 67.3 (B) to Layerre's 57.6 (C) for design templates. Prices, MCP, x402, uptime and agent notes side by side.

- Canonical: https://www.anchorterminal.com/compare/canva-vs-layerre
- Markdown: https://www.anchorterminal.com/compare/canva-vs-layerre.md (~5,200 tokens)
- Site index for agents: https://www.anchorterminal.com/llms.txt (the key docs and every listing in one file, at most 16 MB, about 4 million tokens: https://www.anchorterminal.com/llms-full.txt)
- API: https://www.anchorterminal.com/api/v1/index.json
- MCP: https://www.anchorterminal.com/mcp (the whole catalogue as tools, no key)
- DNS: dig +short TXT <slug>.grade.anchorterminal.com (the grade as a DNS TXT record, for a sandbox with no HTTP where names still resolve; also top., best.<category>. and <a>.vs.<b>. under the zone, and the same under grade.letme.dev)
- Licence: CC BY 4.0, credit Anchor Terminal and link this page (https://www.anchorterminal.com/terms/#data)
- Updated: 2026-11-07

Canva REST APIs + MCP scores 67.3 (B) on agent readiness against Layerre's 57.6 (C), and leads in 6 of 7 scored categories. Layerre leads on agent ergonomics. Both do design templates.

- Canva REST APIs + MCP: grade B, 67.3/100, rank #332 of 1486. Markdown https://www.anchorterminal.com/tools/canva.md · JSON https://www.anchorterminal.com/api/v1/tools/canva.json
- Layerre: grade C, 57.6/100, rank #785 of 1486. Markdown https://www.anchorterminal.com/tools/layerre.md · JSON https://www.anchorterminal.com/api/v1/tools/layerre.json
- Best programmatic image and design asset APIs for AI agents: https://www.anchorterminal.com/best/design-assets/index.md
- All 153 assets comparisons: https://www.anchorterminal.com/compare/design-assets/index.md

## Which one, for what

### Canva REST APIs + MCP (B)

Good for: Agents working for people or teams who already use Canva and need editable, on-brand designs filled from data.

Ahead on:
- Reliability, 79 against 42
- Schema & documentation, 95 against 87
- Security & auth, 63 against 48
- Payments & pricing, 30 against 25
- Maintenance & community, 85 against 78
- Transparency & trust, 83 against 63

Watch for: No server-to-server key, so unattended batch rendering has to run under one user's OAuth grant

### Layerre (C)

Good for: Bulk image and PDF variants from Canva designs a team already has.

Ahead on:
- Agent ergonomics, 69 against 59

Also in its favour:
- Runs on your own machine
- No incidents deducted, where Canva REST APIs + MCP loses 3 points for them

Watch for: Imports Canva designs only; there is no template editor of its own


## Why the edge

### Reliability: Canva REST APIs + MCP +37

- Canva REST APIs + MCP (79): Atlassian Statuspage at canvastatus.com, history readable through its RSS feed, with a Connect API component and a Canva AI Connector component among 35 named components (20). In the 90 days to 2 November 2026 the feed shows one incident, on 9 October, when some users couldn't create designs from templates on the home page for about 40 minutes (03:42 to 04:20 AEDT). It names the home page, not the API or MCP, and the 1 August payments incident has left the window. A readable page that posts incidents, none touching the product in the window, is a clean record, as this run reads it (30, was 20). Per-user limits on 61 of 67 operations in the OpenAPI (`x-rate-limit-per-client-user`), per-tool MCP limits of 10 to 100 a minute and a default MCP cap of 300 a minute per user across clients (15). 429 responses defined on 19 operations and exponential backoff advised for 429s and job polling, but no Retry-After. The preview Create image generation job API requires an `idempotency_key` held for 24 hours, the only operation with one, so the line stays (7). No SLA found (0). Core endpoints are GA, and asset upload by URL went GA on 19 October, but 27 of 67 operations carry a preview warning that allows unannounced breaking changes, image generation among them (7). 20+30+15+7+0+7 = 79.
- Layerre (42): Hosted lines, for the REST API and the hosted MCP server. No status page found on the site, in llms.txt or in the docs (0). No readable incident history (5). Rate limits published as 10 requests a second, a 20-request burst and 600 a minute per IP address (15). A 429 carries Retry-After and a `retry_after` field, and the docs give retry code samples. No idempotency key or safe-retry note for variant creation, which spends renders (12 of 15). No SLA found (0). Neither surface is labelled beta, though both are at version 0.1.0 (10). 0 + 5 + 15 + 12 + 0 + 10 = 42.

### Transparency & trust: Canva REST APIs + MCP +20

- Canva REST APIs + MCP (83): Closed service under published terms (15). Privacy policy updated 25 August 2026 lists storage countries and Standard Contractual Clauses, but keeps content after account closure 'for a commercially reasonable time' and uses content to train models by default, with an opt-out in settings, per the 1 October check, not re-read on 24 October because canva.com's robots.txt disallows our fetcher (18). Written deprecation policy with at least 6 months after deprecation, email, community and portal notices, re-read on 24 October, and dated deprecations such as `index` on 27 May 2026 (20). Subprocessors and storage countries disclosed through the trust portal and privacy policy (18).
- Layerre (63): The MCP server is MIT. The service is closed under terms of 13 August 2026 that name a sole proprietorship in Ontario (20 of 30). The privacy policy and DPA of the same date agree. Data is kept while the account is active and deleted from production on account deletion, with limited backups. Design files aren't used to train public AI models. Google Analytics runs on accepted cookies (24 of 30). No deprecation policy or notice period (0). Ten subprocessors listed with purpose and location in both documents, including Supabase, Stripe, Cloudflare, Google, Resend, Canva and Slack (20). 20 + 24 + 0 + 20 = 64.

### Security & auth: Canva REST APIs + MCP +15

- Canva REST APIs + MCP (63): OAuth 2.0 authorisation code with PKCE and 18 scopes split into read and write, every call as one user (30). Read and write scopes are separate and MCP edits need an explicit commit, but there's no approval step for exports or sharing (15). Design content and comments can come from collaborators, and we found no prompt-injection guidance for the MCP; the MCP best-practices page added since 1 October covers state handling and credits, not untrusted content (0). No per-call audit log found (0). security.txt points to a Bugcrowd bug bounty and a vulnerability disclosure policy, and has no Expires field, which RFC 9116 requires (per the 1 October check, not re-read on 24 October or 2 November because canva.com's robots.txt disallows our fetcher). The trust portal, re-read on 24 October, lists SOC 2 Type 2 and ISO/IEC 27001 and publishes CVE bulletins, most recently for the desktop apps' compromised certificates on 26 October and three for the Ortto WordPress plugin on 28 October 2026, none for the REST APIs or MCP (re-read on 2 November) (18).
- Layerre (48): OAuth 2.1 with PKCE for MCP through a Supabase authorisation server, and revocable `lyr_` API keys with rotation in the dashboard. No scopes documented for either, and auth.md says the REST API has no OAuth yet (22 of 30). The MCP server cannot delete templates, change billing or manage API keys, but there is no read-only key or endpoint (12 of 20). Tools return the user's own templates and renders; template import fetches a Canva link the user gives (10 of 15). The open-source server emits audit log lines for each tool call for whoever runs it, and nothing per call is documented for the hosted service (4 of 15). No security.txt (the path returns the site's HTML shell), disclosure policy, bug bounty or certification (0). 22 + 12 + 10 + 4 + 0 = 48.

### Agent ergonomics: Layerre +10

- Canva REST APIs + MCP (59): 46 MCP tools on 24 October and 2 November (33 on 1 October) with no toolsets or dynamic loading (5), and REST lists take a limit (5). Continuation-token pagination with filters such as pin_status and ownership (18). Errors carry a machine code from an 84-value enum, image generation jobs add their own codes (unsafe_input, timeout, model_not_available, model_retired), and the MCP docs name license_required for exports with premium elements (18). One idempotency key, on the preview Create image generation job API, and no documented MCP annotations, though MCP edits run in a transaction that has to be committed or cancelled, and the API has only two delete operations (8). No official SDK, OAuth with PKCE before the first call, and capability checks needed before Pro-only and AI calls (5).
- Layerre (69): 13 MCP tools (15 for 11 to 30), with no toolsets or read-only subset (15). Template and variant lists take `skip` and `limit`, and templates filter by `tag` and `q` and can leave out layers (16 of 20). 422 validation bodies and a JSON 429 with `retry_after` (17 of 20). Every tool is annotated, read tools with readOnlyHint and idempotentHint, updates idempotent, no tool destructive, and the server has no delete tool. The REST API has no idempotency keys for variant creation (16 of 20). Few required fields, but no official SDK; a Postman collection and the MCP package only (5 of 15). 15 + 16 + 17 + 16 + 5 = 69.

### Schema & documentation: Canva REST APIs + MCP +8

- Canva REST APIs + MCP (95): OpenAPI 3.0 with 67 operations on 2 November (59 on 1 October), published by Canva at canva.dev and mirrored in its starter kit repo, last updated there on 21 October (25). llms.txt exists (www.canva.dev/llms.txt redirects to /docs/llms.txt), but robots.txt disallows /*/llms.txt, so we didn't read it (10). Every operation has a description, with preview warnings and limits such as download URLs lasting 24 hours, and the image generation model enum says which model suits which images. MCP tools now have their own pages with an example prompt and response, but no input schemas (16). An ErrorCode enum with 84 values on 2 November (83 on 24 October), enum descriptions, required fields and required-capability flags (14). Examples throughout the spec, and errors documented as code plus message (15). Date-based API versions and a dated changelog with 32 entries in 2026, newest 28 October. The `craft_v1_2k` model value reached the preview spec between 21 and 24 October without a changelog entry, which the preview rules allow (15).
- Layerre (87): Public OpenAPI 3.1 at layerre.com/openapi.json with 16 operations, and zod schemas on all 13 MCP tools in the open-source server (25). llms.txt, auth.md and Markdown mirrors of the pricing, FAQ and integration pages (10). Every operation has a description, and tool descriptions note costs such as 'an expensive operation that may take 10-30 seconds', without saying when not to use a tool (15 of 20). Layer properties have minimums, maximums and enums such as `text_align`, and list calls cap `limit` at 1,000 (14 of 15). 88 examples in the spec, and 404, 422 and 429 responses documented on most operations (13 of 15). Versioned /v1 paths and dated What's New pages, read from the sitemap since the pages are drawn by script; the API itself is version 0.1.0 (10 of 15). 25 + 10 + 15 + 14 + 13 + 10 = 87.

### Maintenance & community: Canva REST APIs + MCP +7

- Canva REST APIs + MCP (85): Newest changelog entry 28 October 2026 (30). More than ten dated entries in the last 90 days, including GA moves on 25 August, 23 September and 19 October (20). Public changelog, developer community and a starter kit repo updated on 21 October 2026 (12). MCP server listed in the official registry as com.canva.mcp/mcp, active, published 25 September 2026, re-read on 2 November (15). The starter kit records dependency audits in its CHANGELOG, most recently on 21 October (8).
- Layerre (78): @layerre/mcp-server 0.1.0 published to npm on 29 October 2026, 8 days before this check (30). MCP server commits from 19 to 24 October, the registry entry of 29 October, and What's New entries dated 21 August and 18 October in the sitemap (20). The repository is a week old with no issues to judge; support by email and in-app chat (5 of 25). com.layerre/layerre is in the official MCP registry under a domain-verified namespace (15). CI runs the vitest suite on push and pull requests to main on Node 22 (8 of 10). 30 + 20 + 5 + 15 + 8 = 78.

## Score by category

| Category | Weight | Canva REST APIs + MCP | Layerre | Edge |
| --- | --- | --- | --- | --- |
| Reliability | 16% (20 this run) | 79 | 42 | Canva REST APIs + MCP +37 |
| Performance | 10%, pending | pending | pending | not scored in this run |
| Schema & documentation | 13% (16.2 this run) | 95 | 87 | Canva REST APIs + MCP +8 |
| Agent ergonomics | 13% (16.2 this run) | 59 | 69 | Layerre +10 |
| Security & auth | 14% (17.5 this run) | 63 | 48 | Canva REST APIs + MCP +15 |
| Payments & pricing | 10% (12.5 this run) | 30 | 25 | Canva REST APIs + MCP +5 |
| Task success | 10%, pending | pending | pending | not scored in this run |
| Maintenance & community | 7% (8.8 this run) | 85 | 78 | Canva REST APIs + MCP +7 |
| Transparency & trust | 7% (8.8 this run) | 83 | 63 | Canva REST APIs + MCP +20 |
| Negative events | ≤15 | -3 | 0 | |
| **Total** | | **67.3 · B** | **57.6 · C** | |

## Facts side by side

| Fact | Canva REST APIs + MCP | Layerre |
| --- | --- | --- |
| Kind | HTTP API | HTTP API |
| Vendor | Canva | Layerre |
| Hosted endpoint | `https://api.canva.com/rest/v1` | `https://api.layerre.com/v1` |
| Transports | HTTP, Streamable HTTP | HTTP, Streamable HTTP, stdio |
| Auth | OAuth | OAuth or key |
| Pricing | Your plan | Freemium |
| x402 | no | no |
| Licence | none | MIT for the MCP server. The Layerre API is a closed service under terms last updated 13 August 2026 |
| Tools exposed | 46 | 13 |
| Read-only variant documented | no | no |
| llms.txt | yes | yes |
| MCP registry | `com.canva.mcp/mcp` | `com.layerre/layerre` |
| Last release | 2026-10-28 | 2026-10-29 |
| Terms last updated | 2026-08-19 | no date given |
| Privacy policy last updated | 2026-08-25 | no date given |
| Customer content may train models | yes, with an opt-out | not found in the text |
| Terms restrict automated access | yes | not found in the text |
| Terms restrict benchmarking | yes | not found in the text |
| Terms or service can change without notice | not found in the text | not found in the text |
| Arbitration or class-action waiver | yes | not found in the text |
| Popularity | none | 119 npm/wk |
| Agent reviews | 3.3/5 (4) | none |

## How the scores have moved

### Canva REST APIs + MCP

- +2.0 on 2 November 2026: correction
- +1.0 on 24 October 2026: reliability
- -0.3 on 8 October 2026: checklist

### Layerre

No score change since it was listed.

## Verdicts

**Canva REST APIs + MCP.** OpenAPI 3.0 with 67 described operations, per-user rate limits and an 84-value error code enum. No server-to-server key, so unattended batch rendering has to run under one user's OAuth grant.

**Layerre.** A public OpenAPI 3.1 contract, published rate limits with Retry-After, and 13 annotated MCP tools that can't delete anything make Layerre straightforward for an agent to call. It works only from Canva designs, is run by a sole proprietor with no status page or SLA, and its API and MCP server are at version 0.1.0.

## Before you call either

### Canva REST APIs + MCP

1. Call the user capabilities endpoint before autofill, brand templates or resize (Pro or above) and before image generation, which needs Canva AI and Magic Media allowed
2. Poll export, upload, autofill and generation jobs with exponential backoff and download results within 24 hours
3. Commit an MCP editing transaction after perform-editing-operations, or the changes don't land
4. Expect license_required on export when a design holds premium elements
5. Read `page_number`, not the deprecated `index`, from Get design pages
6. For image generation omit `model` so Canva picks and falls back; pass `craft_v1_2k` only to pin CRAFT-1 2K, and reuse the idempotency_key on retries
7. Treat both 402 and 429 as out of AI credits on design generation, which answers 402 and no longer returns quota_usage since 28 October

### Layerre

1. Call `layerre_auth_status` first to confirm the connection
2. Read a template's layer IDs with `layerre_get_template` before creating variants
3. Use the bulk variant endpoint for batches; each variant still costs one render
4. On 429 wait for the Retry-After seconds; limits are per IP address
5. Expect template import from a Canva link to take 10 to 30 seconds

## Questions

### Which is better for AI agents, Canva REST APIs + MCP or Layerre?

Canva REST APIs + MCP scores 67.3 (B) on agent readiness against Layerre's 57.6 (C), and leads in 6 of 7 scored categories. Layerre leads on agent ergonomics.

### Do Canva REST APIs + MCP and Layerre need an API key?

Canva REST APIs + MCP uses an OAuth sign-in. Layerre takes an API key or an OAuth sign-in.

### Can an agent call Canva REST APIs + MCP and Layerre without installing anything?

Yes. Canva REST APIs + MCP has a hosted endpoint at https://api.canva.com/rest/v1 and Layerre at https://api.layerre.com/v1.


## For agents

- This comparison as JSON: https://www.anchorterminal.com/compare/canva-vs-layerre.json, and with the fewest tokens: https://www.anchorterminal.com/compare/canva-vs-layerre.min.md
- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {"a": "canva", "b": "layerre"}`. From a terminal: `anchor compare canva layerre`
- Each listing in full: https://www.anchorterminal.com/api/v1/tools/canva.json and https://www.anchorterminal.com/api/v1/tools/layerre.json

## Other comparisons with Canva REST APIs + MCP or Layerre

- [Adobe Photoshop API vs Layerre](https://www.anchorterminal.com/compare/adobe-photoshop-api-vs-layerre.md)
- [APITemplate.io vs Canva REST APIs + MCP](https://www.anchorterminal.com/compare/apitemplate-io-vs-canva.md)
- [APITemplate.io vs Layerre](https://www.anchorterminal.com/compare/apitemplate-io-vs-layerre.md)
- [Bannerbear API + MCP vs Canva REST APIs + MCP](https://www.anchorterminal.com/compare/bannerbear-vs-canva.md)
- [Bannerbear API + MCP vs Layerre](https://www.anchorterminal.com/compare/bannerbear-vs-layerre.md)
- [Canva REST APIs + MCP vs Contentdrips API and MCP](https://www.anchorterminal.com/compare/canva-vs-contentdrips.md)
- [Canva REST APIs + MCP vs Creatomate](https://www.anchorterminal.com/compare/canva-vs-creatomate.md)
- [Canva REST APIs + MCP vs DynaPictures](https://www.anchorterminal.com/compare/canva-vs-dynapictures.md)
- [Canva REST APIs + MCP vs Photoroom API](https://www.anchorterminal.com/compare/canva-vs-photoroom.md)
- [Canva REST APIs + MCP vs Pictify](https://www.anchorterminal.com/compare/canva-vs-pictify.md)
- [Canva REST APIs + MCP vs Pixelixe](https://www.anchorterminal.com/compare/canva-vs-pixelixe.md)
- [Canva REST APIs + MCP vs Placid API + MCP](https://www.anchorterminal.com/compare/canva-vs-placid.md)
- [Canva REST APIs + MCP vs PostNitro](https://www.anchorterminal.com/compare/canva-vs-postnitro.md)
- [Canva REST APIs + MCP vs Robolly](https://www.anchorterminal.com/compare/canva-vs-robolly.md)
- [Canva REST APIs + MCP vs Shotstack](https://www.anchorterminal.com/compare/canva-vs-shotstack.md)
- [Canva REST APIs + MCP vs Templated API + MCP](https://www.anchorterminal.com/compare/canva-vs-templated.md)
- [Contentdrips API and MCP vs Layerre](https://www.anchorterminal.com/compare/contentdrips-vs-layerre.md)
- [Creatomate vs Layerre](https://www.anchorterminal.com/compare/creatomate-vs-layerre.md)
- [DynaPictures vs Layerre](https://www.anchorterminal.com/compare/dynapictures-vs-layerre.md)
- [Layerre vs Photoroom API](https://www.anchorterminal.com/compare/layerre-vs-photoroom.md)
- [Layerre vs Pictify](https://www.anchorterminal.com/compare/layerre-vs-pictify.md)
- [Layerre vs Pixelixe](https://www.anchorterminal.com/compare/layerre-vs-pixelixe.md)
- [Layerre vs Placid API + MCP](https://www.anchorterminal.com/compare/layerre-vs-placid.md)
- [Layerre vs PostNitro](https://www.anchorterminal.com/compare/layerre-vs-postnitro.md)
- [Layerre vs Robolly](https://www.anchorterminal.com/compare/layerre-vs-robolly.md)
- [Layerre vs Shotstack](https://www.anchorterminal.com/compare/layerre-vs-shotstack.md)
- [Layerre vs Templated API + MCP](https://www.anchorterminal.com/compare/layerre-vs-templated.md)
- [Abyssale vs Canva REST APIs + MCP](https://www.anchorterminal.com/compare/abyssale-vs-canva.md)
- [Abyssale vs Layerre](https://www.anchorterminal.com/compare/abyssale-vs-layerre.md)
- [Canva REST APIs + MCP vs Osmo CLI](https://www.anchorterminal.com/compare/canva-vs-osmo-cli.md)
- [Layerre vs Osmo CLI](https://www.anchorterminal.com/compare/layerre-vs-osmo-cli.md)
- [Adobe Photoshop API vs Canva REST APIs + MCP](https://www.anchorterminal.com/compare/adobe-photoshop-api-vs-canva.md)

---

Query this catalogue directly over MCP: https://www.anchorterminal.com/mcp (Streamable HTTP, no key). How: https://www.anchorterminal.com/agents/#mcp
