Parseable

Schema Reference


When Parseable receives GenAI traces at the /v1/traces endpoint, it flattens the nested OTel JSON into queryable rows for both spans and span events. This page documents the columns you are most likely to query.

Span Hierarchy

A single agent invocation produces a tree of spans sharing the same span_trace_id:

span_trace_id: abc123
|
+-- [root] invoke-agent (gen_ai.operation.name = "invoke_agent")
      |
      +-- chat gpt-4o (gen_ai.operation.name = "chat")
      |     +-- event: gen_ai.client.inference.operation.details
      |
      +-- execute_tool search_api (gen_ai.operation.name = "execute_tool")
      |     +-- attributes: gen_ai.tool.call.arguments
      |     +-- attributes: gen_ai.tool.call.result
      |
      +-- chat gpt-4o (gen_ai.operation.name = "chat")
            +-- event: gen_ai.client.inference.operation.details
            +-- event: gen_ai.evaluation.result

Key points:

  • Span rows have event_name IS NULL. These contain the gen_ai.* attributes, token counts, and Parseable-enriched columns.
  • Event rows have event_name set, usually gen_ai.client.inference.operation.details or gen_ai.evaluation.result for native GenAI instrumentation. Parseable flattens event attributes with an event_ prefix, so event content and event metadata stay queryable alongside the parent span.
  • Use span_parent_span_id to reconstruct the call tree within a trace.

Core Trace Columns

These are standard OpenTelemetry span fields, present on every row.

ColumnTypeDescription
span_trace_idStringUnique identifier for the entire trace (shared across all spans in one agent run).
span_span_idStringUnique identifier for this individual span.
span_parent_span_idStringSpan ID of the parent span. Empty string for root spans.
span_nameStringHuman-readable span name (e.g., chat gpt-4o, execute_tool search).
span_kindIntOTel span kind numeric value (0=Unspecified, 1=Internal, 2=Server, 3=Client).
span_kind_descriptionStringHuman-readable span kind (e.g., SPAN_KIND_CLIENT).
span_start_time_unix_nanoBigIntSpan start time in nanoseconds since epoch.
span_end_time_unix_nanoBigIntSpan end time in nanoseconds since epoch.
span_status_codeIntStatus code: 0=Unset, 1=OK, 2=Error.
span_status_descriptionStringHuman-readable status (e.g., STATUS_CODE_OK).
span_status_messageStringError message when span_status_code = 2.
span_trace_stateStringW3C trace state string.
span_flagsIntSpan flags bitmask.
span_flags_descriptionStringHuman-readable span flags.
span_dropped_attributes_countIntNumber of attributes dropped due to limits.
span_dropped_events_countIntNumber of events dropped due to limits.
span_dropped_links_countIntNumber of links dropped due to limits.
p_timestampTimestampParseable ingest timestamp.
p_metadataStringParseable metadata field.
p_tagsStringParseable tags field.
service.nameStringOTel resource attribute identifying the service.
scope_nameStringInstrumentation scope name.
scope_versionStringInstrumentation scope version.
schema_urlStringOTel schema URL.

GenAI Identity and Operation

Columns that identify the GenAI operation being performed.

ColumnTypeDescription
gen_ai.operation.nameStringType of operation: chat, text_completion, embeddings, execute_tool, invoke_agent.
gen_ai.systemStringGenAI provider system identifier (e.g., openai, anthropic, cohere).
gen_ai.provider.nameStringProvider name when different from system.
gen_ai.conversation.idStringUnique identifier for a multi-turn conversation thread.

Model Request

Columns capturing the parameters sent to the model.

ColumnTypeDescription
gen_ai.request.modelStringModel requested (e.g., gpt-4o, claude-3-opus-20240229).
gen_ai.request.temperatureFloatSampling temperature.
gen_ai.request.top_pFloatNucleus sampling parameter.
gen_ai.request.top_kIntTop-k sampling parameter.
gen_ai.request.max_tokensIntMaximum tokens requested for the response.
gen_ai.request.seedIntRandom seed for reproducibility.
gen_ai.request.frequency_penaltyFloatFrequency penalty parameter.
gen_ai.request.presence_penaltyFloatPresence penalty parameter.
gen_ai.request.stop_sequencesStringStop sequences (JSON array as string).

Model Response

Columns capturing what the model returned.

