The dashboard uses the same API you can call. Authenticate with an API key from Settings, API keys:
curl -H "Authorization: Bearer tlk_..." https://tracelet.example.com/api/projects/1/issuesSome useful endpoints:
| Method and path | What it does |
|---|---|
GET /api/projects/{project}/issues |
Issues, filtered with query=is:unresolved and sorted with sort=last_seen |
PATCH /api/projects/{project}/issues/{issue} |
Resolve, ignore or assign an issue |
GET /api/projects/{project}/events |
Recent analytics events |
POST /api/projects/{project}/query |
Run an insight: kind is trends, funnel, retention, stickiness, lifecycle or paths; trends also take display, compare and cumulative |
GET /api/projects/{project}/traces |
Recent traces |
GET /api/projects/{project}/logs |
Search logs with q, severity and service |
GET /api/projects/{project}/replays |
Session recordings |
POST /api/projects/{project}/sql |
Run a read-only ClickHouse query over this project (query:run); /sql/export streams CSV (export:run) |
GET /api/projects/{project}/cohorts |
Cohorts; use {"type": "cohort", "value": id} as an insight filter or flag property |
GET /api/projects/{project}/experiments/{id}/results |
Exposures, conversions and win probabilities per variant |
GET /api/projects/{project}/surveys/{id}/results |
Shown, answered and per-question breakdowns |
GET /api/projects/{project}/monitors |
Cron monitors with their recent check-ins |
GET /api/projects/{project}/uptime/{id}/results |
Uptime over 24 hours, 7 and 30 days, and recent probes |
DELETE /api/projects/{project}/persons/{person} |
Erase a person with their events and recordings (needs person:delete; audited). Events sent later with one of their distinct ids create a new person, so stop tracking them in your app as well |
POST /api/projects/{project}/releases/{release}/files?name=... |
Upload a bundle or source map |
Errors come back as JSON with a stable code and a readable message.
Tracelet is an MCP server at /mcp, so AI assistants can read and act on your data with the
permissions of an API key. Add it to an MCP client with the URL and the key as a bearer token:
{
"mcpServers": {
"tracelet": {
"url": "https://tracelet.example.com/mcp",
"headers": { "Authorization": "Bearer tlk_..." }
}
}
}Tools: list_projects, list_issues, get_issue, resolve_issue, query_insight, list_flags
and set_flag_enabled. Each call is checked against the key's permissions, exactly like the API.