List Canvases
List canvases accessible to the API key’s team (cursor pagination).
Returns at most limit canvases per page (default 20, cap 100). No
cheap true total exists on this lane (the doc-kind filter reads
un-indexed JSONB, so an exact count would scan every canvas document) —
has_more is always explicit instead: iterate next_cursor while it
is true to fetch everything.
Authorizations
API key from Settings > Developer > REST API
Headers
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.
2026-04-12, 2026-05-01 "2026-05-01"
Query Parameters
Opaque pagination cursor. Pass the next_cursor from the previous response. Omit on the first request.
Max canvases per page. Defaults to 20, caps at 100.
1 <= x <= 100Response
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. returned and has_more are
derived server-side; total stays null on this lane (the doc-kind
filter reads un-indexed JSONB, making an exact count as expensive as a
full scan) — rely on has_more. See /api/versioning for the
legacy-to-cursor migration map.
Canvases in this page, newest first.
Opaque cursor to pass as ?cursor= on the next request. null means you've reached the end of the collection.
Number of items in this page (always len(data); derived server-side).
true when more items exist beyond this page — keep requesting with next_cursor until this is false. Never trust len(data) < limit alone.
The effective page-size limit this response was computed with.
True total number of items in the collection (after filters), when the endpoint can count cheaply. null on log/search lanes — use has_more there.