Skip to content

Tracing and analytics

When an answer is wrong, see exactly why

Every request leaves a trace: what was retrieved, what the model was asked, which tools it called with which arguments, what came back, how long each step took and what it cost. Find any of them from the id in your own logs.

200 free credits when you sign up. No card needed.

Tracing

The Tracing page lists every request from every channel, newest first, with search and auto-refresh. Traces are kept for 90 days.

Columns on the Tracing page
Status and timeOK or the error code, and when it ran
Trace idAlso in the stream's meta and done events and the X-Trace-Id header
Agent and modelWhich agent answered, on which model
DurationEnd to end
Tokens and costInput and output tokens and the estimated model cost
Rounds and toolsHow many model rounds, which tools were called
FeedbackThumbs up or down from the widget

What a trace holds

Traces are OpenTelemetry spans using the GenAI semantic conventions, so the attributes are the standard ones. Model inputs and outputs and each tool call's input and output are recorded as span events, with personal details redacted. A chat request records these spans.

Spans in a chat trace
chat.requestThe whole request, with agent, model, status and duration
auth.validate_userChecking the API key
agent.fetchLoading the agent's configuration (cached)
preflight.rate_limitThe per-agent requests-per-minute check
preflight.creditsSpending the reply's credit
mcp.discoveryLoading the agent's MCP tools
rag.prefetchHybrid search and rerank over the agent's knowledge
conversation.start_or_loadCreating or loading the conversation
agentic.round[n]Each round of the model deciding, calling tools and answering
llm.chatThe provider call, with model, tokens and time to first token
tool.executeOne MCP tool call, with its timing and outcome
POST /v1/chat/stream
curl -N https://api.sentientone.ai/v1/chat/stream \  -H "Content-Type: application/json" \  -H "X-Api-Key: $SENTIENTONE_API_KEY" \  -H "X-Agent-Id: $AGENT_ID" \  -d '{"message": "Where is order 10482?"}'
Server-sent events
data: {"type": "meta", "conversation_id": "9b1c…", "trace_id": "4f2a…"}data: {"type": "sources", "sources": [{"index": 1, "title": "Shipping policy", "url": "https://…", "score": 0.82}]}data: {"type": "tool_call", "id": "call_1", "name": "get_order", "input": {"order_id": "10482"}}data: {"type": "tool_result", "id": "call_1", "name": "get_order", "output": "…"}data: {"type": "delta", "content": "Order 10482 left our warehouse"}data: {"type": "delta", "content": " on Tuesday and…"}data: {"type": "done", "conversation_id": "9b1c…", "trace_id": "4f2a…",       "usage": {"input_tokens": 1830, "output_tokens": 64, "total_tokens": 1894}}
Tracing: trace 4f2a…X-Request-Id on every span
  1. chat.request: The whole request
  2. auth.validate_user: Your secret key
  3. agent.fetch: Agent config, cached
  4. preflight.rate_limit: Per-agent requests per minute
  5. preflight.credits: 1 credit reserved
  6. rag.prefetch: Hybrid search and rerank
  7. agentic.round[1]: The model decides to call a tool
  8. llm.chat: Provider call
  9. tool.execute: get_order on your MCP server
  10. agentic.round[2]: The answer streams back
  11. llm.chat: Tokens stream as delta events

Span names as Tracing records them. Bar lengths here are illustrative.

One id, end to end

Send X-Request-Id with your call (or let the API make one). The same id is on every log line, every span and every error report for that request, and it's passed on to your model provider, your MCP servers and your workflow webhooks.

  • Error responses and error events include it as request_id, so a failure in your logs points straight at the trace.
  • Workflow runs carry it through each step.

Analytics

The Analytics page charts every agent, or one at a time.

Analytics charts
Requests and errorsOver time, per agent
Response timeAnd time to first token, the number users feel
ToolsWhich tools are called, how often
Estimated costModel spend from tokens and each agent's price per million tokens
Credits leftYour balance and how fast it's going

Per reply, in the Playground

While you build, the Playground shows each reply's latency, tokens, tool calls and sources beside it, so you rarely need to open a trace to see why an answer came out the way it did.

What isn't recorded

Traces are yours, in your account. Our own product analytics and error reports carry ids, counts, lengths and timings only: never message text, prompts, replies, tool arguments or keys.

Trace your first request in minutes

Sign up and you get 200 free credits, no card needed. Create an agent, add your knowledge, try it in the Playground, then call it from your code or put it on your website.