> Lettrove docs 1.0 · https://docs.lettrove.com/docs/1.0/api

# API overview

| Reference | For |
|---|---|
| [`@lettrove/embed`](./embed.md) | Opening the editor in a page: `createEditor`, every option, method and event |
| [`@lettrove/react`](./react.md) | The `<LettroveEditor />` React component |
| [`@lettrove/vue`](./vue.md) | The same component for Vue 3 |
| [`@lettrove/node`](./node.md) | Your server: tokens, designs, exports, rendering, erasure, webhook verification |
| [REST API](./endpoints.md) | What `@lettrove/node` calls underneath, for a server that is not on Node. Also an [OpenAPI 3.1 document](https://docs.lettrove.com/openapi/v1.json) |
| [Webhook events](./webhook-events.md) | What Lettrove sends your server |
| [Error codes](./errors.md) | Every code, what it means, what to do |
| [The design document](./design-document.md) | What you may rely on in a stored design |
| [Glossary](./glossary.md) | One word for each idea |

The four packages on npm, MIT licensed and released together at one version number:
[@lettrove/embed](https://www.npmjs.com/package/@lettrove/embed)
[@lettrove/react](https://www.npmjs.com/package/@lettrove/react)
[@lettrove/vue](https://www.npmjs.com/package/@lettrove/vue)
[@lettrove/node](https://www.npmjs.com/package/@lettrove/node)

## Conventions

- **Base address**: `https://api.lettrove.com`. Server routes are under `/embed/v1/`.
- **Authentication**: your secret key, as `Authorization: Bearer lt_sk_test_…` or `lt_sk_live_…`.
  Only from your server.
- **JSON** in and out, UTF-8. Request bodies are strict: an unknown field is refused, naming it.
- **Ids** are strings. Design ids are 26-character ids such as `01J9ZQ3W8D2K7M5T1V4XG6HB0R`; your own
  ids for people are whatever you chose, up to 256 characters.
- **Times** are ISO 8601 in UTC: `2026-10-07T16:03:10.000Z`.
- **Lists** come newest first, a page at a time: `{ "items…": […], "nextCursor": "…" }`; pass
  `cursor` for the next page; `nextCursor` is `null` on the last.
- **Errors**: `{ "error": "…", "code": "…", "requestId": "…" }` with an HTTP status; quote `requestId`
  to support.
- **Rate limits** per key, per minute; over one, `429` with `Retry-After` in seconds.
  See [Limits](../going-live/limits.md).
- **Versioning**: within 1.x, fields are only ever added. Ignore fields you do not know. Anything added
  after 1.0 says **Added in 1.y**.
