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-Remaining
  • X-RateLimit-Reset (unix timestamp)

Notes

GET
/api/v1/notes
List notes in the workspace. Supports ?q= for full-text search.
POST
/api/v1/notes
Create 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/cases
List cases. Filters: status, priority, assigneeId, customerId, q.
POST
/api/cases
Create 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}/comment
Add an internal comment (not customer-facing).
POST
/api/cases/{id}/link-note
Attach a note (or runbook) to the case.
POST
/api/cases/{id}/save-as-runbook
Generate a structured runbook from this case via Claude.

Runbooks

GET
/api/runbooks
List runbooks. Supports ?q= and tag filters.
POST
/api/runbooks
Create 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/suggest
Vector search over runbook notes. Body: { text, limit? }. Returns top matches with similarity scores.

Customers

GET
/api/customers
List customers. Filters: q, hasOpenCases.
POST
/api/customers
Create 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/captures
List captures in the inbox.
POST
/api/captures
Create a capture. Body: { type: 'text'|'url'|'image'|'audio', content, source? }.
POST
/api/captures/{id}/triage
Convert a capture into a note, case, or runbook.

Webhooks

GET
/api/webhooks
List webhook subscriptions in the workspace.
POST
/api/webhooks
Create 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
  }
}
  • 401 unauthorized — missing or invalid API key
  • 403 forbidden — key valid but wrong workspace scope
  • 429 rate limited — check retryAfter
  • 422 validation — body failed schema check