canvases

Import a PowerPoint deck as a new editable slides canvas (async job; free).

Accepts either a multipart file upload or a file_ref pointing at an already-uploaded .pptx (POST /v1/uploads). Returns immediately with a job_id — poll GET /v1/canvases/import-pptx/{job_id} (about every retry_after_ms) until the status is terminal; on success the result carries the new canvas id/URL and slide count. The conversion is the same pipeline the in-app importer uses: embedded media becomes team files, slide masters become page backgrounds, and text/shapes become editable nodes.

Not metered: PPTX import is free in the Moda app and stays free here — every response carries the zero-credit deterministic receipt. Only .pptx (not legacy .ppt) is supported, up to 250MB.

post/canvases/import-pptx

Request

  • Base URL
    https://api.moda.app/v1
  • URL
    https://api.moda.app/v1/canvases/import-pptx
  • Auth
    HTTP bearer

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.

Request body multipart/form-data

filestring binary nullable

The .pptx to import (multipart). For files that exceed the request-body transport limits, upload first (POST /v1/uploads) and pass 'file_ref' instead.

file_refstring nullable

A file_ id from POST /v1/uploads referencing an already-uploaded .pptx. Mutually exclusive with 'file'.

canvas_namestring nullable

Name for the created canvas. Defaults to the deck's filename.

idempotency_keystring nullable

A retried call with the same key replays the stored job envelope (replayed:true) instead of starting a second import.

Response

Successful Response

object required

Changes