canvases

Get Export Status

Changed on

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

get/canvases/{canvas_id}/export-status

Request

  • Base URL
    https://api.moda.app/v1
  • URL
    https://api.moda.app/v1/canvases/{canvas_id}/export-status
  • Auth
    HTTP bearer

Path parameters

canvas_idstring 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), as is the prefix over a UUID body (cvs_00000000-0000-4000-8000-000000000000). All three are permanent, supported inputs; only the canonical form is ever emitted.

Example:cvs_01HT9WK8N3M2J4A5Z6P7Q8R9TV

Query parameters

task_idstring required

Export task ID returned by /export when status='in_progress'.

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

task_idstring required

The export task ID.

statusstring required

queued, running, completed, or failed.

is_terminalboolean required

True when status is completed or failed.

canvas_idstring required

Prefixed canvas identifier the export targets.

canvas_urlstring required

Full URL to open the source canvas in the Moda editor.

formatstring required

Delivered format — png, jpeg, pdf, pptx, or zip. Multi-page PNG/JPEG exports surface as zip (per-page files inside).

urlstring nullable

Signed download URL once the export completes. null while running.

errorstring nullable

Failure detail when status='failed'.

error_codestring nullable

Typed failure code when status='failed' and the export lane reported one — e.g. no_renderable_content (terminal: the canvas rendered 0 pages, so a retry without changing the canvas cannot succeed), native_export_declined (terminal: the render lane has no path for this content), or export_requires_paid_plan (terminal: the canvas's workspace is on a plan that does not include the requested format or option — retrying is futile, but the same export without the paid option is not). null when no typed code is available.

retryableboolean nullable

Set when status='failed': false for terminal render failures (retrying the same canvas cannot succeed — fix the content first), true for transient faults where a fresh export attempt can succeed. A failed status is itself terminal for THIS task; retryable says whether starting a new export is worthwhile.

retry_after_secondsinteger nullable

Set while is_terminal is False — suggested poll interval.

total_pagesinteger nullable

Total page count for the source canvas (set on completion).

Example response

{
  "canvas_id": "cvs_01HT9WK8N3M2J4A5Z6P7Q8R9TV"
}

Changes

    • info

      added the non-success response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status