---
title: "Get canvas details"
method: GET
path: "/v1/collections/{id}/canvases/{canvasId}"
tags: ["Canvases"]
deprecated: true
---

# Get canvas details

`GET /v1/collections/{id}/canvases/{canvasId}`

## Request

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

> **Deprecated.**

Returns the canvas with its full graph (nodes, edges, inputs, viewport) and media status. For agents: use `status.media` as the canonical readiness interface. `status.media.generation.ready` means node images and parent edge videos exist. Inspect `status.failed_nodes` and `status.failed_edges` for terminal generation failures and customer-safe error messages before deciding whether to start a new paid attempt. `status.nodes.pending` remains the backward-compatible count of all incomplete nodes, including failed nodes; `status.nodes.failed` identifies the terminal subset. `status.media.preview.ready` means the canvas editor can play every concrete edge using completed base WebM and HEVC derivatives. If `status.media.preview.waiting_edges > 0`, wait and poll again because the original generation job is still preparing derivatives. If `status.media.preview.repairable=true`, call POST `/v1/collections/{id}/canvases/{canvasId}/repair` with `dry_run=true` before repairing. `status.media.variants` reports optimized size-variant facts only; base preview repair does not create variants. `status.ready`, `status.generated_ready`, and `status.preview_ready` remain as backward-compatible aliases.

## Path parameters

- `id` string, uuid, required
- `canvasId` string, uuid, required

## Response `200`

Canvas details with status

- CanvasResponse
  - `data` Canvas, required
    - `object` 'canvas': Resource type. Always "canvas".
    - `id` string, uuid, required
    - `name` string, required
    - `graph` object, required
    - `graph_content_hash` string, required: Revision token for the full authored graph. Send this as expected_graph_hash when replacing the graph.
    - `status` object
      - `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
      - `ready` boolean, required
      - `generated_ready` boolean
      - `preview_ready` boolean
      - `media` object
        - `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
    - `created_at` string
    - `updated_at` string

## Other responses

- `400`: Validation error
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not found
- `409`: Conflict

---

[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)
