# API reference

> Every endpoint at a glance, plus the live interactive OpenAPI docs.

The complete, always-current contract (request bodies, response shapes, every field) lives in the interactive OpenAPI docs served by the API itself:

- Interactive docs: `https://api.lanes.sh/docs`
- OpenAPI schema: `https://api.lanes.sh/openapi.json`

This page is the map. The base URLs:

| Surface | URL |
| --- | --- |
| API (production) | `https://api.lanes.sh` |
| Frontend (claim, dashboard) | `https://lanes.sh` |
| API (local) | `http://localhost:8000` |

## Public endpoints

No signup. Safe to call from an agent or `curl`.

| Method | Path | Purpose |
| --- | --- | --- |
| `POST` | `/v1/forms` | [Provision](/docs/forms/provisioning) a form. Anonymous, or `lfk_` key for born-claimed. |
| `POST` | `/v1/f/{form_id}` | [Submit](/docs/forms/submitting) to a form. |
| `OPTIONS` | `/v1/f/{form_id}` | Per-form [CORS](/docs/forms/securing-your-endpoints#cors) preflight. |

## Form management

Claimed forms only. Authorize with a workspace [API key](/docs/forms/api-keys) or a signed-in owner.

| Method | Path | Purpose |
| --- | --- | --- |
| `GET` | `/v1/forms/{form_id}` | Form config, counters, unverified recipients. |
| `PATCH` | `/v1/forms/{form_id}` | Update name, origins, schema, `submission_auth`, `recipients`, workflow. |
| `POST` | `/v1/forms/{form_id}/recipients/resend-verification` | Resend a recipient confirmation email. |

## Claim and verification

| Method | Path | Purpose |
| --- | --- | --- |
| `GET` | `/v1/claim/{token}` | Redirects to the frontend claim page. |
| `GET` | `/v1/claim/{token}/preview` | Public, non-consuming status of a claim link. |
| `POST` | `/v1/claim/{token}` | Redeem the claim (signed in). |
| `GET` | `/v1/verify-email/{token}` | Confirm a forwarding recipient. |

## Dashboard

Authorized by your signed-in session, not by API keys.

| Method | Path | Purpose |
| --- | --- | --- |
| `GET` | `/v1/me` | Current user. |
| `GET` | `/v1/workspaces` | Your workspaces. |
| `GET` | `/v1/workspaces/{id}/forms` | Forms in a workspace. |
| `POST` | `/v1/workspaces/{id}/forms` | Create a form (born claimed). |
| `GET` | `/v1/forms/{id}/submissions` | Paginated submissions. `?format=csv` exports. |
| `DELETE` | `/v1/forms/{id}` | Soft-delete a form. |
| `POST` `GET` `DELETE` | `/v1/workspaces/{id}/api-keys` | Manage [API keys](/docs/forms/api-keys) (owner only). |

## Health and pages

| Method | Path | Purpose |
| --- | --- | --- |
| `GET` | `/health` | Liveness check. |
| `GET` | `/thanks/{form_id}` | Hosted thank-you page for browser posts. |

Every error uses the shared envelope documented in [Errors](/docs/forms/errors).
