POST /otel/v1/traces accepts, why it refuses a batch, and the two privacy controls that act after a trace arrives: the organization’s content policy and content deletion. To keep content from leaving your process in the first place, follow Control trace privacy.
Ingest limits
Limits apply to each request. These are the service defaults.
The atlanai SDK splits its exports into payloads of at most 1 MiB by default. See
ATLAN_MAX_PAYLOAD_BYTES in Configuration.
Rejected batches
A refused request stores nothing: the whole batch is rejected, not individual spans. The response is anapplication/problem+json body whose code names the cause.
A
200 means the batch was accepted and durably queued. The trace becomes readable after processing; see Imported trace not found. After a timeout or 5xx, follow Import outcome unknown.
Organization content policy
A trace has two parts. Its structure is the timeline, span names, timings, models, token counts, and costs. Its content is the prompts, responses, tool arguments and results, and title. The organization’s content policy decides whether Atlan stores the content part of new traces. Usage analytics are always stored.- Who can read it: every member of the organization, with
GET /registry/v1/organisations/trace-content-policy. - Who can change it: organization admins with settings access, with
PUT /registry/v1/organisations/trace-content-policy. Others get403. The change is audited. - What it can’t do: the policy only narrows. It cannot store content that a sender already dropped, such as with
trace_content=Falsein the SDK. Changing it does not recover dropped content or erase stored content.
capture, updated_at, and updated_by. A value other than store, drop, or null is refused with 400.
Delete a trace’s content
DELETE /registry/v1/users/{user_id}/traces/{trace_id}/content?workspace_id=... permanently removes one trace’s stored content.
- Who can delete: the trace’s creator, or an organization admin with settings access. An admin addresses the trace under its creator’s
user_id. - What it removes: prompts, responses, tool arguments and results, and the trace title. The structure, including token counts and costs, stays.
- When: reads return structure only from the moment the request succeeds. Stored copies are then removed in the background.
- Permanence: content arriving later for a deleted trace is refused, and turning storage back on does not restore it.
With the SDK, call
client.users.traces.delete_content(user_id, trace_id) with a workspace set on the client. See Users.
Retention
The trace store has no automatic expiry. Deleting content removes only the content; there is no public operation that deletes a trace’s structure.Related
- Manage trace privacy: Change the content policy in the app and review your history.
- Control trace privacy: Suppress, mask, or sample content before it is sent.
- Trace attributes: The keys Atlan reads from each span.
- Trace errors: Symptoms and fixes for sending and import failures.