Skip to main content
PATCH
/
canvases
/
{canvas_id}
Update Canvas
curl --request PATCH \
  --url https://api.moda.app/v1/canvases/{canvas_id} \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "<string>",
  "description": "<string>"
}
'
{
  "id": "cvs_01HT9WK8N3M2J4A5Z6P7Q8R9TV",
  "name": "<string>",
  "url": "<string>",
  "category": "<string>",
  "visibility": "<string>",
  "created_at": "<string>",
  "updated_at": "<string>",
  "created_by": {
    "id": "<string>",
    "name": "<string>",
    "email": "<string>"
  },
  "template_type": "<string>"
}

Authorizations

Authorization
string
header
required

API key from Settings > Developer > REST API

Headers

Moda-Version
enum<string>
default:2026-05-01

Calendar-dated API version pin. New integrations should pin 2026-05-01 to opt into the newest response shapes. For back-compat the server also accepts requests with no header and resolves them to the current default (today: 2026-04-12); that default advances on each sunset date. Any unsupported value returns 400 unsupported_version.

Available options:
2026-04-12,
2026-05-01
Example:

"2026-05-01"

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.

Pattern: ^cvs_[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$
Example:

"cvs_01HT9WK8N3M2J4A5Z6P7Q8R9TV"

Body

application/json
name
string | null

New display name.

Required string length: 1 - 255
description
string | null

New description. Send null to clear.

Maximum string length: 500
template_type
enum<string> | null

Mark as 'template' (any canvas) or 'theme' (slides canvases only). Send null to clear.

Available options:
template,
theme

Response

Successful Response

id
string
required

Unique canvas identifier (prefixed cvs_...).

Pattern: ^cvs_[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$
Example:

"cvs_01HT9WK8N3M2J4A5Z6P7Q8R9TV"

name
string
required

Display name of the canvas.

url
string
required

Full URL to open the canvas in the Moda editor.

category
string | null

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 | null

Canvas visibility — team (visible to everyone on the team) or private (only the creator and explicit shares).

created_at
string | null

ISO 8601 timestamp when the canvas was created.

updated_at
string | null

ISO 8601 timestamp of the last modification.

created_by
CreatorInfo · object

Canvas creator (id, name, email). null when the creator user has been deleted or the relationship failed to load.

template_type
string | null

'template', 'theme', or null.