presentations.ai

Decks

Create decks asynchronously from prompts, typed sources, or a caller-edited outline, then poll, inspect, and download the rendered result.

GET
/decks

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
AuthorizationBearer <token>

In: header

Query Parameters

project_id?|null
flag?|null
sort?DeckSort

Ordering for the deck list query.

Default"RECENT"

Value in

  • "RECENT"
  • "NAME"
  • "UPDATED"
  • "CREATED"
search?string|null
page?Page
Range1 <= value
Default1
limit?Limit
Range1 <= value <= 200
Default50

Response 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}
POST
/decks

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
AuthorizationBearer <token>

In: header

Header Parameters

Request-Id*Request-Id

Required caller request ID; reuse it to safely retry this create.

Match^[A-Za-z0-9][A-Za-z0-9._:~-]{0,254}$
Length1 <= length <= 255
Prefer?|

Optional 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"  }}
POST
/decks/stream

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
AuthorizationBearer <token>

In: header

Query Parameters

wait?Wait

Seconds to stream request status before detaching (0-180).

Range0 <= value <= 180
Default180

Header Parameters

Request-Id*Request-Id

Caller request ID shared with POST /decks retries.

Match^[A-Za-z0-9][A-Za-z0-9._:~-]{0,254}$
Length1 <= length <= 255

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

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"    }  }}
GET
/decks/{deck_id}

Fetch deck metadata, latest generation status, and existing export artifacts.

Authorization

HTTPBearer
AuthorizationBearer <token>

In: header

Path Parameters

deck_id*Deck Id
Formatuuid

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"
{  "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"    }  ]}
PATCH
/decks/{deck_id}

Update deck metadata without starting generation or creating an export.

Authorization

HTTPBearer
AuthorizationBearer <token>

In: header

Path Parameters

deck_id*Deck Id
Formatuuid

Request 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}
DELETE
/decks/{deck_id}

Soft-delete a deck; the operation is idempotent for an already deleted deck.

Authorization

HTTPBearer
AuthorizationBearer <token>

In: header

Path Parameters

deck_id*Deck Id
Formatuuid

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"
Empty
DELETE
/decks/{deck_id}/flags/{flag}

Remove one user-private organizational flag from a deck.

Authorization

HTTPBearer
AuthorizationBearer <token>

In: header

Path Parameters

deck_id*Deck Id
Formatuuid
flag*"STARRED"

Kinds 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"
Empty
PUT
/decks/{deck_id}/flags/{flag}

Set a user-private organizational flag such as starred or archived.

Authorization

HTTPBearer
AuthorizationBearer <token>

In: header

Path Parameters

deck_id*Deck Id
Formatuuid
flag*"STARRED"

Kinds 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"
Empty
GET
/decks/{deck_id}/thumbnail

Stream the current JPEG thumbnail; return 404 until one is available.

Authorization

HTTPBearer
AuthorizationBearer <token>

In: header

Path Parameters

deck_id*Deck Id
Formatuuid

Query Parameters

width?|

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
GET
/decks/{deck_id}/exports

Most-recent-first export artifacts for a deck.

Authorization

HTTPBearer
AuthorizationBearer <token>

In: header

Path Parameters

deck_id*Deck Id
Formatuuid

Query Parameters

page?Page
Range1 <= value
Default1
limit?Limit
Range1 <= value <= 200
Default200

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/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}
GET
/decks/{deck_id}/exports/{export_id}/content

Stream a produced export artifact.

Authorization

HTTPBearer
AuthorizationBearer <token>

In: header

Path Parameters

deck_id*Deck Id
Formatuuid
export_id*Export Id
Formatuuid

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/exports/497f6eca-6276-4993-bfeb-53cbbbba6f08/content"
null
POST
/decks/outline/stream

Compatibility stream; use POST /outlines for JSON or SSE output.

Authorization

HTTPBearer
AuthorizationBearer <token>

In: header

Header Parameters

accept-language?string|null

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"  }'
Empty
GET
/decks/{deck_id}/outline

Durable outline state for a generated deck.

Authorization

HTTPBearer
AuthorizationBearer <token>

In: header

Path Parameters

deck_id*Deck Id
Formatuuid

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/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"      }    ]  }}
POST
/decks/slides

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
AuthorizationBearer <token>

In: header

Header Parameters

Idempotency-Key?string|null

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": {}}
POST
/decks/slides/change

Stateless transform of slide content onto a different graphic type — the v8 change fill.

Authorization

HTTPBearer
AuthorizationBearer <token>

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": {}}
GET
/decks/{deck_id}/grants

List all active grants on a deck.

Authorization

HTTPBearer
AuthorizationBearer <token>

In: header

Path Parameters

deck_id*Deck Id
Formatuuid

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/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"  }]
POST
/decks/{deck_id}/grants

Create or update a grant on a deck.

Authorization

HTTPBearer
AuthorizationBearer <token>

In: header

Path Parameters

deck_id*Deck Id
Formatuuid

Request 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"}
PATCH
/decks/{deck_id}/grants/{grant_id}

Update the role on a deck grant.

Authorization

HTTPBearer
AuthorizationBearer <token>

In: header

Path Parameters

grant_id*Grant Id
Formatuuid
deck_id*Deck Id
Formatuuid

Request 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"}
DELETE
/decks/{deck_id}/grants/{grant_id}

Delete a deck grant.

Authorization

HTTPBearer
AuthorizationBearer <token>

In: header

Path Parameters

grant_id*Grant Id
Formatuuid
deck_id*Deck Id
Formatuuid

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/grants/497f6eca-6276-4993-bfeb-53cbbbba6f08"
Empty
GET
/decks/{deck_id}/share-link

Fetch the deck's active share link URL; 404 if link sharing is off.

Authorization

HTTPBearer
AuthorizationBearer <token>

In: header

Path Parameters

deck_id*Deck Id
Formatuuid

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/share-link"
{  "url": "http://example.com",  "password_set": false,  "expires_at": "2019-08-24T14:15:22Z"}
POST
/decks/{deck_id}/share-link

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
AuthorizationBearer <token>

In: header

Path Parameters

deck_id*Deck Id
Formatuuid

Query Parameters

rotate?Rotate
Defaultfalse

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/share-link"
{  "url": "http://example.com",  "password_set": false,  "expires_at": "2019-08-24T14:15:22Z"}
DELETE
/decks/{deck_id}/share-link

Disable link-sharing for the deck.

Authorization

HTTPBearer
AuthorizationBearer <token>

In: header

Path Parameters

deck_id*Deck Id
Formatuuid

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/share-link"
Empty