Before you begin
Before you start, make sure you have:- Sending identity: The API key of the identity the traces belong to. For an agent, use the agent’s own key from Settings > Identity on its profile. See Send as right identity.
- Workspace: The workspace the traces belong in, and its ID. In the web app or Atlan Trident Desktop, open the workspace and select Copy workspace ID from the More actions (⋯) menu.
- Synthetic run: A test run with no customer data, private prompts, or production responses, whose trace you can recognize.
1
Send as right identity
Atlan files a trace under the identity whose API key sent it. Send an agent’s runs with the agent’s own key; runs sent with a personal key are filed under that person and do not appear under the agent, whatever the service name. Copy the agent’s key from Settings > Identity on its profile, where it is shown once when created or rotated.Keep the key and workspace ID in an approved secret store, never in code, configuration files, or logs. Load them into the environment of the process that sends:Set
ATLAN_BASE_URL only when you send to a host other than https://api.atlan.com.2
Send synthetic run
Pick the tab for your runtime. Record the start time and root span name so you can match the run later. For an agent built on a supported framework, see Agent frameworks.
- Python SDK
- TypeScript SDK
- OTLP exporter
- Claude Code
Install the SDK with tracing:Trace one run, then flush before the process exits:
flush() raises when the exporter reported a delivery error. Inspect client.export_health for its status, failure count, and error category.3
Verify trace arrived
Read the trace back from the intended scope and compare it with what you sent:
- In the app: Open the agent, select Usage, and find the run in Recent runs. Match it by start time and root span name. With the SDK and
ATLAN_AGENT_IDset, Sessions also lists a session namedtrace-ticket-4821. - Through the API: Read the agent’s traces with
GET /agent/v1/agents/{agent_id}/traces, or a trace sent under your own identity withGET /registry/v1/users/{user_id}/traces/{trace_id}, and confirm itsworkspace_id.
flush(), a 200, or a healthy /status is not enough on its own. Remove the synthetic run if your test policy requires it.Troubleshooting
If a trace lands under a person instead of the agent, never appears after a200, or flush() fails, see Trace errors. For rejected batches, see Trace limits and privacy.
Next steps
- Group runs into sessions: Tie a conversation’s runs together and to the person who started it.
See also
- How trace attribution works: How a trace connects to agents, sessions, skills, and visitors.
- Control trace privacy: Drop or mask content before it leaves your process.