---
title: "GET /v1/presentations/{presentationId}/source"
description: "The published HTML and assets, to edit one and publish it back."
canonical: https://bisque.cloud/docs/api/presentations/get-source
---

# Get a presentation's source

The published HTML and assets, to edit one and publish it back.

Page: https://bisque.cloud/docs/api/presentations/get-source

`GET /v1/presentations/{presentationId}/source` · API v1 · [versioning](/docs/api/versioning)

The HTML a presentation was published from, whole, with what a republish has to send again: its `context.md`, each file under `assets/` with a download link that works for one hour, its `slug`, `visibility` and `title`, and the `voice` and speed its slides were spoken in. Edit `indexHtml` and publish it back to the same `presentationId` with `POST /v1/presentations`; slides whose narration did not change keep their audio, and the version you replaced stays in the history. Only for a caller who may republish it; anyone else, on a public presentation too, gets 404. Reading changes nothing. API-key callers only.

## Authentication

Send an API key as `Authorization: Bearer bisque_live_…`. Keys come from [bisque.cloud/settings/keys](https://bisque.cloud/settings/keys); see [Authentication](/docs/api/authentication).

## Request

| Parameter | In | Meaning |
| --- | --- | --- |
| `presentationId` | path, required |  |

## Example

```bash
curl -X GET https://bisque.cloud/v1/presentations/{presentationId}/source \
  -H "Authorization: Bearer $BISQUE_API_KEY"
```

## Response

**200**: The source.

Errors:

- `401`: Missing or invalid credential.
- `404`: Not a presentation you can republish (`PRESENTATION_NOT_FOUND`), or its bundle holds no HTML (`NO_EDITABLE_SOURCE`).
- `409`: It is still publishing (`PRESENTATION_NOT_READY`), so its source is changing.

## Other endpoints

| Page | Call | What it does |
| --- | --- | --- |
| [Create a presentation](/docs/api/presentations/create) | `POST /v1/presentations` | Put the slides up now and narrate them one at a time. |
| [Get a presentation](/docs/api/presentations/get) | `GET /v1/presentations/{presentationId}` | The open creation, to resume it from a new session. |
| [Add slides](/docs/api/presentations/add-slides) | `PATCH /v1/presentations/{presentationId}` | Append sections while the creation is open. |
| [Update a slide](/docs/api/presentations/update-slide) | `PATCH /v1/presentations/{presentationId}/slides/{slideKey}` | Give one slide its narration after the MP3 is uploaded. |
| [Wait for an answer](/docs/api/presentations/wait-for-answer) | `GET /v1/presentations/{presentationId}/surveys/{surveyId}/response` | Hold for the viewer's answer to a question on a slide. |
| [Finalize](/docs/api/presentations/finalize) | `POST /v1/presentations/{presentationId}:finalize` | Claim the version. Slides still without audio stay silent. |
| [Read as text](/docs/api/presentations/read-as-text) | `GET /api/presentations/context` | Any shared presentation as a transcript. No credential needed. |
