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

# API reference

> Reference for Chronicle API endpoints, request formats, and responses.

## Authentication

<Card title="Get your API key" icon="key" href="/authentication">
  Before making API calls, you'll need to create an API key. 
</Card>

## What you can do

| Method | Endpoint                                                                     | Description                                            |
| :----- | :--------------------------------------------------------------------------- | :----------------------------------------------------- |
| GET    | [/templates](/get-templates)                                                 | List available templates                               |
| GET    | [/presentations/:id](/get-presentations-id)                                  | Fetch an existing presentation                         |
| POST   | [/presentations](/post-presentations)                                        | Create a new presentation from a template.             |
| PATCH  | [/presentations/:id](/patch-presentations-id)                                | Update presentation metadata (title only in v1).       |
| POST   | [/uploads/create-target](/post-uploads-create-target)                        | Get a presigned S3 target for uploading an attachment. |
| POST   | [/presentations/generate](/post-presentations-generate)                      | Start an AI presentation generation job.               |
| GET    | [/presentations/generate/:generationId/status](/get-generation-status)       | Poll the current status of a generation job.           |
| POST   | [/presentations/generate/:generationId/message](/post-send-followup-message) | Send a follow-up message.                              |

## Base URL

All API requests are made to:

```text theme={null}
https://api.chroniclehq.com/api/v1
```

***

## Common error shape

### Response fields

| Field           | Type   | Description                                        |
| --------------- | ------ | -------------------------------------------------- |
| `error`         | object | Error payload.                                     |
| `error.code`    | string | Machine-readable error code.                       |
| `error.message` | string | Human-readable error message.                      |
| `error.status`  | number | HTTP status, mirrored in the body for convenience. |

<CodeGroup>
  ```json Example theme={null}
  {
    "error": {
      "code": "INSUFFICIENT_PRIVILEGES",
      "message": "Presentation does not belong to this workspace",
      "status": 403
    }
  }
  ```
</CodeGroup>

For HTTP status semantics and common failure modes, see [Error codes](/error-codes).

***

## Related posts

* [Authentication](/authentication)
* [Error codes](/error-codes)
* [API scope and rate limits](/api-scope-rate-limits)
