# Registry API

The registry API is what your CI calls. With one project key it can:

- push a version of your OpenAPI document and read its score, its report and its diff;
- get rules-only fixes for a document, as JSON Patch, on the paid plans;
- push your docs folder, which becomes a site like this one;
- generate your TypeScript and Python SDKs from a version.

Every operation, with its parameters and answers, is in the [reference](https://docs.latitude10.tech/reference).

## Base URL

```
https://latitude10.tech/api/registry/v1
```

## Authentication

Send a project key as a bearer token:

```
Authorization: Bearer $LATITUDE10_KEY
```

Project keys start with `l10p_`. Create one on your project's page under **CI keys**; it's shown once. The key names its project, so no workspace or project appears in a URL, and it can push to that project only. Keep it in your CI's secrets. Revoke it on the same page and it stops working at once.

A missing or revoked key gets `401`. See [Errors](errors).

## Quotas

Pushes, fix runs, docs pushes and SDK generations each count against a quota set by your plan: see [Plans and limits](../get-started/plans-and-limits). Past one, the API answers `429` with `resetsAt`, when the quota resets, and a `Retry-After` header. A retry before then gets the same answer.

## For agents

[llms.txt](https://docs.latitude10.tech/llms.txt) lists these pages for a model to read, and the docs' MCP server at `/mcp` lets an agent search them with no key.

To call the API from your browser, open the [reference on latitude10.tech](https://latitude10.tech/r/jorge-ortega/registry-api), paste your key into Try it and send a request.

## Where this comes from

- `openapi/registry-v1.yaml`
- `app/api/registry/v1/_lib/route.ts`
- `app/workspace/_lib/keys.ts`
- `app/registry/_lib/usage.ts`
