canva-upgrade-migration
Plan and execute Canva Connect API version upgrades and breaking change detection. Use when Canva releases API changes, migrating brand template IDs, or adapting to endpoint deprecations. Trigger with phrases like "upgrade canva", "canva API changes", "canva breaking changes", "canva deprecation", "canva changelog".
Best use case
canva-upgrade-migration is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Plan and execute Canva Connect API version upgrades and breaking change detection. Use when Canva releases API changes, migrating brand template IDs, or adapting to endpoint deprecations. Trigger with phrases like "upgrade canva", "canva API changes", "canva breaking changes", "canva deprecation", "canva changelog".
Teams using canva-upgrade-migration should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/canva-upgrade-migration/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How canva-upgrade-migration Compares
| Feature / Agent | canva-upgrade-migration | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Plan and execute Canva Connect API version upgrades and breaking change detection. Use when Canva releases API changes, migrating brand template IDs, or adapting to endpoint deprecations. Trigger with phrases like "upgrade canva", "canva API changes", "canva breaking changes", "canva deprecation", "canva changelog".
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Canva Upgrade & Migration
## Overview
Guide for handling Canva Connect API changes. Canva uses a single REST API version (`/rest/v1/`) but evolves endpoints over time. Monitor the [changelog](https://www.canva.dev/docs/connect/changelog/) for breaking changes.
## Known Migrations
### Brand Template ID Migration (September 2025)
Canva migrated brand templates to a new ID format. Old IDs accepted for 6 months.
```typescript
// Check if your stored template IDs need updating
async function migrateBrandTemplateIds(
db: Database, token: string
): Promise<{ migrated: number; failed: string[] }> {
const stored = await db.getBrandTemplateIds();
let migrated = 0;
const failed: string[] = [];
// Fetch current templates from Canva
const { items } = await canvaAPI('/brand-templates', token);
const currentIds = new Set(items.map((t: any) => t.id));
for (const oldId of stored) {
if (!currentIds.has(oldId)) {
// Old ID — try to find matching template by title
const match = items.find((t: any) => t.title === await db.getTemplateName(oldId));
if (match) {
await db.updateTemplateId(oldId, match.id);
migrated++;
} else {
failed.push(oldId);
}
}
}
return { migrated, failed };
}
```
### Comment API Migration
The Comment API endpoints were refactored — `Create Comment` and `Create Reply` are deprecated in favor of `Create Thread` and `Create Reply (v2)`.
```typescript
// OLD (deprecated)
// POST /v1/designs/{id}/comments — deprecated
// NEW
// POST /v1/designs/{id}/comment_threads — Create Thread
// POST /v1/designs/{id}/comment_threads/{threadId}/replies — Create Reply
```
## Pre-Upgrade Assessment
```typescript
async function assessCanvaIntegration(token: string): Promise<void> {
const checks = [
{ name: 'Users API', path: '/users/me' },
{ name: 'Designs List', path: '/designs?limit=1' },
{ name: 'Brand Templates', path: '/brand-templates?limit=1' },
{ name: 'Exports', path: '/exports' }, // Will 405 (POST only) but confirms route exists
];
for (const check of checks) {
try {
const res = await fetch(`https://api.canva.com/rest/v1${check.path}`, {
headers: { 'Authorization': `Bearer ${token}` },
});
console.log(`[${res.ok || res.status === 405 ? 'OK' : 'WARN'}] ${check.name}: HTTP ${res.status}`);
} catch (e: any) {
console.log(`[FAIL] ${check.name}: ${e.message}`);
}
}
}
```
## Breaking Change Detection
```typescript
// Monitor API responses for deprecation signals
function checkForDeprecationWarnings(response: Response, endpoint: string): void {
const deprecation = response.headers.get('Deprecation');
const sunset = response.headers.get('Sunset');
const link = response.headers.get('Link');
if (deprecation) {
console.warn(`[DEPRECATION] ${endpoint}: deprecated=${deprecation}, sunset=${sunset}`);
console.warn(` Migration guide: ${link}`);
// Alert ops team
}
}
```
## Upgrade Branch Workflow
```bash
# 1. Create upgrade branch
git checkout -b upgrade/canva-api-changes
# 2. Check Canva changelog for breaking changes
# https://www.canva.dev/docs/connect/changelog/
# 3. Download latest OpenAPI spec for diff
curl -o openapi-new.yml https://www.canva.dev/sources/connect/api/latest/api.yml
diff openapi-old.yml openapi-new.yml | head -100
# 4. Run integration tests against staging
CANVA_ACCESS_TOKEN=$STAGING_TOKEN npm test
# 5. Deploy to staging first
# 6. Monitor for 24 hours before production
```
## Rollback Procedure
```typescript
// Feature-flag controlled rollback
const USE_NEW_COMMENT_API = process.env.CANVA_NEW_COMMENT_API === 'true';
async function createComment(designId: string, message: string, token: string) {
if (USE_NEW_COMMENT_API) {
return canvaAPI(`/designs/${designId}/comment_threads`, token, {
method: 'POST',
body: JSON.stringify({ message }),
});
}
// Fallback to deprecated endpoint during transition
return canvaAPI(`/designs/${designId}/comments`, token, {
method: 'POST',
body: JSON.stringify({ message }),
});
}
```
## Error Handling
| Issue | Cause | Solution |
|-------|-------|----------|
| 404 on endpoint | Endpoint removed or renamed | Check changelog for replacement |
| Old template IDs fail | ID format migration | Re-fetch template list |
| Deprecated header | Endpoint sunsetting | Migrate to replacement |
| Response schema changed | New/removed fields | Update Zod schemas, add optional chaining |
## Resources
- [Canva Changelog](https://www.canva.dev/docs/connect/changelog/)
- [OpenAPI Spec](https://www.canva.dev/sources/connect/api/latest/api.yml)
- [Canva API Reference](https://www.canva.dev/docs/connect/api-reference/)
## Next Steps
For CI integration during upgrades, see `canva-ci-integration`.Related Skills
sql-migration-generator
Sql Migration Generator - Auto-activating skill for Backend Development. Triggers on: sql migration generator, sql migration generator Part of the Backend Development skill category.
managing-database-migrations
Process use when you need to work with database migrations. This skill provides schema migration management with comprehensive guidance and automation. Trigger with phrases like "create migration", "run migrations", or "manage schema versions".
exa-upgrade-migration
Upgrade exa-js SDK versions and handle breaking changes safely. Use when upgrading the Exa SDK, detecting deprecations, or migrating between exa-js versions. Trigger with phrases like "upgrade exa", "exa update", "exa breaking changes", "update exa-js", "exa new version".
exa-migration-deep-dive
Migrate from other search APIs (Google, Bing, Tavily, Serper) to Exa neural search. Use when switching to Exa from another search provider, migrating search pipelines, or evaluating Exa as a replacement for traditional search APIs. Trigger with phrases like "migrate to exa", "switch to exa", "replace google search with exa", "exa vs tavily", "exa migration", "move to exa".
evernote-upgrade-migration
Upgrade Evernote SDK versions and migrate between API versions. Use when upgrading SDK, handling breaking changes, or migrating to newer API patterns. Trigger with phrases like "upgrade evernote sdk", "evernote migration", "update evernote", "evernote breaking changes".
evernote-migration-deep-dive
Deep dive into Evernote data migration strategies. Use when migrating to/from Evernote, bulk data transfers, or complex migration scenarios. Trigger with phrases like "migrate to evernote", "migrate from evernote", "evernote data transfer", "bulk evernote migration".
elevenlabs-upgrade-migration
Upgrade ElevenLabs SDK versions and migrate between API model generations. Use when upgrading the elevenlabs-js or elevenlabs Python SDK, migrating from v1 to v2 models, or handling deprecations. Trigger: "upgrade elevenlabs", "elevenlabs migration", "elevenlabs breaking changes", "update elevenlabs SDK", "migrate elevenlabs model", "eleven_v3 migration".
documenso-upgrade-migration
Manage Documenso API version upgrades and SDK migrations. Use when upgrading from v1 to v2 API, updating SDK versions, or migrating between Documenso versions. Trigger with phrases like "documenso upgrade", "documenso v2 migration", "update documenso SDK", "documenso API version".
documenso-migration-deep-dive
Execute comprehensive Documenso migration strategies for platform switches. Use when migrating from other signing platforms, re-platforming to Documenso, or performing major infrastructure changes. Trigger with phrases like "migrate to documenso", "documenso migration", "switch to documenso", "documenso replatform", "replace docusign".
deepgram-upgrade-migration
Plan and execute Deepgram SDK upgrades and model migrations. Use when upgrading SDK versions (v3->v4->v5), migrating models (Nova-2 to Nova-3), or planning API version transitions. Trigger: "upgrade deepgram", "deepgram migration", "update deepgram SDK", "deepgram version upgrade", "nova-3 migration".
deepgram-migration-deep-dive
Deep dive into migrating to Deepgram from other transcription providers. Use when migrating from AWS Transcribe, Google Cloud STT, Azure Speech, OpenAI Whisper, AssemblyAI, or Rev.ai to Deepgram. Trigger: "deepgram migration", "switch to deepgram", "migrate transcription", "deepgram from AWS", "deepgram from Google", "replace whisper with deepgram".
databricks-upgrade-migration
Upgrade Databricks runtime versions and migrate between features. Use when upgrading DBR versions, migrating to Unity Catalog, or updating deprecated APIs and features. Trigger with phrases like "databricks upgrade", "DBR upgrade", "databricks migration", "unity catalog migration", "hive to unity".