canvas-actions

List the team's template canvases with signed thumbnails (newest first).

The discovery half of the template flow: VIEW the thumbnails (download the signed URLs and look at them — same discipline as brand logos), pick a template whose look fits, then instantiate it with POST /v1/canvases + template_canvas_id. total is the true team-wide template count; when has_more is true, pass next_cursor for the rest.

Team-scoped only — templates from other teams never appear, and the ids here are ordinary canvas ids usable across the canvas endpoints.

get/templates

Request

  • Base URL
    https://api.moda.app/v1
  • URL
    https://api.moda.app/v1/templates
  • Auth
    HTTP bearer

Query parameters

cursorstring nullable

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

limitinteger

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

Headers

Moda-Version'2026-04-12' | '2026-05-01'
Example: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.

Response

Successful Response

next_cursorstring nullable

Opaque cursor to pass as ?cursor= on the next request. null means you've reached the end of the collection.

returnedinteger

Number of items in this page (always len(data); derived server-side).

has_moreboolean

true when more items exist beyond this page — keep requesting with next_cursor until this is false. Never trust len(data) < limit alone.

limitinteger nullable

The effective page-size limit this response was computed with.

totalinteger nullable

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.

Changes