---
title: "Get Export Status"
method: GET
path: "/canvases/{canvas_id}/export-status"
tags: ["canvases"]
---

# Get Export Status

`GET /canvases/{canvas_id}/export-status`

Poll the status of an asynchronous export task.

Returns ``is_terminal=False`` while the export is still running (with a
suggested ``retry_after_seconds``); ``is_terminal=True`` once it
completes or fails. The signed ``url`` is set on completion.

The ``canvas_id`` in the path must match the canvas that the task
targets — mismatches return 404 (we don't leak which canvas a task
actually belongs to).

## Path parameters

- `canvas_id` string, required — Prefixed ``cvs_`` wire ID (Crockford base32 body) — the canonical, recommended form. For back-compat, **a bare UUID string is also accepted** in both path parameters and JSON request bodies (older integrations that stored raw UUIDs keep working). Both are permanent, supported inputs.

## Query parameters

- `task_id` string, required — Export task ID returned by /export when status='in_progress'.

## Headers

- `Moda-Version` '2026-04-12' | '2026-05-01'

## Response `200`

Successful Response

- ExportStatusResponse — Response for ``GET /canvases/{id}/export-status``.
  - `task_id` string, required — The export task ID.
  - `status` string, required — ``queued``, ``running``, ``completed``, or ``failed``.
  - `is_terminal` boolean, required — True when ``status`` is ``completed`` or ``failed``.
  - `canvas_id` string, required — Prefixed canvas identifier the export targets.
  - `canvas_url` string, required — Full URL to open the source canvas in the Moda editor.
  - `format` string, required — Delivered format — ``png``, ``jpeg``, ``pdf``, ``pptx``, or ``zip``. Multi-page PNG/JPEG exports surface as ``zip`` (per-page files inside).
  - `url` string, nullable — Signed download URL once the export completes. ``null`` while running.
  - `error` string, nullable — Failure detail when ``status='failed'``.
  - `retry_after_seconds` integer, nullable — Set while ``is_terminal`` is False — suggested poll interval.
  - `total_pages` integer, nullable — Total page count for the source canvas (set on completion).

## Other responses

- `401` — Authentication required.
- `403` — Permission denied for this scope.
- `404` — Resource not found.
- `409` — Conflict (idempotency / resource state).
- `422` — Request validation failed.
- `429` — Rate limit exceeded.
- `500` — Internal error.

---

[API](https://skmtc.net/moda/apis/moda-public-api.md) · [All operations](https://skmtc.net/moda/apis/moda-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/moda/moda-public-api/versions/b34cb4cca59e/schema)
