Two event types
LLM events
One model invocation: model identity, prompts, output, token usage, and
cost in USD.
Tool events
One tool execution: tool name plus serialized input and output.
What every event carries
| Part | Contents |
|---|---|
| Identity | A client-generated UUID id and an optional traceId grouping related events |
| Timing | startTimeMs, endTimeMs, and durationMs |
| Status | ok or error, with optional error code, HTTP status, and message |
| Instrumentation | Which wrapper and source SDK produced the event |
| Context | Optional userId, agentId, agentGroupId, and threadId identifiers |
| Custom dimensions | additionalProperties — your own string and number key-values |
Traces
A trace is a set of events sharing atraceId — the steps of one agent run, one request, one job. Carbon never infers grouping; you pass the trace ID explicitly (or a wrapper propagates it through a multi-step call). See Traces and context.
What Carbon adds on ingest
The ingest API enriches events as they arrive:- Space — the
spaceIdis always set from the authenticated API key. Anything the client sends is overridden. - Provider — for LLM events, the provider is derived from the model name using Carbon’s model catalog.
- Cost — when the model is in the catalog, USD cost is computed from token usage and current pricing, broken down by uncached input, cache reads, cache writes, and output.