---
title: "Read canvas generation progress"
method: GET
path: "/v1/canvases/{canvasId}/status"
tags: ["Canvases"]
---

# Read canvas generation progress

`GET /v1/canvases/{canvasId}/status`

## Request

- Base URL: `https://api.masko.ai`
- URL: `https://api.masko.ai/v1/canvases/{canvasId}/status`
- Auth: HTTP bearer

Generation progress for a canvas. Poll it every 15 to 30 seconds after `POST /v1/canvases/{canvasId}/generate-all`. Read-only keys can call it, and it never changes the canvas. `status.generation.nodes` and `status.generation.edges` count total, completed, pending and failed parts. Pending means neither finished nor failed. Stop polling when `status.generation.ready` is true: every node image and edge video exists. The canvas plays in the editor once `status.preview.ready` is also true. If `status.preview.waiting_edges` is above 0, keep polling because derivatives are still being prepared. If `status.preview.repairable` is true, call `POST /v1/canvases/{canvasId}/repair` with `dry_run: true` first. If any `failed` count is above 0, read `status.failed_nodes` and `status.failed_edges`. Each entry has the part id, its `job_id` and a customer-safe `error`. A retry is a new paid attempt, so ask before retrying. Returns 409 when the canvas has no mascot generation context.

## Path parameters

- `canvasId` string, uuid, required

## Response `200`

Successful response

- object
  - `data` object, required
    - `object` 'canvas_status', required
    - `canvas_id` string, uuid, required
    - `graph_content_hash` string, required
    - `status` object, required
      - `generation` object, required
        - `ready` boolean, required
        - `nodes` object, required
          - `total` number, required
          - `completed` number, required
          - `pending` number, required: Incomplete node count. Includes failed nodes for backward compatibility; inspect failed for the terminal subset.
          - `failed` number, required
        - `edges` object, required
          - `total` number, required
          - `completed` number, required
          - `pending` number, required
          - `failed` number, required
      - `preview` object, required
        - `ready` boolean, required
        - `repairable` boolean, required
        - `repairable_edges` number, required
        - `waiting_edges` number, required
        - `missing_edges` number, required
        - `missing_formats` string[], required
      - `variants` object, required
        - `sizes` string[], required
        - `missing` object[], required
          - `edge_id` string, required
          - `size` string, required
          - `formats` string[], required
      - `failed_nodes` object[], required
        - `node_id` string, required
        - `job_id` string, uuid, nullable, required
        - `error` string, required
      - `failed_edges` object[], required
        - `edge_id` string, required
        - `job_id` string, uuid, nullable, required
        - `error` string, required
      - `edge_media` object[]
        - `edge_id` string, required
        - `source` string, required
        - `target` string, required
        - `video_asset_id` string, uuid, nullable, required
        - `base` object, required
          - `video_ready` boolean, required
          - `webm_ready` boolean, required
          - `hevc_ready` boolean, required
          - `preview_ready` boolean, required
          - `derivatives_in_flight` boolean, required
          - `source_job_id` string, uuid
          - `source_job_status` string
          - `missing` string[], required
        - `variants` object, required

## Other responses

- `400`: Invalid input
- `401`: Authentication required
- `403`: Write key required
- `404`: Resource not found in credential workspace
- `409`: Revision conflict or retained history
- `422`: Required release media unavailable

---

[API](https://skmtc.dev/masko/apis/masko-api.md) · [All operations](https://skmtc.dev/masko/apis/masko-api/llms.txt) · [OpenAPI document](https://skmtc.dev/masko/apis/masko-api/revisions/91eb3006a92f?raw)
