> ## Documentation Index
> Fetch the complete documentation index at: https://docs.chroniclehq.com/llms.txt
> Use this file to discover all available pages before exploring further.

# PATCH /presentations/:id

> Updates presentation metadata. In the current version, only title is supported.

<RequestExample>
  ```shellscript cURL theme={null}
  curl "https://api.chroniclehq.com/api/v1/presentations/pres_123" \
    -X PATCH \
    -H "Authorization: Bearer $API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "title": "Updated deck title"
    }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    "https://api.chroniclehq.com/api/v1/presentations/pres_123",
    {
      method: "PATCH",
      headers: {
        Authorization: `Bearer ${API_KEY}`,
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        title: "Updated deck title",
      }),
    }
  );

  const data = await response.json();
  console.log(data);
  ```
</RequestExample>

### Parameters

<ParamField path="id" type="string" required>
  The presentation ID
</ParamField>

<ParamField body="title" type="string">
  Updated presentation title
</ParamField>

### Response

<ResponseExample>
  ```json Response theme={null}
  {
    "id": "pres_123",
    "title": "Updated deck title",
    "workspace_id": "ws_123",
    "sections": [],
    "is_public": false,
    "url": "https://app.chroniclehq.com/ws_123/document/pres_123",
    "created_at": "2026-04-30T00:00:00.000Z",
    "updated_at": "2026-04-30T00:05:00.000Z"
  }
  ```
</ResponseExample>

<ResponseField name="id" type="string">
  Presentation ID
</ResponseField>

<ResponseField name="title" type="string">
  Presentation title
</ResponseField>

<ResponseField name="workspace_id" type="string">
  Workspace ID that owns the presentation
</ResponseField>

<ResponseField name="sections" type="array">
  Presentation slides
</ResponseField>

<ResponseField name="is_public" type="boolean">
  Whether the presentation is public
</ResponseField>

<ResponseField name="url" type="string">
  Canonical presentation URL
</ResponseField>

<ResponseField name="created_at" type="string">
  ISO timestamp when the presentation was created
</ResponseField>

<ResponseField name="updated_at" type="string">
  ISO timestamp when the presentation was last updated
</ResponseField>

***

## FAQs

<AccordionGroup>
  <Accordion title="What can I update with this endpoint?">
    In v1, this endpoint supports updating the presentation title.

    Other presentation fields are not editable through this route.
  </Accordion>

  <Accordion title="What happens if I send an empty request body?">
    Chronicle treats an empty body as a no-op and returns the current presentation state.

    If you want to make a change, include a supported field in the request body.
  </Accordion>

  <Accordion title="Can I update sections or slide content here?">
    No. This endpoint does not update presentation content.

    Use it only for supported presentation properties.
  </Accordion>
</AccordionGroup>

***

## Related posts

* [GET /presentations/:id](/get-presentations-id)
* [POST /presentations](/post-presentations)
* [Error codes](/error-codes)
