Diagnose and fix Canva Connect API errors and HTTP status codes.
Use when encountering Canva errors, debugging failed requests,
or troubleshooting integration issues.
Trigger with phrases like "canva error", "fix canva",
"canva not working", "debug canva", "canva 401", "canva 429".
Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.
Quelldateien prüfen
Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.
Mit Codex oder Claude installieren Kopieren Sie diesen Prompt, fügen Sie ihn in Codex, Claude oder einen anderen Assistant ein und lassen Sie die Skill-Seite prüfen und installieren.
Ein direkter Befehl überspringt den Prüf-Prompt. Prüfen Sie die Quelle, bevor Sie ihn ausführen.
Diagnose and fix Canva Connect API errors and HTTP status codes.
Use when encountering Canva errors, debugging failed requests,
or troubleshooting integration issues.
Trigger with phrases like "canva error", "fix canva",
"canva not working", "debug canva", "canva 401", "canva 429".
allowed-tools
Read, Grep, Bash(curl:*)
version
1.5.0
license
MIT
author
Jeremy Longshore <jeremy@intentsolutions.io>
tags
["saas","design","canva"]
compatibility
Designed for Claude Code
Canva Common Errors
Overview
Quick reference for the most common Canva Connect API errors at api.canva.com/rest/v1/* with real HTTP status codes, error payloads, and fixes.
Error Reference
401 Unauthorized — Token Expired or Invalid
{"error":"invalid_token","message":"The access token is invalid or expired"}
Cause: Access tokens expire after ~4 hours. Token may be malformed or revoked.
Fix:
// Refresh the tokenconst res = awaitfetch('https://api.canva.com/rest/v1/oauth/token', {
method: 'POST',
headers: {
'Authorization': `Basic ${Buffer.from(`${clientId}:${clientSecret}`).toString('base64')}`,
'Content-Type': 'application/x-www-form-urlencoded',
},
body: newURLSearchParams({
grant_type: 'refresh_token',
refresh_token: storedRefreshToken,
}),
});
const { access_token, refresh_token } = await res.json();
// IMPORTANT: Each refresh token is single-use — store the new one
403 Forbidden — Missing Scope or Insufficient Permissions