Agent-readable docs index: /docs/llms.txt. Full docs in one file: /docs/llms-full.txt. Download /docs/docs.zip to grep all markdown files locally.

Errors and limits

Error envelope

{ "error": { "code": "invalid_request", "message": "query: too small", "requestId": "..." } }
Codes never change meaning; new ones may be added. Send requestId when you report a problem.
CodeStatus
invalid_request400
unauthenticated401
forbidden403
not_found404
conflict409
payload_too_large413
idempotency_mismatch422
rate_limited429
internal500

Limits

WhatLimit
Requests per key600 a minute, bursts up to 120
Events per request100
One event payload or text256 KB
All events in one request1 MB
JSON nesting64 levels
Query8,000 characters
Recall budgetdefault 2,000 tokens, max 32,000
Webhooks per project10
Events in one POST /v1/imports2,000 (the CLI has no cap)
Records in one export50,000, then truncated: true
Exports per key10 an hour
429 responses carry Retry-After. Rate-limit state is on every response in X-RateLimit-Limit and X-RateLimit-Remaining.

Idempotency

Events carry an idempotency key, unique per project. Reusing a key with the same content returns the original; reusing it with different content is a 422. The SDKs add a key to every remember so a retry is safe.

Scopes

read, write, read_write, forget, admin. admin grants everything. A key can only create keys with scopes it holds.