Error code catalog
Every error CanvasRelay returns carries a stable CR-xxxx code. Codes are never renumbered or reused — the one you're looking at below means the same thing forever. In-app errors link straight to their entry here.
CR-1xxx — Sign-in & requests
Authentication, tokens, rate limits, and request-level failures. Most of these mean the request never got far enough to touch your data.
Sign in again. API callers: check the Bearer key is present and not revoked.
Wrong email/password, or a revoked API key. Reset the password or mint a new key.
Your 30-day session rolled off — sign in again. Nothing was lost.
Your role (or API key) doesn't include this action. Ask an owner/admin, or use a key with the right scope.
The bot check failed — reload the page and try again; VPNs sometimes trip it.
Too many requests. Wait a minute and retry; players back off automatically.
The route or resource doesn't exist — check the URL/id.
Something broke on our side. If it persists, email support with roughly what you were doing.
The link/token is wrong, used, or expired — request a fresh one.
That email already has an account — sign in instead, or use password reset.
Pick a longer password (10+ characters) that's not a common word or sequence.
CR-2xxx — Workspace & plan
Organization membership, invitations, and plan entitlements — what your workspace is allowed to do.
The workspace id is wrong, or you're not a member — it doesn't leak either way.
You're not a member of that workspace. Switch workspaces, or ask for an invite.
This feature needs a higher plan. Settings → Billing shows what's included in each.
You've hit a plan limit (screens, storage, …). Upgrade or free up capacity.
That board slug is taken — pick another, or let us derive one.
They're already in the workspace — no invite needed.
You can't remove or demote the last owner. Promote someone else to owner first.
Sign in with the exact email the invitation was sent to, then open the link again.
This workspace is scheduled for deletion — cancel it in Settings to keep working.
If this keeps happening, email [email protected] with the code and what you were doing — the code tells us exactly where to look.
If this keeps happening, email [email protected] with the code and what you were doing — the code tells us exactly where to look.
If this keeps happening, email [email protected] with the code and what you were doing — the code tells us exactly where to look.
If this keeps happening, email [email protected] with the code and what you were doing — the code tells us exactly where to look.
If this keeps happening, email [email protected] with the code and what you were doing — the code tells us exactly where to look.
If this keeps happening, email [email protected] with the code and what you were doing — the code tells us exactly where to look.
If this keeps happening, email [email protected] with the code and what you were doing — the code tells us exactly where to look.
If this keeps happening, email [email protected] with the code and what you were doing — the code tells us exactly where to look.
If this keeps happening, email [email protected] with the code and what you were doing — the code tells us exactly where to look.
CR-3xxx — Editor & content
Scene document validation and editor rules. These protect your content from saving in a broken state.
The scene document failed validation — reload the board and redo the last edit.
This scene was written by a newer version of CanvasRelay. Update the player/editor.
An element kind this build doesn't recognize. Players show a placeholder; update when you can.
A field failed validation — the response details name the field.
A board must keep at least one scene. Add another scene before deleting this one.
If this keeps happening, email [email protected] with the code and what you were doing — the code tells us exactly where to look.
CR-4xxx — Publishing
Draft, release, and publish-flow conflicts.
Nothing changed since the last publish.
That release doesn't exist (anymore) — check the board's release history.
Another publish or review action is in flight — wait a moment and retry.
Someone (or another tab) changed this board since you opened it. Reload to get the latest, then re-apply your edit.
CR-5xxx — Screens & players
Pairing, device credentials, and player-side failures — the codes a TV can show.
The screen id is wrong, or it belongs to another workspace.
The pairing code expired or was already used — the TV shows a fresh code automatically.
The screen hasn't checked in recently — check its power and network.
This screen was disconnected from the dashboard. On the TV, pair again with the new code.
This environment has no device-auth secret configured — an ops issue, contact support.
A widget's data source (weather, RSS, …) is temporarily unreachable. The widget degrades per its offline policy and recovers on its own.
If this keeps happening, email [email protected] with the code and what you were doing — the code tells us exactly where to look.
CR-6xxx — Media
Upload size/type limits and media library rules.
The media id is wrong or was deleted.
File too large — images ≤10MB, video ≤200MB, fonts ≤2MB. Compress and retry.
Unsupported or mislabeled file type. Images: png/jpeg/webp (SVG is rejected for safety); video: mp4/webm; fonts: woff2.
Your plan's media storage is full — delete unused media or upgrade.
Scenes still reference this file. Replace it (same id, updates everywhere) or remove it from those scenes first.
CR-7xxx — Billing
Checkout, subscription, and payment states.
Add a payment method in Settings → Billing.
The card was declined — update it in the billing portal. We'll retry automatically.
The subscription isn't active — check Settings → Billing.
Billing isn't configured on this environment — an ops issue, contact support.
No billing account exists yet — start a checkout first.
Verify your email (link valid 24h) before starting checkout.
CR-8xxx — AI assist
AI availability, quotas, and output validation.
AI isn't available right now (or isn't configured on this environment). Everything works manually.
AI quota reached — monthly credits or the daily action cap. Resets on its own; upgrade for more.
The AI returned something we couldn't use, so nothing changed. Retry, or use the paste-text fallback for imports.
