Skip to main content
GET
/
canvases
List Canvases
curl --request GET \
  --url https://api.moda.app/v1/canvases \
  --header 'Authorization: Bearer <token>'
{
  "data": [
    {
      "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>"
      }
    }
  ],
  "next_cursor": "<string>"
}

Documentation Index

Fetch the complete documentation index at: https://docs.moda.app/llms.txt

Use this file to discover all available pages before exploring further.

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"

Query Parameters

cursor
string | null

Opaque pagination cursor. Pass the next_cursor from the previous response. Omit on the first request.

limit
integer
default:20

Max canvases per page. Defaults to 20, caps at 100.

Required range: 1 <= x <= 100

Response

Successful Response

Cursor-paginated canvas list response (ENG-2377).

Callers pass ?cursor= on subsequent requests; next_cursor is null when there are no more rows. No total is returned — we stop running SELECT COUNT(*) on every list call. See /api/versioning for the legacy-to-cursor migration map.

data
CanvasItem · object[]
required

Canvases in this page, newest first.

next_cursor
string | null

Opaque cursor to pass as ?cursor= on the next request. null when no more canvases follow.