Migrate to mascots and canvases
API version 2026-09-26 (deployed September 27, 2026) renamed collections to mascots and moved canvases to /v1/canvases. Existing IDs, API keys and application credentials keep working; new integrations start at the quickstart.
Routes and fields
| Before | Now |
|---|---|
/v1/collections/:id/... | /v1/mascots/:id/... |
/v1/collections/:id/canvases/:canvasId | /v1/canvases/:canvasId |
collection_id, collection_ids | mascot_id, mascot_ids |
collection_name | mascot_name |
source_collection_id, parent_collection_id | source_mascot_id, parent_mascot_id |
A canvas now belongs to a project. Create it with POST /v1/canvases (project_id, mascot_id, name; no template_id, see canvas templates) and list with GET /v1/canvases?project_id=PROJECT_ID. Updates require expected_graph_hash, and generation, validation, history and export live under /v1/canvases/CANVAS_ID; see the canvas guide.
Shared routes need the version
/v1/jobs, /v1/assets and /v1/canvas-templates serve both versions. Send Masko-API-Version: 2026-09-26, ?api_version=2026-09-26 or a mascot_id query filter to get current field names; otherwise the old names are kept. The Masko-API-Version response header states the version used, and poll_url from /v1/mascots routes already carries api_version.
Old collection routes
/v1/collections URLs always use the older payloads but call the same services; they are adapters, not redirects. The current version rejects collection_id, and mixing old and new identifier names returns 400 even when the values match.
OpenAPI marks the old operations deprecated. They will be removed only after an announced cutoff, once no non-test calls have been seen for 30 consecutive days; none is announced yet. See the changelog.
Stored records keep their format
Graph documents, user metadata, frozen generation receipts and signed runtime delivery keep their stored format; only REST field names changed. Where an old record holds both an authoring collection ID and an older runtime mascot ID, the API now names them mascot_id and runtime_binding_id.
Set the animation price explicitly
Without animation_model, an animation bills the older rate of 5 credits per second, 4 to 10 seconds. Send "animation_model": "standard" (2 credits per second, 2 to 15 seconds) or "premium" (6 credits per second, 4 to 30 seconds); see credits and costs.
