conversation_id (the trace ID); endpoint paths and JSON fields keep the conversation / conversation_id names for backwards compatibility. It serves the same data as the dashboard, so you can use it from CI jobs, coding agents, and scripts. The Moda CLI is built on this API.
Base URL
Authentication
Every endpoint requires an API key (called an ingestion key in the dashboard) in thex-api-key header:
401 with "message": "API key is required"; an invalid or revoked key returns:
Make your first request
/overview reference is on the Analytics page.
Common query parameters
Most endpoints accept a subset of these parameters:
Two validation rules apply everywhere:
- Numeric parameters must be non-negative integers (
windowmust be positive); anything else (limit=abc,offset=-1,window=0) returns400. Values outside the allowed range are clamped to the nearest bound, not rejected. - Enum parameters (
mode,time_range,environment,outcome,kind,family, …) return400for values outside the documented set:
Limits
Pagination
Three patterns are in use:-
limit+offset— most list endpoints. Responses carry apaginationobject; keep incrementingoffsetbylimitwhilehas_moreistrue: -
limitonly —/searchhas nooffset. Itspaginationobject reportslimit,returned, andhas_more; narrow the query or time range instead of paging deeper. -
Keyset cursors — the problem sub-resources (
/reports,/conversations,/evidence) returnpagination.next_cursor; pass it back ascursorto fetch the next page.
Endpoints
Errors
Error bodies follow one shape;
message is a string or an array of validation messages:
Lookups of unknown IDs generally do not return
404. GET /clusters/:nodeId/conversations returns 200 with cluster: null, and GET /problems/:id returns 200 with found: false. Check those fields instead of relying on the status code.Next steps
- Search — find the exact message where something happened, then jump to its context.
- Signals — read frustration, emotion, tool-failure, and hallucination detections.
- Problems — read the ranked problem list and send feedback.
- CLI overview — the same data from the terminal, with agent-friendly JSON output.
- Connect the MCP server — the same data as MCP tools for Claude Code, Cursor, and other MCP clients.