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

# Endpoint index

A compact map of the LittleDemo HTTP API.

The OpenAPI spec is loaded from `./openapi.json` in `docs.json`. Use this page as a quick map, then use the spec for exact schemas.

## Projects

| Method | Path | Purpose |
| --- | --- | --- |
| `GET` | `/api/v1/projects` | List projects. |
| `POST` | `/api/v1/projects` | Create a project. |
| `GET` | `/api/v1/projects/{id}` | Get project details. |
| `PATCH` | `/api/v1/projects/{id}` | Update a project. |
| `DELETE` | `/api/v1/projects/{id}` | Delete a project. |
| `POST` | `/api/v1/projects/{id}/refresh` | Refresh all ready demos in a project. |

## Demos

| Method | Path | Purpose |
| --- | --- | --- |
| `GET` | `/api/v1/demos` | List demos. |
| `POST` | `/api/v1/demos` | Create and queue a demo. |
| `POST` | `/api/v1/demos/local-upload` | Upload a local MP4/WebM as a ready demo. |
| `GET` | `/api/v1/demos/{id}` | Get demo details and status. |
| `PATCH` | `/api/v1/demos/{id}` | Update demo metadata. |
| `DELETE` | `/api/v1/demos/{id}` | Delete a demo. |
| `POST` | `/api/v1/demos/{id}/refresh` | Re-record a demo. |
| `POST` | `/api/v1/demos/{id}/restyle` | Re-record with new presentation settings. |

## Media

| Method | Path | Purpose |
| --- | --- | --- |
| `GET` | `/api/v1/demos/{id}/video` | Stream video. |
| `GET` | `/api/v1/demos/{id}/gif` | Fetch GIF preview. |
| `GET` | `/api/v1/demos/{id}/thumbnail` | Fetch thumbnail. |
| `GET` | `/api/v1/demos/{id}/snapshots/{index}` | Fetch analysis snapshot. |
| `GET` | `/api/v1/demos/{id}/debug-stills/{index}` | Fetch recorder still. |

## Account and usage

| Method | Path | Purpose |
| --- | --- | --- |
| `GET` | `/api/v1/api-keys` | List API keys. |
| `POST` | `/api/v1/api-keys` | Create live or publishable key. |
| `DELETE` | `/api/v1/api-keys/{id}` | Revoke key. |
| `GET` | `/api/v1/usage` | Read plan and usage. |
| `GET` | `/api/v1/credits` | Read credit balance and packs. |
| `POST` | `/api/v1/credits/purchase` | Purchase a credit pack. |
| `GET` | `/api/v1/credits/auto-topoff` | Read auto top-off settings. |
| `PUT` | `/api/v1/credits/auto-topoff` | Update auto top-off settings. |
| `GET` | `/api/v1/credits/transactions` | List credit transactions. |

## Presentation, embeds, progress, and auth

| Method | Path | Purpose |
| --- | --- | --- |
| `GET` | `/api/v1/backgrounds` | List backgrounds. |
| `POST` | `/api/v1/backgrounds/upload` | Upload background. |
| `GET` | `/api/v1/backgrounds/custom/{key}` | Serve uploaded background. |
| `POST` | `/api/v1/embed/generate` | Generate or reuse a dynamic embed demo. |
| `GET` | `/api/v1/embed/runtime` | Render a signed runtime iframe for trusted integrations. |
| `GET` | `/api/progress/{demoId}` | Poll generation progress. |
| `GET` | `/api/ws/{demoId}` | Subscribe to generation progress over WebSocket. |
| `POST` | `/api/v1/webhooks/projects/{id}/refresh` | Refresh project demos from CI/CD. |
| `POST` | `/api/v1/device/code` | Start CLI device authorization. |
| `POST` | `/api/v1/device/token` | Poll for CLI access token. |
| `POST` | `/api/v1/device/authorize` | Approve a device code from the browser. |
| `GET` | `/api/health` | Health check. |