Skip to content

LiveNote API

Automate your notes: create pages from scripts, keep a backup in sync, pipe form submissions into a shared doc. One REST surface, JSON everywhere, authenticated with a personal API key from Settings → API keys.

Authentication

Send your key in the Authorization header (Bearer) or X-API-Key. Keys are tied to your account — they see and change only your notes — and can be revoked at any time from Settings.

curl https://livenote.in/api/v1/me \
  -H "Authorization: Bearer lnk_YOUR_KEY"

Endpoints

MethodPathPurpose
GET/api/v1/meKey and account info
GET/api/v1/notesList your notes (?limit, ?offset)
POST/api/v1/notesCreate a note
GET/api/v1/notes/{slug}Read a note (incl. content)
PUT/api/v1/notes/{slug}Update a note
DELETE/api/v1/notes/{slug}Move a note to trash

Create a note

curl -X POST https://livenote.in/api/v1/notes \
  -H "Authorization: Bearer lnk_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title":"Deploy checklist","content":"- freeze the tag\n- run migrations","mode":"MARKDOWN"}'

Returns 201 with the note’s slug and public url. Modes: RICH (HTML), MARKDOWN, PLAIN, CODE (+ language).

Update a note (optimistic locking)

curl -X PUT https://livenote.in/api/v1/notes/deploy-checklist \
  -H "Authorization: Bearer lnk_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"content":"- freeze the tag\n- run migrations\n- smoke test","version":1}'

Send the version you last read. If it’s stale you get 409 with the current serverVersion — re-read, merge, retry. Nothing is ever silently overwritten.

List & read

curl "https://livenote.in/api/v1/notes?limit=20&offset=0" \
  -H "Authorization: Bearer lnk_YOUR_KEY"

curl https://livenote.in/api/v1/notes/deploy-checklist \
  -H "Authorization: Bearer lnk_YOUR_KEY"

Delete a note

curl -X DELETE https://livenote.in/api/v1/notes/deploy-checklist \
  -H "Authorization: Bearer lnk_YOUR_KEY"

The note moves to trash (restorable for 30 days in the dashboard, then purged) — the API never destroys instantly.

Rate limits & errors

120 requests per minute per key. Every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset; when you hit the cap you get 429 with a Retry-After header.

StatusMeaning
401Missing, invalid or revoked API key
403The note exists but isn't yours
404No such note (trashed notes read as 404)
409Slug already taken, or stale version (body has serverVersion)
422Invalid input — the error message says what
429Rate limit exceeded — back off until Retry-After

Errors are always JSON: {"error": "…"}. Success responses are JSON objects with stable keys — fields may be added over time, never removed within v1.