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

# GET /presentations/:id

> Fetches a presentation by ID.

<RequestExample>
  ```shellscript cURL theme={null}
  curl "https://api.chroniclehq.com/api/v1/presentations/pres_123" \
    -H "Authorization: Bearer $API_KEY"
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    "https://api.chroniclehq.com/api/v1/presentations/pres_123",
    {
      headers: {
        Authorization: `Bearer ${API_KEY}`,
      },
    }
  );

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

### Parameters

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

### Response

<ResponseExample>
  ```json Response theme={null}
  {
    "id": "pres_123",
    "title": "Q2 business review",
    "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:00: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 kind of ID does this endpoint expect?">
    This endpoint expects a Chronicle presentation ID.
    Do not send a share URL in its place.
  </Accordion>

  <Accordion title="Why do I get 403 for a presentation that exists?">
    Your API key can only access resources in its own workspace.

    If the presentation belongs to a different workspace, or is stored in private drafts, the request returns `403`.
  </Accordion>

  <Accordion title="What format does the response use?">
    REST API responses use `snake_case`.

    Use that field format in your client code and examples.
  </Accordion>

  <Accordion title="What comes back in the response?">
    The response includes a Chronicle URL for the presentation.

    You can use that URL to open the presentation directly in Chronicle.
  </Accordion>
</AccordionGroup>

***

## Related posts

* [PATCH /presentations/:id](/patch-presentations-id)
* [POST /presentations](/post-presentations)
* [Error codes](/error-codes)