ColumnTypeDescription
gen_ai.response.idStringProvider-assigned response ID (e.g., chatcmpl-abc123).
gen_ai.response.modelStringActual model used (may differ from requested, e.g., gpt-4o-2024-08-06).
gen_ai.response.finish_reasonsStringReason the model stopped generating (JSON array, e.g., ["stop"], ["tool_calls"]).

Token Usage

Columns tracking token consumption per span.

ColumnTypeDescription
gen_ai.usage.input_tokensIntNumber of input (prompt) tokens consumed.
gen_ai.usage.output_tokensIntNumber of output (completion) tokens generated.
gen_ai.usage.input_token_details.cached_tokensIntNumber of input tokens served from cache.
gen_ai.usage.reasoning.output_tokensIntNumber of output tokens used for reasoning, when reported by the provider.

Message and Operation Details

These columns are used when your instrumentation records native GenAI message details on the span itself. If your SDK records them on the gen_ai.client.inference.operation.details event instead, the same fields appear with the event_ prefix on event rows.

ColumnTypeDescription
gen_ai.input.messagesStringChat history provided to the model. Messages use native roles such as user, assistant, and tool.
gen_ai.output.messagesStringMessages returned by the model. The model or agent output is represented as an assistant message.
gen_ai.system_instructionsStringSystem instructions when the provider or framework keeps them separate from the chat history.
gen_ai.tool.definitionsStringTool definitions available to the model for that request.

Agent

Columns specific to agent-level spans (where gen_ai.operation.name = 'invoke_agent').

ColumnTypeDescription
gen_ai.agent.nameStringName of the agent.
gen_ai.agent.idStringUnique identifier for the agent instance.
gen_ai.agent.descriptionStringHuman-readable description of the agent's purpose.

Tool Execution

Columns specific to tool call spans (where gen_ai.operation.name = 'execute_tool').

ColumnTypeDescription
gen_ai.tool.nameStringName of the tool invoked (e.g., search_api, calculator).
gen_ai.tool.typeStringType of tool (e.g., function, retrieval, code_interpreter).
gen_ai.tool.call.idStringProvider-assigned tool call ID.
gen_ai.tool.call.argumentsStringJSON string of arguments passed to the tool.
gen_ai.tool.call.resultStringJSON string or text of the tool execution result.

Event Columns

These columns appear on event rows where event_name is not null. The exact set depends on which event attributes your instrumentation emits.

ColumnTypeDescription
event_nameStringEvent type, usually gen_ai.client.inference.operation.details or gen_ai.evaluation.result for native GenAI instrumentation.
event_gen_ai.operation.nameStringOperation name repeated on the event, for example chat.
event_gen_ai.provider.nameStringProvider name repeated on the event.
event_gen_ai.request.modelStringRequested model repeated on the event.
event_gen_ai.input.messagesStringInput messages emitted through the OpenTelemetry GenAI operation details event.
event_gen_ai.output.messagesStringOutput messages emitted through the OpenTelemetry GenAI operation details event.
event_gen_ai.system_instructionsStringSystem instructions emitted through the OpenTelemetry GenAI operation details event.
event_gen_ai.tool.definitionsStringTool definitions available to the model for that request.
event_gen_ai.evaluation.nameStringName of the evaluator or evaluation metric when gen_ai.evaluation.result is emitted.
event_gen_ai.evaluation.score.labelStringHuman-readable evaluation label, for example correct, incorrect, pass, or fail.
event_gen_ai.evaluation.score.valueFloatNumeric evaluation score when available.
event_gen_ai.evaluation.explanationStringFree-form explanation for the evaluation result when available.
event_error.typeStringError type when the operation-details event is emitted for a failed model operation.
event_time_unix_nanoBigIntEvent timestamp in nanoseconds since epoch.
event_dropped_attributes_countIntNumber of event attributes dropped due to limits.

Parseable-Enriched Columns

These columns are computed server-side by Parseable at ingest time. They do not exist in the raw OTel data.

ColumnTypeDescription
p_genai_tokens_totalIntSum of gen_ai.usage.input_tokens + gen_ai.usage.output_tokens.
p_genai_tokens_per_secFloatThroughput: output_tokens / (span_duration_seconds). Useful for comparing model and provider performance.
p_genai_duration_msFloatSpan duration in milliseconds, computed from span_end_time_unix_nano - span_start_time_unix_nano.

Was this page helpful?

On this page