Getting started

Quickstart

From zero to a collaborative note embedded in your app, in five steps. All examples use http://localhost:5273 as the base URL — substitute your deployment.

1. Sign in to the console

Sign in with the admin credentials configured in your deployment's environment (ADMIN_EMAIL / ADMIN_PASSWORD). Registration is closed by design — the account is seeded on boot, and it owns every note and service key.

2. Generate a service key

In Console → API keys, generate a key for your application. It's shown once — store it in your backend's secrets.

The service key authenticates your backend. Never ship it to browsers or mobile clients — anyone holding it can read and delete every note in your account. See Identity & keys.

3. Create a note

From your backend, create a note and store the returned id on your own entity (a meeting, a ticket, a document — whatever your domain calls it).

terminal
curl -X POST http://localhost:5273/api/notes \
  -H "x-api-key: notr_••••••••" \
  -H "content-type: application/json" \
  -d '{"metadata": {"source": "quickstart"}}'
response · 201
{
  "id": "8a1f3c0e-4b2d-4f6a-9c7e-d5e8f1a2b3c4",
  "metadata": { "source": "quickstart" },
  "createdAt": "2026-06-10T18:00:00.000Z",
  "updatedAt": "2026-06-10T18:00:00.000Z"
}

4. Embed the editor

Render NotrEditor wherever the note should appear. The component handles the WebSocket connection, live sync, carets, and the slash menu — you pass a noteId.

MeetingPage.svelte
<script>
  import { NotrEditor } from '$lib'

  let { meeting } = $props()
</script>

<NotrEditor
  noteId={meeting.noteId}
  user={{ name: 'Ada', color: '#c8401a' }}
/>

Open the same note in two windows and type — both update live. See the Editor SDK reference for all props and custom slash commands.

5. Read the markdown projection

Everything written in the editor is continuously projected to markdown. Fetch it whenever you need the content as text — for search indexing, exports, or LLM prompts.

terminal
curl http://localhost:5273/api/notes/8a1f3c0e-… \
  -H "x-api-key: notr_••••••••"
response · 200
{
  "id": "8a1f3c0e-…",
  "markdown": "# Weekly sync\n\n- [x] review roadmap\n- [ ] assign owners",
  "metadata": { "source": "quickstart" },
  "createdAt": "2026-06-10T18:00:00.000Z",
  "updatedAt": "2026-06-10T18:04:13.000Z"
}

Next