---
title: "Update Canvas"
method: PATCH
path: "/canvases/{canvas_id}"
tags: ["canvases"]
---

# Update Canvas

`PATCH /canvases/{canvas_id}`

Update a canvas's name, description, or template_type.

## Path parameters

- `canvas_id` string, required — Prefixed ``cvs_`` wire ID (Crockford base32 body) — the canonical, recommended form. For back-compat, **a bare UUID string is also accepted** in both path parameters and JSON request bodies (older integrations that stored raw UUIDs keep working). Both are permanent, supported inputs.

## Headers

- `Moda-Version` '2026-04-12' | '2026-05-01'

## Request body

- UpdateCanvasRequest
  - `name` string, nullable — New display name.
  - `description` string, nullable — New description. Send null to clear.
  - `template_type` 'template' | 'theme', nullable — Mark as 'template' (any canvas) or 'theme' (slides canvases only). Send null to clear.

## Response `200`

Successful Response

- UpdateCanvasResponse
  - `id` string, required — Unique canvas identifier (prefixed ``cvs_...``).
  - `name` string, required — Display name of the canvas.
  - `url` string, required — Full URL to open the canvas in the Moda editor.
  - `category` string, nullable — Canvas format category — one of ``slides``, ``social``, ``carousel``, ``pdf``, ``diagram``, ``ui``, ``animation``, ``prints``, ``web-ads``, ``other``, or ``null`` when unset. Use this to distinguish slide decks from social posts etc. in list UIs.
  - `visibility` string, nullable — Canvas visibility — ``team`` (visible to everyone on the team) or ``private`` (only the creator and explicit shares).
  - `created_at` string, nullable — ISO 8601 timestamp when the canvas was created.
  - `updated_at` string, nullable — ISO 8601 timestamp of the last modification.
  - `created_by` CreatorInfo — Minimal creator attribution for list/search responses.
    - `id` string, required — User ID of the creator.
    - `name` string, required — Display name of the creator.
    - `email` string, required — Email address of the creator.
  - `template_type` string, nullable — 'template', 'theme', or null.

## Other responses

- `401` — Authentication required.
- `403` — Permission denied for this scope.
- `404` — Resource not found.
- `409` — Conflict (idempotency / resource state).
- `422` — Request validation failed.
- `429` — Rate limit exceeded.
- `500` — Internal error.

---

[API](https://skmtc.net/moda/apis/moda-public-api.md) · [All operations](https://skmtc.net/moda/apis/moda-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/moda/moda-public-api/versions/b34cb4cca59e/schema)
