Skip to main content
Content capture records the full text of prompts and completions as span attributes. This is useful for debugging, evaluation, and quality monitoring — you can review what was sent to a model, compare outputs across variants, and build evaluation datasets from production traffic. Content capture is enabled by default: prompt and completion text is recorded verbatim on your GenAI spans.

View captured content

Captured prompt and completion text appears on your spans in the to11 dashboard — open your project’s Traces view, pick a trace, select a GenAI span, and read the input messages, output messages, and system instructions inline. There is no database to query — the content is rendered with the rest of the span.

Turning content capture off

Content capture is a gateway-level setting managed by to11. There is no per-request header or dashboard toggle to turn it off for an individual request or project — whether prompt and completion content is recorded is configured on the gateway, which to11 operates.
Content capture is on by default, so the full prompt and completion text — including any sensitive data such as PII, API keys, or confidential instructions — is recorded verbatim on your spans. If your data-handling requirements mean this content must not be stored, contact to11 — it cannot be turned off from your application.

What’s captured

When content capture is active, the following attributes are added to each GenAI span:
AttributeDescription
gen_ai.input.messagesSerialized prompt messages from the request
gen_ai.output.messagesSerialized completion choices or accumulated stream content
gen_ai.system_instructionsSystem/developer prompt text, captured separately for easy filtering
The gen_ai.system_instructions attribute is recorded as a standalone string rather than embedded within gen_ai.input.messages. This separation lets you filter on the system prompt independently — for example, to see which system prompts are in use across your traffic without parsing the full message array.

Media endpoint content capture

Content capture behavior varies by endpoint because some endpoints handle binary data that cannot be meaningfully recorded as span attributes.
EndpointInput capturedOutput captured
Chat completionsFull messages arrayFull choices array (or streamed content)
EmbeddingsInput text— (vector data not captured)
Image generationprompt fieldrevised_prompt from DALL-E 3
Audio speech (TTS)input text— (binary audio)
Audio transcription— (binary audio)Transcription text field
For chat completions, both streaming and non-streaming responses are captured. Streaming responses are accumulated from individual deltas into the final content before recording. Embeddings capture only the input text; the output vector data is omitted because it is not human-readable and would be prohibitively large.

Size limits

Streaming responses are accumulated in memory before being recorded as span attributes. To prevent unbounded memory growth, the gateway enforces size limits on accumulated content.
PathLimit
Streaming accumulated content64 KB (MAX_ACCUMULATED_CONTENT_BYTES)
Streaming tool call arguments64 KB per tool (MAX_TOOL_CALL_ARGUMENT_BYTES)
Non-streaming responseFull response body captured (no limit)
When the streaming accumulation limit is reached, content is truncated. The span still records token counts, finish reasons, and all other attributes normally. Only the content capture attributes are affected by this limit.

Tool call content

When content capture is enabled, tool call child spans include additional attributes that record the function invocation details:
  • gen_ai.tool.call.arguments — the function arguments as JSON
  • gen_ai.input.messages — an object with the function name and arguments, so the tool call’s input is populated on the span
On the parent span, gen_ai.tool.definitions contains the JSON schema of all declared tools sent in the request. This attribute appears on the parent rather than on individual tool call child spans, since the tool definitions apply to the entire request. For requests that produce multiple tool calls, each child span carries its own gen_ai.tool.call.arguments value. The parent span’s gen_ai.tool.definitions is recorded once regardless of how many tool calls appear in the response. See Span Attributes for the complete attribute reference, including all content capture attributes and their types. To read captured content, open your project’s Traces view in the dashboard.