Decks
Create decks asynchronously from prompts, typed sources, or a caller-edited outline, then poll, inspect, and download the rendered result.
List accessible decks with project, flag, sort, search, and pagination filters.
Decks that have no slides yet (generation still running, or never completed) are omitted; fetch those by id.
Authorization
HTTPBearer In: header
Query Parameters
Ordering for the deck list query.
"RECENT"Value in
- "RECENT"
- "NAME"
- "UPDATED"
- "CREATED"
1 <= value11 <= value <= 20050Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/decks"{ "data": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9", "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9", "source_deck_id": "b30bc0f3-d119-4f75-a8a4-cbaeb4d3e344", "legacy_deck_id": "string", "created_by": "ee824cad-d7a6-4f48-87dc-e8461a9201c4", "name": "string", "visibility": "PROJECT", "thumbnail_url": "string", "thumbnails": [ { "url": "string", "width": 0, "height": 0 } ], "has_share_link": false, "archived_at": "2019-08-24T14:15:22Z", "deleted_at": "2019-08-24T14:15:22Z", "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "flags": [ "STARRED" ], "version": "v1", "origin_version": "v1", "permissions": { "workspace_role": "OWNER", "project_role": "LEAD", "deck_grant_role": "VIEW", "is_creator": true, "capabilities": [ "workspace.read" ] }, "shared_with_me": true } ], "page": 0, "limit": 0, "total": 0}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "VALIDATION_FAILED", "details": { "errors": [ { "loc": [ "header", "Request-Id" ], "msg": "Field required", "type": "missing" } ] }, "message": "Request failed validation.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}Create a deck and run supplied content through final export.
A request with generation inputs requires Request-Id, returns 202 +
Location by default, and accepts Prefer: wait=N up to 180 seconds. Supply
either a prompt and/or typed document sources, or a complete authored
outline. Authored outlines skip outline generation but still run slides and
export. Same-ID/different-body returns a rich 409 suggesting a
version-suffixed request ID.
Authorization
HTTPBearer In: header
Header Parameters
Required caller request ID; reuse it to safely retry this create.
^[A-Za-z0-9][A-Za-z0-9._:~-]{0,254}$1 <= length <= 255Optional bounded generation wait: wait=N, where N is 0-180.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Create a deck and optionally run generation through final export.
The run covers outline -> slides -> export. source_text is raw text used
as source material, equivalent to an attached document but with no upload
or extraction step. Files-only generates from the attached documents;
extraction must have completed (409 otherwise).
A caller-authored outline skips outline generation and runs the supplied
structure directly through slides and export. It cannot be combined with a
prompt or document sources. Use POST /outlines for stateless preview and
review before creating a deck.
At least one generation input is required. Omitted name defaults to a placeholder, replaced by the requested or authored title when available.
Create a deck and optionally run generation through final export.
The run covers outline -> slides -> export. source_text is raw text used
as source material, equivalent to an attached document but with no upload
or extraction step. Files-only generates from the attached documents;
extraction must have completed (409 otherwise).
A caller-authored outline skips outline generation and runs the supplied
structure directly through slides and export. It cannot be combined with a
prompt or document sources. Use POST /outlines for stateless preview and
review before creating a deck.
At least one generation input is required. Omitted name defaults to a placeholder, replaced by the requested or authored title when available.
Create a deck and optionally run generation through final export.
The run covers outline -> slides -> export. source_text is raw text used
as source material, equivalent to an attached document but with no upload
or extraction step. Files-only generates from the attached documents;
extraction must have completed (409 otherwise).
A caller-authored outline skips outline generation and runs the supplied
structure directly through slides and export. It cannot be combined with a
prompt or document sources. Use POST /outlines for stateless preview and
review before creating a deck.
At least one generation input is required. Omitted name defaults to a placeholder, replaced by the requested or authored title when available.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/decks" \ -H "Request-Id: string" \ -H "Content-Type: application/json" \ -d '{ "name": "Launch plan", "prompt": "Explain our launch plan to sales leadership.", "slide_count": "10", "export_format": "PPTX" }'{ "request_id": "q3-customer-review-v1", "deck_id": "dc2d4f8d-a52a-4c58-aeb8-02b4d1dc9001", "status": "COMPLETED", "stage": "COMPLETED", "status_url": "https://api.presentations.ai/api/v1/requests/q3-customer-review-v1", "error": null, "created_at": "2026-08-14T09:30:00Z", "updated_at": "2026-08-14T09:31:42Z", "warnings": [], "export": { "id": "7ec2d749-85dc-4e02-8bf2-76b663d5c002", "deck_id": "dc2d4f8d-a52a-4c58-aeb8-02b4d1dc9001", "format": "PPTX", "content_type": "application/vnd.openxmlformats-officedocument.presentationml.presentation", "size_bytes": 1843200, "download_url": "https://api.presentations.ai/api/v1/exports/7ec2d749-85dc-4e02-8bf2-76b663d5c002/download?token=example", "created_at": "2026-08-14T09:31:42Z" }}{ "request_id": "q3-customer-review-v1", "deck_id": "dc2d4f8d-a52a-4c58-aeb8-02b4d1dc9001", "status": "RUNNING", "stage": "SLIDES", "status_url": "https://api.presentations.ai/api/v1/requests/q3-customer-review-v1", "error": null, "created_at": "2026-08-14T09:30:00Z", "updated_at": "2026-08-14T09:30:04Z", "warnings": [], "export": null}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "REQUEST_ID_CONFLICT", "message": "string", "details": { "deck_id": "9a69d1f4-7dd8-49b6-bc74-49de70b854da", "resolution": "reuse_original_payload_or_increment_request_id_version" }, "trace_id": "stringstringstringstringstringst" }}{ "error": { "code": "VALIDATION_FAILED", "details": { "errors": [ { "loc": [ "header", "Request-Id" ], "msg": "Field required", "type": "missing" } ] }, "message": "Request failed validation.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}Create or replay a durable deck generation and stream bounded status.
This is the streaming transport for the same idempotent operation as
POST /decks. Disconnecting or reaching the wait bound never cancels the
generation; callers resume through the emitted request.status_url.
Authorization
HTTPBearer In: header
Query Parameters
Seconds to stream request status before detaching (0-180).
0 <= value <= 180180Header Parameters
Caller request ID shared with POST /decks retries.
^[A-Za-z0-9][A-Za-z0-9._:~-]{0,254}$1 <= length <= 255Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Create a deck and optionally run generation through final export.
The run covers outline -> slides -> export. source_text is raw text used
as source material, equivalent to an attached document but with no upload
or extraction step. Files-only generates from the attached documents;
extraction must have completed (409 otherwise).
A caller-authored outline skips outline generation and runs the supplied
structure directly through slides and export. It cannot be combined with a
prompt or document sources. Use POST /outlines for stateless preview and
review before creating a deck.
At least one generation input is required. Omitted name defaults to a placeholder, replaced by the requested or authored title when available.
Create a deck and optionally run generation through final export.
The run covers outline -> slides -> export. source_text is raw text used
as source material, equivalent to an attached document but with no upload
or extraction step. Files-only generates from the attached documents;
extraction must have completed (409 otherwise).
A caller-authored outline skips outline generation and runs the supplied
structure directly through slides and export. It cannot be combined with a
prompt or document sources. Use POST /outlines for stateless preview and
review before creating a deck.
At least one generation input is required. Omitted name defaults to a placeholder, replaced by the requested or authored title when available.
Create a deck and optionally run generation through final export.
The run covers outline -> slides -> export. source_text is raw text used
as source material, equivalent to an attached document but with no upload
or extraction step. Files-only generates from the attached documents;
extraction must have completed (409 otherwise).
A caller-authored outline skips outline generation and runs the supplied
structure directly through slides and export. It cannot be combined with a
prompt or document sources. Use POST /outlines for stateless preview and
review before creating a deck.
At least one generation input is required. Omitted name defaults to a placeholder, replaced by the requested or authored title when available.
Response Body
text/event-stream
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/decks/stream" \ -H "Request-Id: string" \ -H "Content-Type: application/json" \ -d '{}'{ "type": "accepted", "deck": { "request_id": "string", "deck_id": "9a69d1f4-7dd8-49b6-bc74-49de70b854da", "status": "CREATED", "stage": "QUEUED", "status_url": "http://example.com", "error": "string", "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "warnings": [ { "message": "string", "stage": "string", "source": "string", "retryable": false, "occurred_at": "2019-08-24T14:15:22Z" } ], "export": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "deck_id": "9a69d1f4-7dd8-49b6-bc74-49de70b854da", "format": "PPTX", "content_type": "string", "size_bytes": 0, "download_url": "string", "created_at": "2019-08-24T14:15:22Z" } }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "REQUEST_ID_CONFLICT", "message": "string", "details": { "deck_id": "9a69d1f4-7dd8-49b6-bc74-49de70b854da", "resolution": "reuse_original_payload_or_increment_request_id_version" }, "trace_id": "stringstringstringstringstringst" }}{ "error": { "code": "VALIDATION_FAILED", "details": { "errors": [ { "loc": [ "header", "Request-Id" ], "msg": "Field required", "type": "missing" } ] }, "message": "Request failed validation.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}Fetch deck metadata, latest generation status, and existing export artifacts.
Authorization
HTTPBearer In: header
Path Parameters
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/decks/497f6eca-6276-4993-bfeb-53cbbbba6f08"{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9", "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9", "source_deck_id": "b30bc0f3-d119-4f75-a8a4-cbaeb4d3e344", "legacy_deck_id": "string", "created_by": "ee824cad-d7a6-4f48-87dc-e8461a9201c4", "name": "string", "visibility": "PROJECT", "thumbnail_url": "string", "thumbnails": [ { "url": "string", "width": 0, "height": 0 } ], "has_share_link": false, "archived_at": "2019-08-24T14:15:22Z", "deleted_at": "2019-08-24T14:15:22Z", "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "flags": [ "STARRED" ], "version": "v1", "origin_version": "v1", "permissions": { "workspace_role": "OWNER", "project_role": "LEAD", "deck_grant_role": "VIEW", "is_creator": true, "capabilities": [ "workspace.read" ] }, "shared_with_me": true, "status": "CREATED", "exports": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "deck_id": "9a69d1f4-7dd8-49b6-bc74-49de70b854da", "format": "PPTX", "content_type": "string", "size_bytes": 0, "download_url": "string", "created_at": "2019-08-24T14:15:22Z" } ]}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "VALIDATION_FAILED", "details": { "errors": [ { "loc": [ "header", "Request-Id" ], "msg": "Field required", "type": "missing" } ] }, "message": "Request failed validation.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}Update deck metadata without starting generation or creating an export.
Authorization
HTTPBearer In: header
Path Parameters
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Partial update of a deck. project_id=None keeps the current value.
version flips which content the app renders (Deck.active_version) —
never origin_version, which is immutable provenance. Only "v1"/"v2" are
accepted; the service layer rejects a flip to a version the deck has no
real materialized content for (see deck_service.update).
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PATCH "https://example.com/decks/497f6eca-6276-4993-bfeb-53cbbbba6f08" \ -H "Content-Type: application/json" \ -d '{}'{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9", "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9", "source_deck_id": "b30bc0f3-d119-4f75-a8a4-cbaeb4d3e344", "legacy_deck_id": "string", "created_by": "ee824cad-d7a6-4f48-87dc-e8461a9201c4", "name": "string", "visibility": "PROJECT", "thumbnail_url": "string", "thumbnails": [ { "url": "string", "width": 0, "height": 0 } ], "has_share_link": false, "archived_at": "2019-08-24T14:15:22Z", "deleted_at": "2019-08-24T14:15:22Z", "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "flags": [ "STARRED" ], "version": "v1", "origin_version": "v1", "permissions": { "workspace_role": "OWNER", "project_role": "LEAD", "deck_grant_role": "VIEW", "is_creator": true, "capabilities": [ "workspace.read" ] }, "shared_with_me": true}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "VALIDATION_FAILED", "details": { "errors": [ { "loc": [ "header", "Request-Id" ], "msg": "Field required", "type": "missing" } ] }, "message": "Request failed validation.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}Soft-delete a deck; the operation is idempotent for an already deleted deck.
Authorization
HTTPBearer In: header
Path Parameters
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X DELETE "https://example.com/decks/497f6eca-6276-4993-bfeb-53cbbbba6f08"{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "VALIDATION_FAILED", "details": { "errors": [ { "loc": [ "header", "Request-Id" ], "msg": "Field required", "type": "missing" } ] }, "message": "Request failed validation.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}Remove one user-private organizational flag from a deck.
Authorization
HTTPBearer In: header
Path Parameters
uuidKinds of per-user deck flag.
Value in
- "STARRED"
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X DELETE "https://example.com/decks/497f6eca-6276-4993-bfeb-53cbbbba6f08/flags/STARRED"{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "VALIDATION_FAILED", "details": { "errors": [ { "loc": [ "header", "Request-Id" ], "msg": "Field required", "type": "missing" } ] }, "message": "Request failed validation.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}Set a user-private organizational flag such as starred or archived.
Authorization
HTTPBearer In: header
Path Parameters
uuidKinds of per-user deck flag.
Value in
- "STARRED"
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PUT "https://example.com/decks/497f6eca-6276-4993-bfeb-53cbbbba6f08/flags/STARRED"{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "VALIDATION_FAILED", "details": { "errors": [ { "loc": [ "header", "Request-Id" ], "msg": "Field required", "type": "missing" } ] }, "message": "Request failed validation.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}Stream the current JPEG thumbnail; return 404 until one is available.
Authorization
HTTPBearer In: header
Path Parameters
uuidQuery Parameters
Stored size to serve (see thumbnails); the largest by default.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/decks/497f6eca-6276-4993-bfeb-53cbbbba6f08/thumbnail"null{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "VALIDATION_FAILED", "details": { "errors": [ { "loc": [ "header", "Request-Id" ], "msg": "Field required", "type": "missing" } ] }, "message": "Request failed validation.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}Most-recent-first export artifacts for a deck.
Authorization
HTTPBearer In: header
Path Parameters
uuidQuery Parameters
1 <= value11 <= value <= 200200Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/decks/497f6eca-6276-4993-bfeb-53cbbbba6f08/exports"{ "data": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "deck_id": "9a69d1f4-7dd8-49b6-bc74-49de70b854da", "format": "PPTX", "content_type": "string", "size_bytes": 0, "download_url": "string", "created_at": "2019-08-24T14:15:22Z" } ], "page": 0, "limit": 0, "total": 0}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "VALIDATION_FAILED", "details": { "errors": [ { "loc": [ "header", "Request-Id" ], "msg": "Field required", "type": "missing" } ] }, "message": "Request failed validation.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}Stream a produced export artifact.
Authorization
HTTPBearer In: header
Path Parameters
uuiduuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/decks/497f6eca-6276-4993-bfeb-53cbbbba6f08/exports/497f6eca-6276-4993-bfeb-53cbbbba6f08/content"null{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "VALIDATION_FAILED", "details": { "errors": [ { "loc": [ "header", "Request-Id" ], "msg": "Field required", "type": "missing" } ] }, "message": "Request failed validation.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}Legacy stateless outline stream
DeprecatedCompatibility stream; use POST /outlines for JSON or SSE output.
Authorization
HTTPBearer In: header
Header Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Single-shot outline generation from a deck title. Stateless — persists nothing.
Response Body
text/event-stream
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/decks/outline/stream" \ -H "Content-Type: application/json" \ -d '{ "deck_title": "string" }'{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "VALIDATION_FAILED", "details": { "errors": [ { "loc": [ "header", "Request-Id" ], "msg": "Field required", "type": "missing" } ] }, "message": "Request failed validation.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}Durable outline state for a generated deck.
Authorization
HTTPBearer In: header
Path Parameters
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/decks/497f6eca-6276-4993-bfeb-53cbbbba6f08/outline"{ "deck_id": "9a69d1f4-7dd8-49b6-bc74-49de70b854da", "deck_session_id": "00d319eb-57cf-4159-a3c7-763095c2d2a6", "status": "DRAFT", "outline": { "documentTitle": "string", "hook": "string", "researchSummary": "string", "contentLanguage": "string", "footerText": "string", "imagePrompt": "string", "contentMode": "string", "companyName": "string", "companyDomain": "string", "slides": [ { "heading": "string", "subheading": "string", "description": "string", "category": "string", "useCase": "string", "speakerNotes": "string", "visualComposition": [ "string" ], "graphicSubtypes": { "property1": "string", "property2": "string" }, "graphics": [ { "type": "string", "heading": "string", "items": [ { "h": "string", "b": "string", "v": "string", "s": "string", "i": "string", "sub": [ "string" ], "tags": [ "string" ], "metric": "string", "entity": "string", "entityDomain": "string", "trend": "string", "status": "string", "delta": "string", "period": "string" } ], "rows": [ "string" ], "extra": [ { "h": "string", "b": "string", "v": "string", "s": "string", "i": "string", "sub": [ "string" ], "tags": [ "string" ], "metric": "string", "entity": "string", "entityDomain": "string", "trend": "string", "status": "string", "delta": "string", "period": "string" } ], "callout": "string", "stamp": "string", "footnote": "string", "ref": { "label": "string", "v": "string" }, "highlight": { "kind": "string", "at": "string", "text": "string" } } ], "imageQuery": "string", "sources": [ { "domain": "string", "text": "string", "url": "string" } ], "confidence": "string" } ] }, "final_outline": { "documentTitle": "string", "hook": "string", "researchSummary": "string", "contentLanguage": "string", "footerText": "string", "imagePrompt": "string", "contentMode": "string", "companyName": "string", "companyDomain": "string", "slides": [ { "heading": "string", "subheading": "string", "description": "string", "category": "string", "useCase": "string", "speakerNotes": "string", "visualComposition": [ "string" ], "graphicSubtypes": { "property1": "string", "property2": "string" }, "graphics": [ { "type": "string", "heading": "string", "items": [ { "h": "string", "b": "string", "v": "string", "s": "string", "i": "string", "sub": [ "string" ], "tags": [ "string" ], "metric": "string", "entity": "string", "entityDomain": "string", "trend": "string", "status": "string", "delta": "string", "period": "string" } ], "rows": [ "string" ], "extra": [ { "h": "string", "b": "string", "v": "string", "s": "string", "i": "string", "sub": [ "string" ], "tags": [ "string" ], "metric": "string", "entity": "string", "entityDomain": "string", "trend": "string", "status": "string", "delta": "string", "period": "string" } ], "callout": "string", "stamp": "string", "footnote": "string", "ref": { "label": "string", "v": "string" }, "highlight": { "kind": "string", "at": "string", "text": "string" } } ], "imageQuery": "string", "sources": [ { "domain": "string", "text": "string", "url": "string" } ], "confidence": "string" } ] }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "VALIDATION_FAILED", "details": { "errors": [ { "loc": [ "header", "Request-Id" ], "msg": "Field required", "type": "missing" } ] }, "message": "Request failed validation.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}Stateless single-slide fill from a caller-picked variation — the v8 fill.
graphics_xml (the v8 writer's structured graphics) is the content when given — the
same fill the app runs for v8 decks; otherwise heading + description are the content
for the v8 add-slide fill, which fills the picked variation's elements from plain text.
Costs one generated slide's credits, refunded if the fill fails. Send an
Idempotency-Key to retry safely: a key that already paid is a 409.
Authorization
HTTPBearer In: header
Header Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Stateless slide generation (external API) — deck size comes from the caller.
Always the v8 fill. Content comes from graphics_xml (the v8 writer's structured
graphics for the slide) when given, else from heading + description as plain content
(the v8 add-slide fill); one of the two is required.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/decks/slides" \ -H "Content-Type: application/json" \ -d '{ "selected_template": "string", "elements": [ {} ] }'{ "variation_name": "string", "data": {}}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "VALIDATION_FAILED", "details": { "errors": [ { "loc": [ "header", "Request-Id" ], "msg": "Field required", "type": "missing" } ] }, "message": "Request failed validation.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}Stateless transform of slide content onto a different graphic type — the v8 change fill.
Authorization
HTTPBearer In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
V8 change: convert existing slide CONTENT into a TARGET graphic type (+ subtype).
Runs the v8 filler (JSON). An optional Exa answer fills in data the content lacks (target-aware).
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/decks/slides/change" \ -H "Content-Type: application/json" \ -d '{ "content": "string", "target_template": "string" }'{ "variation_name": "string", "data": {}}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "VALIDATION_FAILED", "details": { "errors": [ { "loc": [ "header", "Request-Id" ], "msg": "Field required", "type": "missing" } ] }, "message": "Request failed validation.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}List all active grants on a deck.
Authorization
HTTPBearer In: header
Path Parameters
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/decks/497f6eca-6276-4993-bfeb-53cbbbba6f08/grants"[ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "deck_id": "9a69d1f4-7dd8-49b6-bc74-49de70b854da", "subject_type": "USER", "subject_user_id": "1707c861-e9ed-48f7-9f9f-3d21797cfdf4", "subject_email": "string", "subject": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "display_name": "string", "avatar_url": "string" }, "role": "VIEW", "granted_by": "a8e4a498-f971-4203-a849-4967743579d4", "created_at": "2019-08-24T14:15:22Z", "membership_status": "member", "workspace_role": "OWNER" }]{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "VALIDATION_FAILED", "details": { "errors": [ { "loc": [ "header", "Request-Id" ], "msg": "Field required", "type": "missing" } ] }, "message": "Request failed validation.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}Create or update a grant on a deck.
Authorization
HTTPBearer In: header
Path Parameters
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Create or update a per-deck grant.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/decks/497f6eca-6276-4993-bfeb-53cbbbba6f08/grants" \ -H "Content-Type: application/json" \ -d '{ "subject": "string", "role": "VIEW" }'{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "deck_id": "9a69d1f4-7dd8-49b6-bc74-49de70b854da", "subject_type": "USER", "subject_user_id": "1707c861-e9ed-48f7-9f9f-3d21797cfdf4", "subject_email": "string", "subject": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "display_name": "string", "avatar_url": "string" }, "role": "VIEW", "granted_by": "a8e4a498-f971-4203-a849-4967743579d4", "created_at": "2019-08-24T14:15:22Z", "membership_status": "member", "workspace_role": "OWNER"}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "VALIDATION_FAILED", "details": { "errors": [ { "loc": [ "header", "Request-Id" ], "msg": "Field required", "type": "missing" } ] }, "message": "Request failed validation.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}Update the role on a deck grant.
Authorization
HTTPBearer In: header
Path Parameters
uuiduuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Partial update of a deck grant.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PATCH "https://example.com/decks/497f6eca-6276-4993-bfeb-53cbbbba6f08/grants/497f6eca-6276-4993-bfeb-53cbbbba6f08" \ -H "Content-Type: application/json" \ -d '{}'{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "deck_id": "9a69d1f4-7dd8-49b6-bc74-49de70b854da", "subject_type": "USER", "subject_user_id": "1707c861-e9ed-48f7-9f9f-3d21797cfdf4", "subject_email": "string", "subject": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "display_name": "string", "avatar_url": "string" }, "role": "VIEW", "granted_by": "a8e4a498-f971-4203-a849-4967743579d4", "created_at": "2019-08-24T14:15:22Z", "membership_status": "member", "workspace_role": "OWNER"}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "VALIDATION_FAILED", "details": { "errors": [ { "loc": [ "header", "Request-Id" ], "msg": "Field required", "type": "missing" } ] }, "message": "Request failed validation.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}Delete a deck grant.
Authorization
HTTPBearer In: header
Path Parameters
uuiduuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X DELETE "https://example.com/decks/497f6eca-6276-4993-bfeb-53cbbbba6f08/grants/497f6eca-6276-4993-bfeb-53cbbbba6f08"{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "VALIDATION_FAILED", "details": { "errors": [ { "loc": [ "header", "Request-Id" ], "msg": "Field required", "type": "missing" } ] }, "message": "Request failed validation.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}Fetch the deck's active share link URL; 404 if link sharing is off.
Authorization
HTTPBearer In: header
Path Parameters
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/decks/497f6eca-6276-4993-bfeb-53cbbbba6f08/share-link"{ "url": "http://example.com", "password_set": false, "expires_at": "2019-08-24T14:15:22Z"}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "VALIDATION_FAILED", "details": { "errors": [ { "loc": [ "header", "Request-Id" ], "msg": "Field required", "type": "missing" } ] }, "message": "Request failed validation.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}Enable the deck's share link and return its URL.
Reuses the existing link so the URL is stable; pass rotate=true to mint a
fresh token (the previous URL stops working).
Authorization
HTTPBearer In: header
Path Parameters
uuidQuery Parameters
falseResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/decks/497f6eca-6276-4993-bfeb-53cbbbba6f08/share-link"{ "url": "http://example.com", "password_set": false, "expires_at": "2019-08-24T14:15:22Z"}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "VALIDATION_FAILED", "details": { "errors": [ { "loc": [ "header", "Request-Id" ], "msg": "Field required", "type": "missing" } ] }, "message": "Request failed validation.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}Disable link-sharing for the deck.
Authorization
HTTPBearer In: header
Path Parameters
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X DELETE "https://example.com/decks/497f6eca-6276-4993-bfeb-53cbbbba6f08/share-link"{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "VALIDATION_FAILED", "details": { "errors": [ { "loc": [ "header", "Request-Id" ], "msg": "Field required", "type": "missing" } ] }, "message": "Request failed validation.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}{ "error": { "code": "NOT_FOUND", "message": "Deck not found.", "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736" }}