Update a Telemetry Destination changedapi/beta/organization/telemetry_destinations/update
Nearest release: v2.1.300, published 6 hours before this site recorded the change. Shown because the two are within 24 hours of each other. Nothing here says the release caused the edit.
Recorded here
Lines+482added
Lines−0removed
From line
—
no hunk to open at
First seen
14 Oct 2026
this site's first read of the page
Recorded edits3to this page, all time
# Update a Telemetry Destination ## Path parameters ## Headers ## Body parameters ## Returns ## Example ### Response (200)
The whole hunk
482 lines, new page
/
lines
A whole new page. There's nothing to diff it against, so here is what it says.
---
title: Update a Telemetry Destination
url: https://platform.claude.com/docs/en/api/beta/organization/telemetry_destinations/update
---
# Update a Telemetry Destination
**POST** `/v1/organizations/telemetry_destinations/{destination_id}`
Change a telemetry destination's settings, its state, or which workspaces it covers.
Send at least one field. Omitted fields keep their stored values, except the registered headers, which a change of the endpoint's hostname or port removes. Only `display_name`, `traces`, `traces.endpoint_url`, `traces.content_mode`, `traces.max_content_bytes`, and individual `headers` values accept `null`.
If another request changes the destination while the update runs, the API returns a 409 `conflict_error`. Read the destination again, then retry the update.
See the [OpenTelemetry export guide](https://platform.claude.com/docs/en/manage-claude/opentelemetry?sdk_languages=http#delivery-and-health) to learn more about changing a destination.
## Path parameters
- `destination_id: string`
ID of the destination (`tdst_...`).
## Headers
- `"anthropic-version": optional string`
- `"anthropic-beta": optional array of AnthropicBeta`
Optional header to specify the beta version(s) you want to use.
- `string`
- `"message-batches-2024-09-24"`
- `"prompt-caching-2024-07-31"`
- `"computer-use-2024-10-22"`
- `"computer-use-2025-01-24"`
- `"pdfs-2024-09-25"`
- `"token-counting-2024-11-01"`
- `"token-efficient-tools-2025-02-19"`
- `"output-128k-2025-02-19"`
- `"files-api-2025-04-14"`
- `"mcp-client-2025-04-04"`
- `"mcp-client-2025-11-20"`
- `"dev-full-thinking-2025-05-14"`
- `"interleaved-thinking-2025-05-14"`
- `"code-execution-2025-05-22"`
- `"extended-cache-ttl-2025-04-11"`
- `"context-1m-2025-08-07"`
- `"context-management-2025-06-27"`
- `"model-context-window-exceeded-2025-08-26"`
- `"skills-2025-10-02"`
- `"fast-mode-2026-02-01"`
- `"output-300k-2026-03-24"`
- `"user-profiles-2026-03-24"`
- `"user-profiles-2026-08-18"`
- `"user-profiles-2026-09-04"`
- `"advisor-tool-2026-03-01"`
- `"managed-agents-2026-04-01"`
- `"cache-diagnosis-2026-04-07"`
- `"dreaming-2026-04-21"`
- `"thinking-token-count-2026-05-13"`
- `"server-side-fallback-2026-06-01"`
- `"server-side-fallback-2026-07-01"`
- `"fallback-credit-2026-06-01"`
- `"fallback-credit-2026-07-01"`
- `"agent-memory-2026-07-22"`
- `"mid-conversation-tool-changes-2026-07-01"`
- `"compact-2026-01-12"`
- `"computer-use-2025-11-24"`
- `"mcp-tunnels-2026-06-22"`
- `"structured-outputs-2025-11-13"`
- `"task-budgets-2026-03-13"`
- `"thinking-display-updates-2026-08-18"`
- `"ce-user-management-2026-07-13"`
- `"mid-conversation-output-config-2026-07-01"`
- `"thinking-binding-controls-2026-08-01"`
- `"mid-conversation-system-clear-at-2026-08-21"`
- `"compact-2026-09-04"`
- `"inline-tools-2026-09-15"`
- `"mcp-client-2026-09-15"`
- `"ce-plugins-2026-09-01"`
- `"spend-limit-reads-2026-09-26"`
- `"telemetry-destinations-2026-08-11"`
## Body parameters
- `display_name: optional string or null`
New human-readable name, 1 to 255 characters. Null clears it.
- `endpoint_url: optional string`
The new base URL of the destination's OTLP/HTTP endpoint. The same rules as on create apply.
A change of hostname or port first removes every registered header, so send the headers for the new endpoint in the same request. When the destination has a `traces.endpoint_url`, such a change must also set `traces.endpoint_url` to a URL with the new hostname and port, or to `null`. A change of the path alone keeps the headers.
maxLength: 2048
- `headers: optional map[string] or null`
Headers to set or remove. The API merges them into the destination's headers by name.
Names compare case-insensitively. A string value sets or replaces that header. A `null` value removes it. Headers that you omit don't change. The field itself can't be `null`.
A request that sets a header value must also include `endpoint_url`. The current URL is accepted.
The resulting set must stay within the same limits as on create. When the request sets a value, each stored value that it doesn't set counts as 4,096 bytes toward the 16,384-byte limit, because you can't read its real length. So to change one header of a destination that has four or more other headers, send the values of the others again in the same request.
- `state: optional BetaTelemetryDestinationStateParams`
Whether the destination receives deliveries after the update. The field can't be `null`.
- `BetaTelemetryDestinationStateEnabledParams object`
Start deliveries to the telemetry destination again.
This doesn't reset `delivery_health`.
- `type: "enabled"`
- `BetaTelemetryDestinationStateDisabledParams object`
Stop deliveries to the telemetry destination.
Spans produced while it is disabled aren't delivered later. A destination that is already disabled keeps its `reason`.
- `type: "disabled"`
- `traces: optional BetaTelemetryDestinationTracesParams or null`
The traces settings to change. Omitted settings keep their stored values.
`null` sets every traces setting to its create default.
- `content_mode: optional BetaTelemetryDestinationContentMode or null`
What the exported spans contain. Defaults to `metadata_only` on create.
On update, `null` sets `metadata_only`.
- `"metadata_only"`
The spans contain identifiers, timing, status, token counts, and similar metadata. They don't contain prompt text, completion text, or tool inputs and outputs.
- `"content"`
The spans contain the same metadata as `metadata_only`, plus message and tool content.
An organization with a data-handling restriction, such as under HIPAA, can't choose this mode. The API exports only metadata for such an organization, even to a destination that already has `content`.
- `enabled: optional boolean`
Whether the destination receives traces. Defaults to true on create. It cannot be null.
- `endpoint_url: optional string or null`
The full URL of your collector's traces endpoint, for a collector that takes traces on a path other than `/v1/traces`. The API posts traces to it exactly as given and appends nothing.
The same rules as for `endpoint_url` apply, except that any path is allowed. It must have the same scheme, host, and port as `endpoint_url`. At most 2,048 characters.
On create, `null` is the same as leaving it out. On update, `null` removes it. The API then posts traces to `endpoint_url` with `/v1/traces` appended. A change of this URL alone keeps the registered headers.
maxLength: 2048
- `max_content_bytes: optional number or null`
The most bytes of content that one exported span can contain, from 1 up to the API's maximum. `null` sets no bound, so only the API's maximum applies.
On create, leaving it out is the same as `null`. The error for a value above the maximum states the maximum.
format: int32
- `workspaces: optional BetaTelemetryDestinationWorkspacesParams`
The new workspace scope, in the same form as on create. The field can't be `null`.
The API refuses an update that changes the type or sends `workspace_ids` while the destination's list has more than 750 workspaces. Remove workspaces one at a time until 750 or fewer remain, then send the update again.
- `BetaTelemetryDestinationWorkspacesAllParams object`
Cover every workspace of the organization. Doesn't take `workspace_ids`.
An update that sets `all` empties the destination's workspace list.
- `type: "all"`
- `BetaTelemetryDestinationWorkspacesIncludeParams object`
Cover only the workspaces on the list.
- `type: "include"`
- `workspace_ids: optional array of string`
The IDs of the workspaces on the destination's list (`wrkspc_...`). At most 100 per request.
On create, these workspaces become the destination's list. If you leave `workspace_ids` out, the list starts empty. If the API refuses one of the IDs, it doesn't create the destination.
On update, `workspace_ids` replaces the whole list. A workspace that stays on the list keeps its entry and its `created_at`. An empty array empties the list. If you leave `workspace_ids` out and the type stays the same, the list doesn't change. If you leave it out and the type changes, the new list starts empty. After a change to `include` without `workspace_ids`, the destination doesn't cover any workspace until one is added. After a change to `exclude` without `workspace_ids`, it covers every workspace.
An ID sent more than once is added once. An archived workspace can't be added to a list. An update can keep an archived workspace that is already on the list.
- `BetaTelemetryDestinationWorkspacesExcludeParams object`
Cover every workspace of the organization except the workspaces on the list.
- `type: "exclude"`
- `workspace_ids: optional array of string`
The IDs of the workspaces on the destination's list (`wrkspc_...`). At most 100 per request.
On create, these workspaces become the destination's list. If you leave `workspace_ids` out, the list starts empty. If the API refuses one of the IDs, it doesn't create the destination.
On update, `workspace_ids` replaces the whole list. A workspace that stays on the list keeps its entry and its `created_at`. An empty array empties the list. If you leave `workspace_ids` out and the type stays the same, the list doesn't change. If you leave it out and the type changes, the new list starts empty. After a change to `include` without `workspace_ids`, the destination doesn't cover any workspace until one is added. After a change to `exclude` without `workspace_ids`, it covers every workspace.
An ID sent more than once is added once. An archived workspace can't be added to a list. An update can keep an archived workspace that is already on the list.
## Returns
- `BetaTelemetryDestination object`
An OpenTelemetry destination: an OTLP/HTTP endpoint, the request headers sent with every delivery to it, what the exported spans contain, and which workspaces it covers. A destination belongs to an organization. A workspace's spans go to every enabled destination that covers it.
- `type: "telemetry_destination"`
- `id: string`
The unique ID of the destination (`tdst_...`).
- `created_at: string`
Time the destination was created.
format: date-time
- `delivery_health: BetaTelemetryDestinationDeliveryHealth`
The most recent delivery results for this destination.
- `last_error: string or null`
A message that describes the most recent failed delivery to the destination, or `null` if no delivery has failed yet.
Examples are `temporary DNS failure`, `TLS failure`, `timeout`, `connection failure`, `invalid address`, `HTTP error (status 503)`, and `redirect (status 301)`. The message is `invalid address` both for a hostname that doesn't exist and for an address that isn't publicly routable. It never contains the endpoint's response body, a header value, a network address, or TLS details.
`last_error` and `last_error_at` always change together. A later successful delivery doesn't clear them. If `last_success_at` is later than `last_error_at`, a delivery has succeeded since this failure.
See the [OpenTelemetry export guide](https://platform.claude.com/docs/en/manage-claude/opentelemetry?sdk_languages=http#delivery-errors) to learn the likely cause of each error.
Cut at 300 lines. The page has the rest.
No line in this hunk matches that.