Skip to main content

Telemetry

Performance monitoring, usage metrics, and execution logs for agents.

Authentication

All telemetry endpoints require JWT authentication:

Authorization: Bearer <jwt-token>
x-tenant-id: <uuid>

Endpoints Overview

EndpointDescriptionUse Case
/metricsAggregated metricsMain dashboard
/logsPaginated logsAudit and debugging
/sessionsSession metricsConversation analysis
/sessions/:idSession detailsSpecific conversation debug
/usage-by-hourHourly usageTrend charts
/dashboardComplete dashboardExecutive view
/cacheCache performancePrompt optimization
/loopgraphAgent loop metricsAgent loop debugging
/call-sourcesMetrics by sourceChannel analysis
/tools-usageTool usageTool optimization
/routing-analysisRouting analysisAuto-routing tuning
/latency-analysisLatency analysisBottleneck identification
/summaryComplete summaryMain dashboard

GET /api/telemetry/metrics

Aggregated telemetry metrics for a period.

Query Parameters:

ParamTypeRequiredDescription
start_dateISO dateYesStart date
end_dateISO dateYesEnd date
agent_idUUIDNoFilter by agent
providerstringNoFilter by provider
modelstringNoFilter by model
statusstringNosuccess or error

Response:

{
"data": {
"totalRequests": 5000,
"totalTokens": 2500000,
"averageLatency": 1250,
"successRate": 97.5,
"topModels": [
{ "model": "claude-haiku-4-5-20251001", "requests": 3500, "tokens": 1750000 }
],
"topAgents": [
{ "agent_id": "uuid", "requests": 3000, "tokens": 1500000 }
]
}
}

GET /api/telemetry/logs

Paginated telemetry logs with advanced filters.

Query Parameters:

ParamTypeDefaultDescription
pagenumber1Page number
limitnumber50Records per page (max: 100)
start_dateISO date-Start date
end_dateISO date-End date
agent_idUUID-Filter by agent
api_key_idUUID-Filter by API Key
providerstring-Filter by provider
statusstring-success or error

Response:

{
"data": [
{
"id": "uuid",
"agent_id": "uuid",
"provider": "anthropic",
"model": "claude-haiku-4-5-20251001",
"input_tokens": 1495,
"output_tokens": 770,
"total_tokens": 2265,
"response_time_ms": 1350,
"timestamp": "2026-01-07T14:30:00.000Z",
"call_source": "agent.tool-loop"
}
],
"total": 5000,
"pagination": { "page": 1, "limit": 50, "pages": 100 }
}

GET /api/telemetry/sessions

Aggregated metrics per conversation session.

Query Parameters:

ParamTypeDefaultDescription
limitnumber50Number of sessions (max: 100)
start_dateISO date-Start date
end_dateISO date-End date
agent_idUUID-Filter by agent

Response:

{
"data": [
{
"session_id": "uuid",
"agent_id": "uuid",
"agent_name": "Sales Agent",
"source": "trigger.webhook",
"total_calls": 3,
"total_tokens": 1890,
"total_cost_usd": 0.033,
"avg_latency_ms": 4166,
"duration_ms": 207000,
"errors": 0,
"trigger_name": "eBarn Chat Integration",
"user_query": "What is the price of urea?",
"has_tool_calls": false
}
],
"total": 150
}

GET /api/telemetry/sessions/:sessionId

Detailed session view for debugging, including conversation history, execution logs, and routing decisions.

Response:

{
"data": {
"session": {
"session_id": "uuid",
"agent_id": "uuid",
"total_calls": 3,
"total_tokens": 1890,
"total_cost_usd": 0.033
},
"executions": [
{
"id": "uuid",
"status": "success",
"execution_time_ms": 5980,
"query": "What is the price of urea?",
"agent_response": "Let me check the prices...",
"resolved_context": { "city": "Goiania", "company": "Farm QW" },
"tokens_used": 627
}
],
"conversation_history": [
{ "role": "user", "content": "What is the price of urea?" },
{ "role": "assistant", "content": "Let me check..." }
],
"logs": [
{
"id": "uuid",
"model": "claude-haiku-4-5-20251001",
"provider": "anthropic",
"total_tokens": 627,
"cost_usd": 0.011,
"response_time_ms": 4351,
"call_source": "agent.tool-loop",
"routing_decision": {
"reasoning": "Economical model selected",
"confidence": 0.9,
"is_auto_routed": true,
"selected_model": "anthropic.claude-haiku-4-5-20251001"
},
"fallback_chain": ["anthropic.claude-haiku-4-5-20251001", "openai.gpt-4.1-nano"]
}
],
"metrics": {
"total_calls": 3,
"total_tokens": 1890,
"avg_response_time_ms": 4166
}
}
}

GET /api/telemetry/dashboard

Complete dashboard with all aggregated metrics.

Query Parameters:

ParamTypeDefaultDescription
start_dateISO date7 days agoStart date
end_dateISO datenowEnd date

Response includes: summary, cache, fallback, top_models, by_provider, hourly_usage, by_call_source


GET /api/telemetry/tools-usage

Tool usage analysis across agents.

Response:

{
"data": {
"summary": {
"total_tool_calls": 8500,
"unique_tools": 15,
"avg_tools_per_request": 1.7
},
"by_tool": [
{
"tool_name": "query_database",
"total_calls": 3200,
"success_rate": 99.2,
"avg_latency_ms": 1800,
"agents_using": 5
}
]
}
}

GET /api/telemetry/routing-analysis

Auto-routing decision analysis.

Response includes: summary (total_routed, auto_routed, fallback_triggered, avg_confidence), by_task_type, by_tier, score_distribution, fallback_reasons


GET /api/telemetry/latency-analysis

Latency analysis with percentiles.

Response:

{
"data": {
"summary": {
"avg_latency_ms": 1250,
"p50_ms": 800,
"p95_ms": 3500,
"p99_ms": 8000,
"total_requests": 5000
},
"by_provider": {},
"by_model_tier": {},
"slow_requests": [],
"hourly_trend": []
}
}
PercentileMeaning
p5050% of requests are faster (median)
p9595% of requests are faster
p9999% of requests are faster
tip

Use p95 for realistic SLAs. Requests above p95 are typically outliers caused by cold starts, rate limits, or very long prompts.


Other Endpoints

EndpointDescription
GET /api/telemetry/usage-by-hourHourly usage for trend charts (param: hours, default 24, max 168)
GET /api/telemetry/cachePrompt caching performance report
GET /api/telemetry/loopgraphAgent loop execution metrics (nodes, edges)
GET /api/telemetry/call-sourcesMetrics by call origin (agent.tool-loop, api_key_public, etc.)
GET /api/telemetry/summaryComplete summary for dashboard widgets
GET /api/telemetry/graphExecution graph metrics

Cache Recommendations

EndpointRecommended TTL
/summary, /dashboard5 minutes
/cache, /tools-usage, /routing-analysis5 minutes
/latency-analysis2 minutes
/usage-by-hour1 minute
/sessions1 minute
/logs30 seconds
/sessions/:id30 seconds
/sessions/active3 seconds

Error Codes

CodeDescription
TELEMETRY_MISSING_DATE_RANGEstart_date and end_date are required
UNAUTHORIZEDInvalid or missing JWT
TENANT_NOT_FOUNDTenant ID not found
INTERNAL_ERRORInternal server error