Mnemo/ Developers
WorkspaceGet API key

Mnemo API · v1

Every Mnemo workspace exposes a versioned REST API at /api/v1/*. JSON in, JSON out. Requests are authenticated with a per-user API key — same shape as the Halo CRM API, deliberately, so a single integration pattern works across the Novative ecosystem.

Base URL: https://mnemo.team/api/v1

Every response includes X-Mnemo-Api-Version: v1. List endpoints return a consistent { object: "list", data, pagination } envelope.

Authentication

Create a key under Settings → API keys. Two scopes are available: read and write. Keys never expire by default and can be revoked instantly. The plaintext is shown exactly once on creation — store it like a password.

bash
curl https://mnemo.team/api/v1/me \
  -H "Authorization: Bearer mnemo_live_<your_key>"

# or
curl https://mnemo.team/api/v1/me \
  -H "X-API-Key: mnemo_live_<your_key>"

Errors

All errors return the same envelope:

json
{
  "error": {
    "code": "insufficient_scope",
    "message": "This key needs the \"write\" scope. Granted: read."
  }
}
StatusCodeMeaning
400invalid_jsonBody wasn't valid JSON.
400validation_errorRequired field missing or invalid.
401missing_credentialsNo Authorization or X-API-Key header.
401invalid_keyKey isn't recognized.
401revoked_keyKey was revoked.
401expired_keyKey past expiry.
403insufficient_scopeGranted scopes don't include the one this endpoint needs.
404not_foundResource not found in this workspace.

Pagination

List endpoints accept limit (1–100, default 25) and offset (default 0). The envelope tells you how to page:

json
{
  "object": "list",
  "data": [ /* up to "limit" records */ ],
  "pagination": {
    "limit": 25,
    "offset": 0,
    "has_more": true,
    "next_offset": 25,
    "total": 84
  }
}

GET /me — identity probe

GET/api/v1/meSCOPE: READ

Returns the workspace and granted scopes for your key.

Pages

GET/api/v1/pagesSCOPE: READ
POST/api/v1/pagesSCOPE: WRITE
GET/api/v1/pages/:idSCOPE: READ
PATCH/api/v1/pages/:idSCOPE: WRITE

List supports search (matches title or preview), parent_page_id and standard pagination. Fetching one page returns the page record AND its ordered blocks in one shot.

bash
curl -X POST https://mnemo.team/api/v1/pages \
  -H "Authorization: Bearer mnemo_live_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{ "title": "Weekly standup — May 30", "icon": "🎙️" }'

Blocks

GET/api/v1/pages/:id/blocksSCOPE: READ
POST/api/v1/pages/:id/blocksSCOPE: WRITE

POST accepts { blocks: [{ type, content }, ...] } or a single { type, content }. Blocks append to the end of the page in order. Valid types: paragraph, heading_1, heading_2, heading_3, bulleted_list, numbered_list, to_do, toggle, callout, quote, code, divider, database_view.

bash
curl -X POST https://mnemo.team/api/v1/pages/<page_id>/blocks \
  -H "Authorization: Bearer mnemo_live_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
    "blocks": [
      { "type": "heading_2", "content": { "text": "Decisions" } },
      { "type": "to_do",     "content": { "text": "Ship v2", "checked": false } }
    ]
  }'

Databases

GET/api/v1/databasesSCOPE: READ
POST/api/v1/databases/:id/querySCOPE: READ

query is POST so the body can carry filters in the future. Today it accepts limit, offset, and title(case-insensitive substring match against row titles). Response includes the database's schema so you know what each row's properties map to.

Use from Solaris Enterprise

Solaris ships with a built-in Mnemo extension. Open Solaris → Extensions → Mnemo, paste a Mnemo API key, and Helios gains five new tools:

  • mnemo_search — search pages by query
  • mnemo_get_page — fetch a page's body
  • mnemo_create_page — create a fresh page
  • mnemo_append_blocks — add blocks to an existing page
  • mnemo_log_meeting — quick meeting note + action items

The Mnemo key is stored encrypted in Solaris's workspace_extensions.credentials_encoded column, same pattern as every other extension.