Integrations
API reference
Momentum exposes a REST API for programmatic access to your workspace data. Authentication is per-workspace via API keys issued in settings.
Base URL and authentication
curl https://momentumnotes.app/api/v1/notes \
-H "Authorization: Bearer mn_live_xxxxxxxxxxxxxxxx"Keys are generated at /settings → API. Each key is scoped to one workspace. Prefix: mn_live_ for production, mn_test_ for test workspaces.
Keys are shown only once at creation. Store them in a secret manager; Momentum cannot recover a lost key.
Rate limiting
Default limit: 100 requests / minute per API key. Response headers include:
X-RateLimit-RemainingX-RateLimit-Reset(unix timestamp)
Notes
GET
/api/v1/notesList notes in the workspace. Supports ?q= for full-text search.
POST
/api/v1/notesCreate a note. Body: { title, content, folderId?, tags?[] }.
GET
/api/v1/notes/{id}Fetch a single note including TipTap JSON content.
PATCH
/api/v1/notes/{id}Partial update. Any of { title, content, folderId, visibility, tags }.
DELETE
/api/v1/notes/{id}Soft-delete. Note moves to trash (auto-purged after 30 days).
Cases
GET
/api/casesList cases. Filters: status, priority, assigneeId, customerId, q.
POST
/api/casesCreate a case. Returns the new case row including id.
GET
/api/cases/{id}Case detail with activity timeline and linked notes.
PATCH
/api/cases/{id}Partial update. Status, priority, assignee, customer, SLA deadline, escalation tier.
POST
/api/cases/{id}/commentAdd an internal comment (not customer-facing).
POST
/api/cases/{id}/link-noteAttach a note (or runbook) to the case.
POST
/api/cases/{id}/save-as-runbookGenerate a structured runbook from this case via Claude.
Runbooks
GET
/api/runbooksList runbooks. Supports ?q= and tag filters.
POST
/api/runbooksCreate a runbook with structured runbookMeta.
GET
/api/runbooks/{id}Fetch a runbook with its full structured metadata.
PATCH
/api/runbooks/{id}Partial update. Merges runbookMeta incrementally.
DELETE
/api/runbooks/{id}Delete a runbook.
POST
/api/runbooks/suggestVector search over runbook notes. Body: { text, limit? }. Returns top matches with similarity scores.
Customers
GET
/api/customersList customers. Filters: q, hasOpenCases.
POST
/api/customersCreate a customer. Body: { name, domain?, externalId?, metadata? }.
GET
/api/customers/{id}Customer detail with open/closed case counts.
PATCH
/api/customers/{id}Partial update.
Captures
GET
/api/capturesList captures in the inbox.
POST
/api/capturesCreate a capture. Body: { type: 'text'|'url'|'image'|'audio', content, source? }.
POST
/api/captures/{id}/triageConvert a capture into a note, case, or runbook.
Webhooks
GET
/api/webhooksList webhook subscriptions in the workspace.
POST
/api/webhooksCreate a webhook. Body: { url, events[], secret? }. Events: note.created, case.updated, etc.
DELETE
/api/webhooks/{id}Remove a webhook subscription.
All outbound webhook deliveries are HMAC-signed with X-Momentum-Signature. Deliveries are retried on 5xx with exponential backoff up to 24 hours.
Error responses
{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded. Retry after 42 seconds.",
"retryAfter": 42
}
}401unauthorized — missing or invalid API key403forbidden — key valid but wrong workspace scope429rate limited — checkretryAfter422validation — body failed schema check