Use this page when you need the exact payload shape for a given event type or you are building your own runtime instrumentation without one of the SDK helpers.Documentation Index
Fetch the complete documentation index at: https://whyops.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
Manual Events Overview
Start with the ingest endpoint, auth flow, queue behavior, and event schema summary.
Agent Registration
Register the agent first so manual events bind cleanly to the right versioned configuration.
Event payloads
- Conversation events
- Embedding + thinking
- Tool + error events
user_messageUse for the assembled chat history or final prompt input your orchestrator produced.llm_responseRequires metadata.model and metadata.provider.Runtime patterns
Full tool observability
Emit
tool_call_request before execution and tool_call_response after completion, then optionally tool_result when the output is passed back to the model.Idempotency and binding
- If you provide
idempotencyKey, WhyOps uses it to skip duplicates. - If you do not provide one, WhyOps may derive one from a content hash for most event types.
tool_call_requestandtool_call_responseintentionally skip content-hash dedup because repeated calls can be legitimate retries.- The first event for a new trace auto-creates the trace and binds it to the latest registered agent version for that
agentName. - If the same
traceIdlater resolves to a different agent version, WhyOps returns a conflict to protect trace consistency.
Best practices
- Reuse the exact same
spanIdbetweentool_call_requestandtool_call_response. - Include
metadata.latencyMswhenever you measure provider or tool execution time. - Batch events to
/api/events/ingestwhen you want lower network overhead. - Register agents explicitly with Agent Init and Registration before sending traffic.
- Always send
metadata.modelandmetadata.providerforllm_responseandembedding_response.