---
title: "PATCH /v1/presentations/{presentationId}/slides/{slideKey}"
description: "Give one slide its narration after the MP3 is uploaded."
canonical: https://bisque.cloud/docs/api/presentations/update-slide
---

# Update a slide

Give one slide its narration after the MP3 is uploaded.

Page: https://bisque.cloud/docs/api/presentations/update-slide

`PATCH /v1/presentations/{presentationId}/slides/{slideKey}` · API v1 · [versioning](/docs/api/versioning)

PUT the MP3 to the upload target the creation returned, then send its word timings, duration and digest here. The slide starts playing for anyone already watching, and `audioProgress` on the presentation advances. API-key callers only.

## Authentication

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

## Request

| Parameter | In | Meaning |
| --- | --- | --- |
| `presentationId` | path, required |  |
| `slideKey` | path, required | e.g. `slide-04`, as the creation named it. |

`Content-Type: application/json`.

## Example

```bash
curl -X PATCH https://bisque.cloud/v1/presentations/{presentationId}/slides/{slideKey} \
  -H "Authorization: Bearer $BISQUE_API_KEY" \
  -H "Content-Type: application/json" \
  --data @body.json
```

## Response

**200**: Narration counts after this slide.

Errors:

- `400`: The timings do not match the slide's words.
- `401`: Missing or invalid credential.
- `404`: No creation is open for this presentation.

## 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. |
| [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. |
