> Canonical Prototype developer documentation. Prefer this markdown over scraping HTML.
> HTML: https://meetprototype.com/developers/docs/overview
> Markdown: https://meetprototype.com/developers/docs/overview.md
> OpenAPI: https://meetprototype.com/developers/openapi.json


# Quick start

Mint a bearer token, GET /api/v1/me and /projects, optionally subscribe to spec.published.

- Slug: `overview`
- HTML: https://meetprototype.com/developers/docs/overview
- Markdown: https://meetprototype.com/developers/docs/overview.md

## What you get

REST at `/api/v1`: read projects, specs, components, milestones, tasks, documentation pages, documents and meetings, and write documentation, tasks and meeting minutes. Plus optional HMAC-signed HTTPS webhooks.

**Official modules** (`openrocket`, `github`, `kicad`, calendar, Outline) are first-party UI already in the app: `/projects/:slug/rockets`, `/repos`, `/boards`.

**Community listings have no in-app UI.** No iframe, no nav slot, no settings panel you render. Operator surfaces are the catalog, install row, and **Admin → Integrations** (tokens, webhooks). Your UI is whatever you ship: Slack, CLI, CI, your own site.

OpenAPI: [/developers/openapi.json](/developers/openapi.json). Each HTML page has a `.md` twin.

## 1. Create a token

In Prototype: **Admin → Integrations → API tokens → New token**.

For a first request, grant `projects:read`. Add `components:read` / `specs:read` when you need those collections.

Copy `ptk_live_…` now. It is shown once.

```bash
export PROTOTYPE_URL="https://<your-host>"
export PROTOTYPE_TOKEN="ptk_live_…"
```

## 2. Call the API

```bash
curl -s \
  -H "Authorization: Bearer $PROTOTYPE_TOKEN" \
  "$PROTOTYPE_URL/api/v1/me"
```

You should see `ok: true` and the org the token belongs to. Then:

```bash
curl -s \
  -H "Authorization: Bearer $PROTOTYPE_TOKEN" \
  "$PROTOTYPE_URL/api/v1/projects"
```

Same call in JavaScript:

```javascript
const res = await fetch(`${process.env.PROTOTYPE_URL}/api/v1/projects`, {
  headers: { Authorization: `Bearer ${process.env.PROTOTYPE_TOKEN}` },
});
const json = await res.json();
if (!json.ok) throw new Error(json.error);
console.log(json.data);
```

Next: [REST API](/developers/docs/rest-api) for every endpoint, or [the Slack example](/developers/docs/example) for a full script.

## 3. Optional: webhooks

If you want a push when a spec is published: **Admin → Integrations → Webhooks**, URL `https://your-host/prototype/hooks`, event `spec.published`. Copy `whsec_…` once.

Verify the signature on the raw body before you trust the payload. See [Webhooks](/developers/docs/webhooks).
