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

# API reference

> Base URL, requests, pagination and idempotency.

## Base URL

```text theme={null}
https://fwpvfpysaskvlxgwcaxk.supabase.co/functions/v1/api-v1
```

The machine-readable spec is at [`/openapi.json`](https://fwpvfpysaskvlxgwcaxk.supabase.co/functions/v1/api-v1/openapi.json).

## Requests

* Send `Authorization: Bearer <token>` on every request (see [Authentication](/authentication)).
* Send JSON bodies with `Content-Type: application/json`. Bodies are limited to 100 KB, or 5 MB when updating a project's content.
* Every response carries an `X-Request-Id` header. Include it when you contact support.

Successful responses wrap the result in `data`:

```json theme={null}
{ "data": { "id": "…", "title": "…" } }
```

Errors use one envelope; see [Errors](/errors).

## Pagination

`GET /projects` returns up to `limit` items (default 25, max 100) and a cursor:

```json theme={null}
{ "data": [ … ], "pagination": { "next_cursor": "eyJjcmVh…", "has_more": true } }
```

Pass `cursor=<next_cursor>` to get the next page.

## Idempotency

Send an `Idempotency-Key` header (up to 200 characters) on `POST /presentations`. Retrying with the same key returns the original job and project instead of generating, and charging for, a second one.

## Generation

`POST /presentations` generates and saves the whole project before it responds. Allow at least 3 minutes before your client times out. Each call is recorded as a job you can read with `GET /jobs/{job_id}`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.