---
title: Telemetry Destinations
url: https://platform.claude.com/docs/en/api/csharp/beta/organization/telemetry_destinations
---

# Telemetry Destinations

## Create a Telemetry Destination

`BetaTelemetryDestination Beta.Organization.TelemetryDestinations.Create(parameters, cancellationToken = default)`

**POST** `/v1/organizations/telemetry_destinations`

Register an OpenTelemetry destination for the organization.

The destination starts in state `enabled`. An organization can have at most 10 destinations, including disabled ones.

See the [OpenTelemetry export guide](https://platform.claude.com/docs/en/manage-claude/opentelemetry?sdk_languages=csharp#add-a-destination) to learn more about adding a destination.

### Parameters

- `TelemetryDestinationCreateParams parameters`

  - `required string endpointUrl`

    The base URL of your collector's OTLP/HTTP endpoint, for example `https://gateway.example.com`.

    The URL must use `https` and a hostname, not an IP address. The port, if given, must be 443. The URL must not contain a query string, a fragment, or a username and password. At most 2,048 characters.

    A path prefix, such as `/otlp`, is allowed. Don't include the per-signal path (`/v1/traces`), because the API appends it on delivery. If your collector takes traces on another path, also set `traces.endpoint_url`.

    minLength: 1, maxLength: 2048

  - `required BetaTelemetryDestinationWorkspacesParams workspaces`

    Which of the organization's workspaces the destination covers.

  - `string? displayName`

    Human-readable name for the destination. Optional. 1 to 255 characters.

  - `IReadOnlyDictionary<string, string> headers`

    Request headers that the API sends with every delivery, typically your collector's authentication header (for example `authorization`).

    The API stores the values encrypted and never returns them. Reads show only `header_names`.

    At most 20 headers. Names are at most 128 characters. Two names can't differ only in case. Values are printable ASCII, at most 4,096 characters, and can't begin or end with a space. Names and values together are at most 16,384 bytes.

    Reserved names are rejected, for example `host`, `cookie`, `user-agent`, and names that start with `content-`, `proxy-`, `x-forwarded-`, or `anthropic-`. For this check, `_` in a name counts as `-`.

  - `BetaTelemetryDestinationTracesParams traces`

    The settings for the traces that the destination receives. If you leave it out, every setting takes its default.

  - `IReadOnlyList<AnthropicBeta> betas` (header parameter)

    This endpoint is in beta: requests must send `telemetry-destinations-2026-08-11` in this header.

    - `MessageBatches2024_09_24("message-batches-2024-09-24")`

    - `PromptCaching2024_07_31("prompt-caching-2024-07-31")`

    - `ComputerUse2024_10_22("computer-use-2024-10-22")`

    - `ComputerUse2025_01_24("computer-use-2025-01-24")`

    - `Pdfs2024_09_25("pdfs-2024-09-25")`

    - `TokenCounting2024_11_01("token-counting-2024-11-01")`

    - `TokenEfficientTools2025_02_19("token-efficient-tools-2025-02-19")`

    - `Output128k2025_02_19("output-128k-2025-02-19")`

    - `FilesApi2025_04_14("files-api-2025-04-14")`

    - `McpClient2025_04_04("mcp-client-2025-04-04")`

    - `McpClient2025_11_20("mcp-client-2025-11-20")`

    - `DevFullThinking2025_05_14("dev-full-thinking-2025-05-14")`

    - `InterleavedThinking2025_05_14("interleaved-thinking-2025-05-14")`

    - `CodeExecution2025_05_22("code-execution-2025-05-22")`

    - `ExtendedCacheTtl2025_04_11("extended-cache-ttl-2025-04-11")`

    - `Context1m2025_08_07("context-1m-2025-08-07")`

    - `ContextManagement2025_06_27("context-management-2025-06-27")`

    - `ModelContextWindowExceeded2025_08_26("model-context-window-exceeded-2025-08-26")`

    - `Skills2025_10_02("skills-2025-10-02")`

    - `FastMode2026_02_01("fast-mode-2026-02-01")`

    - `Output300k2026_03_24("output-300k-2026-03-24")`

    - `UserProfiles2026_03_24("user-profiles-2026-03-24")`

    - `UserProfiles2026_08_18("user-profiles-2026-08-18")`

    - `UserProfiles2026_09_04("user-profiles-2026-09-04")`

    - `AdvisorTool2026_03_01("advisor-tool-2026-03-01")`

    - `ManagedAgents2026_04_01("managed-agents-2026-04-01")`

    - `CacheDiagnosis2026_04_07("cache-diagnosis-2026-04-07")`

    - `Dreaming2026_04_21("dreaming-2026-04-21")`

    - `ThinkingTokenCount2026_05_13("thinking-token-count-2026-05-13")`

    - `ServerSideFallback2026_06_01("server-side-fallback-2026-06-01")`

    - `ServerSideFallback2026_07_01("server-side-fallback-2026-07-01")`

    - `FallbackCredit2026_06_01("fallback-credit-2026-06-01")`

    - `FallbackCredit2026_07_01("fallback-credit-2026-07-01")`

    - `AgentMemory2026_07_22("agent-memory-2026-07-22")`

    - `MidConversationToolChanges2026_07_01("mid-conversation-tool-changes-2026-07-01")`

    - `Compact2026_01_12("compact-2026-01-12")`

    - `ComputerUse2025_11_24("computer-use-2025-11-24")`

    - `McpTunnels2026_06_22("mcp-tunnels-2026-06-22")`

    - `StructuredOutputs2025_11_13("structured-outputs-2025-11-13")`

    - `TaskBudgets2026_03_13("task-budgets-2026-03-13")`

    - `ThinkingDisplayUpdates2026_08_18("thinking-display-updates-2026-08-18")`

    - `CEUserManagement2026_07_13("ce-user-management-2026-07-13")`

    - `MidConversationOutputConfig2026_07_01("mid-conversation-output-config-2026-07-01")`

    - `ThinkingBindingControls2026_08_01("thinking-binding-controls-2026-08-01")`

    - `MidConversationSystemClearAt2026_08_21("mid-conversation-system-clear-at-2026-08-21")`

    - `Compact2026_09_04("compact-2026-09-04")`

    - `InlineTools2026_09_15("inline-tools-2026-09-15")`

    - `McpClient2026_09_15("mcp-client-2026-09-15")`

    - `CEPlugins2026_09_01("ce-plugins-2026-09-01")`

    - `SpendLimitReads2026_09_26("spend-limit-reads-2026-09-26")`

    - `TelemetryDestinations2026_08_11("telemetry-destinations-2026-08-11")`

    - `Webhooks2026_10_07("webhooks-2026-10-07")`

### Returns

- `class BetaTelemetryDestination`

  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.

  - `JsonElement Type = "telemetry_destination"`

  - `required string ID`

    The unique ID of the destination (`tdst_...`).

  - `required DateTimeOffset CreatedAt`

    Time the destination was created.

    format: date-time

  - `required BetaTelemetryDestinationDeliveryHealth DeliveryHealth`

    The most recent delivery results for this destination.

    - `required string? LastError`

      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=csharp#delivery-errors) to learn the likely cause of each error.

    - `required DateTimeOffset? LastErrorAt`

      Time of the failure that `last_error` describes. Changes together with `last_error`. Null until a delivery first fails.

      format: date-time

    - `required DateTimeOffset? LastSuccessAt`

      Time of the most recent successful delivery to the destination, or `null` if no delivery has succeeded yet.

      format: date-time

  - `required string? DisplayName`

    Human-readable name for the destination. Null when none was set.

  - `required string EndpointUrl`

    The base URL of the destination's OTLP/HTTP endpoint, exactly as registered.

    The API appends the per-signal path, such as `/v1/traces`, on delivery, unless `traces.endpoint_url` is set.

  - `required IReadOnlyList<string> HeaderNames`

    Names of the registered request headers. Header values are write-only and are never returned.

  - `required BetaTelemetryDestinationState State`

    Whether the destination receives deliveries.

    - `class BetaTelemetryDestinationStateEnabled`

      The telemetry destination receives the spans of the workspaces that it covers.

      - `JsonElement Type = "enabled"`

    - `class BetaTelemetryDestinationStateDisabled`

      The API doesn't deliver anything to the telemetry destination.

      Spans produced while it is disabled aren't delivered later.

      - `JsonElement Type = "disabled"`

      - `required BetaTelemetryDestinationDisabledReason Reason`

        Whether a caller or the API disabled the destination and, when the API did, why. Read-only.

        - `class BetaTelemetryDestinationDisabledReasonCaller`

          A caller disabled the destination with an update that set `state` to `disabled`.

          - `JsonElement Type = "caller"`

        - `class BetaTelemetryDestinationDisabledReasonSustainedFailure`

          The API disabled the destination because deliveries to it failed, with no successful delivery in between, for longer than a threshold that Anthropic configures and that is not part of this contract. The reason is `invalid_address` instead when the most recent failed delivery failed with an invalid address.

          - `JsonElement Type = "sustained_failure"`

        - `class BetaTelemetryDestinationDisabledReasonInvalidAddress`

          The API disabled the destination because deliveries to it failed for longer than the same threshold as for `sustained_failure`, and the most recent failed delivery failed with an invalid address: the DNS answer says that the endpoint's hostname doesn't exist or doesn't have an address, or the address that the API would connect to isn't publicly routable or is reserved, for example a loopback, link-local, private-network, or cloud-metadata address. The API doesn't connect to such an address, and retries the delivery a bounded number of times as it does after a timeout. A timeout or a server failure of the DNS lookup is a temporary DNS failure instead, not an invalid address.

          - `JsonElement Type = "invalid_address"`

        - `class BetaTelemetryDestinationDisabledReasonRedirect`

          The API disabled the destination because the endpoint answered a delivery with a 3xx status. Redirects are never followed, and one such answer disables the destination at once.

          - `JsonElement Type = "redirect"`

  - `required BetaTelemetryDestinationTraces Traces`

    The destination's settings for the traces it receives.

    - `required BetaTelemetryDestinationContentMode ContentMode`

      What the exported spans contain.

      - `MetadataOnly("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("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`.

    - `required bool Enabled`

      Whether the destination receives traces. A destination whose `enabled` is false keeps its other settings.

    - `required string? EndpointUrl`

      The full URL that the API posts traces to, exactly as registered, or `null` if the destination doesn't have one.

      When it is `null`, the API posts traces to `endpoint_url` with `/v1/traces` appended.

    - `required int? MaxContentBytes`

      The most bytes of content that one exported span can contain, or `null` if only the API's maximum applies.

      Content means model prompts and responses, and tool inputs and outputs. The API shortens longer content to this size before it delivers the span. A destination whose `content_mode` is `metadata_only` keeps this value. It applies once `content_mode` is `content`.

      format: int32

  - `required DateTimeOffset UpdatedAt`

    Time of the last change to the destination's configuration or state. Changes to `delivery_health` don't change it.

    An update that sets a header value always changes it, even when the value is the same as before. Adding or removing a single workspace on the destination's list doesn't change it. An update that changes the list does.

    format: date-time

  - `required BetaTelemetryDestinationWorkspaces Workspaces`

    Which of the organization's workspaces the destination covers.

    - `class BetaTelemetryDestinationWorkspacesAll`

      The destination covers every workspace of the organization, including the default workspace, archived workspaces, and workspaces created later. It doesn't have a list.

      - `JsonElement Type = "all"`

    - `class BetaTelemetryDestinationWorkspacesInclude`

      The destination covers the workspaces on its list, and no others.

      - `JsonElement Type = "include"`

    - `class BetaTelemetryDestinationWorkspacesExclude`

      The destination covers every workspace of the organization except the workspaces on its list. A workspace created later is covered until it is added to the list.

      - `JsonElement Type = "exclude"`

### Example

```csharp
using System;
using Anthropic.Models.Beta.Organization.TelemetryDestinations;

TelemetryDestinationCreateParams parameters = new()
{
    EndpointUrl = "x",
    Workspaces = new BetaTelemetryDestinationWorkspacesAllParams(),
};

var betaTelemetryDestination = await client.Beta.Organization.TelemetryDestinations.Create(parameters);

Console.WriteLine(betaTelemetryDestination);
```

#### Response (200)

```json
{
  "id": "id",
  "created_at": "2019-12-27T18:11:19.117Z",
  "delivery_health": {
    "last_error": "last_error",
    "last_error_at": "2019-12-27T18:11:19.117Z",
    "last_success_at": "2019-12-27T18:11:19.117Z"
  },
  "display_name": "display_name",
  "endpoint_url": "endpoint_url",
  "header_names": [
    "string"
  ],
  "state": {
    "type": "enabled"
  },
  "traces": {
    "content_mode": "metadata_only",
    "enabled": true,
    "endpoint_url": "endpoint_url",
    "max_content_bytes": 0
  },
  "type": "telemetry_destination",
  "updated_at": "2019-12-27T18:11:19.117Z",
  "workspaces": {
    "type": "all"
  }
}
```

## List Telemetry Destinations

`TelemetryDestinationListPage Beta.Organization.TelemetryDestinations.List(parameters, cancellationToken = default)`

**GET** `/v1/organizations/telemetry_destinations`

List the organization's destinations, newest first, optionally only those that cover given workspaces.

See the [OpenTelemetry export guide](https://platform.claude.com/docs/en/manage-claude/opentelemetry?sdk_languages=csharp#set-up-api-tracing) to learn more about destinations.

### Parameters

- `TelemetryDestinationListParams parameters`

  - `int limit` (query parameter)

    Number of destinations to return per page, between 1 and 1,000. Defaults to 20.

    format: int32

  - `string page` (query parameter)

    Opaque cursor from a previous response's `next_page`. Leave it out to get the first page.

  - `IReadOnlyList<string> workspaceIds` (query parameter)

    Return only the destinations that cover at least one of these workspaces (`wrkspc_...`).

    Send at most 100 IDs, as `workspace_ids[]`. A destination covers a workspace when its `workspaces.type` is `all`, when its `include` list has the workspace, or when its `exclude` list doesn't have it. Destinations in either state can match. An ID that isn't the ID of one of the organization's workspaces doesn't match any destination, not even one whose type is `all`.

  - `IReadOnlyList<AnthropicBeta> betas` (header parameter)

    This endpoint is in beta: requests must send `telemetry-destinations-2026-08-11` in this header.

    - `MessageBatches2024_09_24("message-batches-2024-09-24")`

    - `PromptCaching2024_07_31("prompt-caching-2024-07-31")`

    - `ComputerUse2024_10_22("computer-use-2024-10-22")`

    - `ComputerUse2025_01_24("computer-use-2025-01-24")`

    - `Pdfs2024_09_25("pdfs-2024-09-25")`

    - `TokenCounting2024_11_01("token-counting-2024-11-01")`

    - `TokenEfficientTools2025_02_19("token-efficient-tools-2025-02-19")`

    - `Output128k2025_02_19("output-128k-2025-02-19")`

    - `FilesApi2025_04_14("files-api-2025-04-14")`

    - `McpClient2025_04_04("mcp-client-2025-04-04")`

    - `McpClient2025_11_20("mcp-client-2025-11-20")`

    - `DevFullThinking2025_05_14("dev-full-thinking-2025-05-14")`

    - `InterleavedThinking2025_05_14("interleaved-thinking-2025-05-14")`

    - `CodeExecution2025_05_22("code-execution-2025-05-22")`

    - `ExtendedCacheTtl2025_04_11("extended-cache-ttl-2025-04-11")`

    - `Context1m2025_08_07("context-1m-2025-08-07")`

    - `ContextManagement2025_06_27("context-management-2025-06-27")`

    - `ModelContextWindowExceeded2025_08_26("model-context-window-exceeded-2025-08-26")`

    - `Skills2025_10_02("skills-2025-10-02")`

    - `FastMode2026_02_01("fast-mode-2026-02-01")`

    - `Output300k2026_03_24("output-300k-2026-03-24")`

    - `UserProfiles2026_03_24("user-profiles-2026-03-24")`

    - `UserProfiles2026_08_18("user-profiles-2026-08-18")`

    - `UserProfiles2026_09_04("user-profiles-2026-09-04")`

    - `AdvisorTool2026_03_01("advisor-tool-2026-03-01")`

    - `ManagedAgents2026_04_01("managed-agents-2026-04-01")`

    - `CacheDiagnosis2026_04_07("cache-diagnosis-2026-04-07")`

    - `Dreaming2026_04_21("dreaming-2026-04-21")`

    - `ThinkingTokenCount2026_05_13("thinking-token-count-2026-05-13")`

    - `ServerSideFallback2026_06_01("server-side-fallback-2026-06-01")`

    - `ServerSideFallback2026_07_01("server-side-fallback-2026-07-01")`

    - `FallbackCredit2026_06_01("fallback-credit-2026-06-01")`

    - `FallbackCredit2026_07_01("fallback-credit-2026-07-01")`

    - `AgentMemory2026_07_22("agent-memory-2026-07-22")`

    - `MidConversationToolChanges2026_07_01("mid-conversation-tool-changes-2026-07-01")`

    - `Compact2026_01_12("compact-2026-01-12")`

    - `ComputerUse2025_11_24("computer-use-2025-11-24")`

    - `McpTunnels2026_06_22("mcp-tunnels-2026-06-22")`

    - `StructuredOutputs2025_11_13("structured-outputs-2025-11-13")`

    - `TaskBudgets2026_03_13("task-budgets-2026-03-13")`

    - `ThinkingDisplayUpdates2026_08_18("thinking-display-updates-2026-08-18")`

    - `CEUserManagement2026_07_13("ce-user-management-2026-07-13")`

    - `MidConversationOutputConfig2026_07_01("mid-conversation-output-config-2026-07-01")`

    - `ThinkingBindingControls2026_08_01("thinking-binding-controls-2026-08-01")`

    - `MidConversationSystemClearAt2026_08_21("mid-conversation-system-clear-at-2026-08-21")`

    - `Compact2026_09_04("compact-2026-09-04")`

    - `InlineTools2026_09_15("inline-tools-2026-09-15")`

    - `McpClient2026_09_15("mcp-client-2026-09-15")`

    - `CEPlugins2026_09_01("ce-plugins-2026-09-01")`

    - `SpendLimitReads2026_09_26("spend-limit-reads-2026-09-26")`

    - `TelemetryDestinations2026_08_11("telemetry-destinations-2026-08-11")`

    - `Webhooks2026_10_07("webhooks-2026-10-07")`

### Returns

- `class BetaTelemetryDestination`

  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.

  - `JsonElement Type = "telemetry_destination"`

  - `required string ID`

    The unique ID of the destination (`tdst_...`).

  - `required DateTimeOffset CreatedAt`

    Time the destination was created.

    format: date-time

  - `required BetaTelemetryDestinationDeliveryHealth DeliveryHealth`

    The most recent delivery results for this destination.

    - `required string? LastError`

      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=csharp#delivery-errors) to learn the likely cause of each error.

    - `required DateTimeOffset? LastErrorAt`

      Time of the failure that `last_error` describes. Changes together with `last_error`. Null until a delivery first fails.

      format: date-time

    - `required DateTimeOffset? LastSuccessAt`

      Time of the most recent successful delivery to the destination, or `null` if no delivery has succeeded yet.

      format: date-time

  - `required string? DisplayName`

    Human-readable name for the destination. Null when none was set.

  - `required string EndpointUrl`

    The base URL of the destination's OTLP/HTTP endpoint, exactly as registered.

    The API appends the per-signal path, such as `/v1/traces`, on delivery, unless `traces.endpoint_url` is set.

  - `required IReadOnlyList<string> HeaderNames`

    Names of the registered request headers. Header values are write-only and are never returned.

  - `required BetaTelemetryDestinationState State`

    Whether the destination receives deliveries.

    - `class BetaTelemetryDestinationStateEnabled`

      The telemetry destination receives the spans of the workspaces that it covers.

      - `JsonElement Type = "enabled"`

    - `class BetaTelemetryDestinationStateDisabled`

      The API doesn't deliver anything to the telemetry destination.

      Spans produced while it is disabled aren't delivered later.

      - `JsonElement Type = "disabled"`

      - `required BetaTelemetryDestinationDisabledReason Reason`

        Whether a caller or the API disabled the destination and, when the API did, why. Read-only.

        - `class BetaTelemetryDestinationDisabledReasonCaller`

          A caller disabled the destination with an update that set `state` to `disabled`.

          - `JsonElement Type = "caller"`

        - `class BetaTelemetryDestinationDisabledReasonSustainedFailure`

          The API disabled the destination because deliveries to it failed, with no successful delivery in between, for longer than a threshold that Anthropic configures and that is not part of this contract. The reason is `invalid_address` instead when the most recent failed delivery failed with an invalid address.

          - `JsonElement Type = "sustained_failure"`

        - `class BetaTelemetryDestinationDisabledReasonInvalidAddress`

          The API disabled the destination because deliveries to it failed for longer than the same threshold as for `sustained_failure`, and the most recent failed delivery failed with an invalid address: the DNS answer says that the endpoint's hostname doesn't exist or doesn't have an address, or the address that the API would connect to isn't publicly routable or is reserved, for example a loopback, link-local, private-network, or cloud-metadata address. The API doesn't connect to such an address, and retries the delivery a bounded number of times as it does after a timeout. A timeout or a server failure of the DNS lookup is a temporary DNS failure instead, not an invalid address.

          - `JsonElement Type = "invalid_address"`

        - `class BetaTelemetryDestinationDisabledReasonRedirect`

          The API disabled the destination because the endpoint answered a delivery with a 3xx status. Redirects are never followed, and one such answer disables the destination at once.

          - `JsonElement Type = "redirect"`

  - `required BetaTelemetryDestinationTraces Traces`

    The destination's settings for the traces it receives.

    - `required BetaTelemetryDestinationContentMode ContentMode`

      What the exported spans contain.

      - `MetadataOnly("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("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`.

    - `required bool Enabled`

      Whether the destination receives traces. A destination whose `enabled` is false keeps its other settings.

    - `required string? EndpointUrl`

      The full URL that the API posts traces to, exactly as registered, or `null` if the destination doesn't have one.

      When it is `null`, the API posts traces to `endpoint_url` with `/v1/traces` appended.

    - `required int? MaxContentBytes`

      The most bytes of content that one exported span can contain, or `null` if only the API's maximum applies.

      Content means model prompts and responses, and tool inputs and outputs. The API shortens longer content to this size before it delivers the span. A destination whose `content_mode` is `metadata_only` keeps this value. It applies once `content_mode` is `content`.

      format: int32

  - `required DateTimeOffset UpdatedAt`

    Time of the last change to the destination's configuration or state. Changes to `delivery_health` don't change it.

    An update that sets a header value always changes it, even when the value is the same as before. Adding or removing a single workspace on the destination's list doesn't change it. An update that changes the list does.

    format: date-time

  - `required BetaTelemetryDestinationWorkspaces Workspaces`

    Which of the organization's workspaces the destination covers.

    - `class BetaTelemetryDestinationWorkspacesAll`

      The destination covers every workspace of the organization, including the default workspace, archived workspaces, and workspaces created later. It doesn't have a list.

      - `JsonElement Type = "all"`

    - `class BetaTelemetryDestinationWorkspacesInclude`

      The destination covers the workspaces on its list, and no others.

      - `JsonElement Type = "include"`

    - `class BetaTelemetryDestinationWorkspacesExclude`

      The destination covers every workspace of the organization except the workspaces on its list. A workspace created later is covered until it is added to the list.

      - `JsonElement Type = "exclude"`

### Example

```csharp
using System;
using Anthropic.Models.Beta.Organization.TelemetryDestinations;

TelemetryDestinationListParams parameters = new();

var page = await client.Beta.Organization.TelemetryDestinations.List(parameters);
await foreach (var item in page.Paginate())
{
    Console.WriteLine(item);
}
```

#### Response (200)

```json
{
  "data": [
    {
      "id": "id",
      "created_at": "2019-12-27T18:11:19.117Z",
      "delivery_health": {
        "last_error": "last_error",
        "last_error_at": "2019-12-27T18:11:19.117Z",
        "last_success_at": "2019-12-27T18:11:19.117Z"
      },
      "display_name": "display_name",
      "endpoint_url": "endpoint_url",
      "header_names": [
        "string"
      ],
      "state": {
        "type": "enabled"
      },
      "traces": {
        "content_mode": "metadata_only",
        "enabled": true,
        "endpoint_url": "endpoint_url",
        "max_content_bytes": 0
      },
      "type": "telemetry_destination",
      "updated_at": "2019-12-27T18:11:19.117Z",
      "workspaces": {
        "type": "all"
      }
    }
  ],
  "next_page": "next_page"
}
```

## Retrieve a Telemetry Destination

`BetaTelemetryDestination Beta.Organization.TelemetryDestinations.Retrieve(parameters, cancellationToken = default)`

**GET** `/v1/organizations/telemetry_destinations/{destination_id}`

Read a destination's configuration, state, and most recent delivery results.

See the [OpenTelemetry export guide](https://platform.claude.com/docs/en/manage-claude/opentelemetry?sdk_languages=csharp#delivery-and-health) to learn how the API delivers spans and when it disables a destination.

### Parameters

- `TelemetryDestinationRetrieveParams parameters`

  - `required string destinationID` (path parameter)

    ID of the destination (`tdst_...`).

  - `IReadOnlyList<AnthropicBeta> betas` (header parameter)

    This endpoint is in beta: requests must send `telemetry-destinations-2026-08-11` in this header.

    - `MessageBatches2024_09_24("message-batches-2024-09-24")`

    - `PromptCaching2024_07_31("prompt-caching-2024-07-31")`

    - `ComputerUse2024_10_22("computer-use-2024-10-22")`

    - `ComputerUse2025_01_24("computer-use-2025-01-24")`

    - `Pdfs2024_09_25("pdfs-2024-09-25")`

    - `TokenCounting2024_11_01("token-counting-2024-11-01")`

    - `TokenEfficientTools2025_02_19("token-efficient-tools-2025-02-19")`

    - `Output128k2025_02_19("output-128k-2025-02-19")`

    - `FilesApi2025_04_14("files-api-2025-04-14")`

    - `McpClient2025_04_04("mcp-client-2025-04-04")`

    - `McpClient2025_11_20("mcp-client-2025-11-20")`

    - `DevFullThinking2025_05_14("dev-full-thinking-2025-05-14")`

    - `InterleavedThinking2025_05_14("interleaved-thinking-2025-05-14")`

    - `CodeExecution2025_05_22("code-execution-2025-05-22")`

    - `ExtendedCacheTtl2025_04_11("extended-cache-ttl-2025-04-11")`

    - `Context1m2025_08_07("context-1m-2025-08-07")`

    - `ContextManagement2025_06_27("context-management-2025-06-27")`

    - `ModelContextWindowExceeded2025_08_26("model-context-window-exceeded-2025-08-26")`

    - `Skills2025_10_02("skills-2025-10-02")`

    - `FastMode2026_02_01("fast-mode-2026-02-01")`

    - `Output300k2026_03_24("output-300k-2026-03-24")`

    - `UserProfiles2026_03_24("user-profiles-2026-03-24")`

    - `UserProfiles2026_08_18("user-profiles-2026-08-18")`

    - `UserProfiles2026_09_04("user-profiles-2026-09-04")`

    - `AdvisorTool2026_03_01("advisor-tool-2026-03-01")`

    - `ManagedAgents2026_04_01("managed-agents-2026-04-01")`

    - `CacheDiagnosis2026_04_07("cache-diagnosis-2026-04-07")`

    - `Dreaming2026_04_21("dreaming-2026-04-21")`

    - `ThinkingTokenCount2026_05_13("thinking-token-count-2026-05-13")`

    - `ServerSideFallback2026_06_01("server-side-fallback-2026-06-01")`

    - `ServerSideFallback2026_07_01("server-side-fallback-2026-07-01")`

    - `FallbackCredit2026_06_01("fallback-credit-2026-06-01")`

    - `FallbackCredit2026_07_01("fallback-credit-2026-07-01")`

    - `AgentMemory2026_07_22("agent-memory-2026-07-22")`

    - `MidConversationToolChanges2026_07_01("mid-conversation-tool-changes-2026-07-01")`

    - `Compact2026_01_12("compact-2026-01-12")`

    - `ComputerUse2025_11_24("computer-use-2025-11-24")`

    - `McpTunnels2026_06_22("mcp-tunnels-2026-06-22")`

    - `StructuredOutputs2025_11_13("structured-outputs-2025-11-13")`

    - `TaskBudgets2026_03_13("task-budgets-2026-03-13")`

    - `ThinkingDisplayUpdates2026_08_18("thinking-display-updates-2026-08-18")`

    - `CEUserManagement2026_07_13("ce-user-management-2026-07-13")`

    - `MidConversationOutputConfig2026_07_01("mid-conversation-output-config-2026-07-01")`

    - `ThinkingBindingControls2026_08_01("thinking-binding-controls-2026-08-01")`

    - `MidConversationSystemClearAt2026_08_21("mid-conversation-system-clear-at-2026-08-21")`

    - `Compact2026_09_04("compact-2026-09-04")`

    - `InlineTools2026_09_15("inline-tools-2026-09-15")`

    - `McpClient2026_09_15("mcp-client-2026-09-15")`

    - `CEPlugins2026_09_01("ce-plugins-2026-09-01")`

    - `SpendLimitReads2026_09_26("spend-limit-reads-2026-09-26")`

    - `TelemetryDestinations2026_08_11("telemetry-destinations-2026-08-11")`

    - `Webhooks2026_10_07("webhooks-2026-10-07")`

### Returns

- `class BetaTelemetryDestination`

  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.

  - `JsonElement Type = "telemetry_destination"`

  - `required string ID`

    The unique ID of the destination (`tdst_...`).

  - `required DateTimeOffset CreatedAt`

    Time the destination was created.

    format: date-time

  - `required BetaTelemetryDestinationDeliveryHealth DeliveryHealth`

    The most recent delivery results for this destination.

    - `required string? LastError`

      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=csharp#delivery-errors) to learn the likely cause of each error.

    - `required DateTimeOffset? LastErrorAt`

      Time of the failure that `last_error` describes. Changes together with `last_error`. Null until a delivery first fails.

      format: date-time

    - `required DateTimeOffset? LastSuccessAt`

      Time of the most recent successful delivery to the destination, or `null` if no delivery has succeeded yet.

      format: date-time

  - `required string? DisplayName`

    Human-readable name for the destination. Null when none was set.

  - `required string EndpointUrl`

    The base URL of the destination's OTLP/HTTP endpoint, exactly as registered.

    The API appends the per-signal path, such as `/v1/traces`, on delivery, unless `traces.endpoint_url` is set.

  - `required IReadOnlyList<string> HeaderNames`

    Names of the registered request headers. Header values are write-only and are never returned.

  - `required BetaTelemetryDestinationState State`

    Whether the destination receives deliveries.

    - `class BetaTelemetryDestinationStateEnabled`

      The telemetry destination receives the spans of the workspaces that it covers.

      - `JsonElement Type = "enabled"`

    - `class BetaTelemetryDestinationStateDisabled`

      The API doesn't deliver anything to the telemetry destination.

      Spans produced while it is disabled aren't delivered later.

      - `JsonElement Type = "disabled"`

      - `required BetaTelemetryDestinationDisabledReason Reason`

        Whether a caller or the API disabled the destination and, when the API did, why. Read-only.

        - `class BetaTelemetryDestinationDisabledReasonCaller`

          A caller disabled the destination with an update that set `state` to `disabled`.

          - `JsonElement Type = "caller"`

        - `class BetaTelemetryDestinationDisabledReasonSustainedFailure`

          The API disabled the destination because deliveries to it failed, with no successful delivery in between, for longer than a threshold that Anthropic configures and that is not part of this contract. The reason is `invalid_address` instead when the most recent failed delivery failed with an invalid address.

          - `JsonElement Type = "sustained_failure"`

        - `class BetaTelemetryDestinationDisabledReasonInvalidAddress`

          The API disabled the destination because deliveries to it failed for longer than the same threshold as for `sustained_failure`, and the most recent failed delivery failed with an invalid address: the DNS answer says that the endpoint's hostname doesn't exist or doesn't have an address, or the address that the API would connect to isn't publicly routable or is reserved, for example a loopback, link-local, private-network, or cloud-metadata address. The API doesn't connect to such an address, and retries the delivery a bounded number of times as it does after a timeout. A timeout or a server failure of the DNS lookup is a temporary DNS failure instead, not an invalid address.

          - `JsonElement Type = "invalid_address"`

        - `class BetaTelemetryDestinationDisabledReasonRedirect`

          The API disabled the destination because the endpoint answered a delivery with a 3xx status. Redirects are never followed, and one such answer disables the destination at once.

          - `JsonElement Type = "redirect"`

  - `required BetaTelemetryDestinationTraces Traces`

    The destination's settings for the traces it receives.

    - `required BetaTelemetryDestinationContentMode ContentMode`

      What the exported spans contain.

      - `MetadataOnly("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("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`.

    - `required bool Enabled`

      Whether the destination receives traces. A destination whose `enabled` is false keeps its other settings.

    - `required string? EndpointUrl`

      The full URL that the API posts traces to, exactly as registered, or `null` if the destination doesn't have one.

      When it is `null`, the API posts traces to `endpoint_url` with `/v1/traces` appended.

    - `required int? MaxContentBytes`

      The most bytes of content that one exported span can contain, or `null` if only the API's maximum applies.

      Content means model prompts and responses, and tool inputs and outputs. The API shortens longer content to this size before it delivers the span. A destination whose `content_mode` is `metadata_only` keeps this value. It applies once `content_mode` is `content`.

      format: int32

  - `required DateTimeOffset UpdatedAt`

    Time of the last change to the destination's configuration or state. Changes to `delivery_health` don't change it.

    An update that sets a header value always changes it, even when the value is the same as before. Adding or removing a single workspace on the destination's list doesn't change it. An update that changes the list does.

    format: date-time

  - `required BetaTelemetryDestinationWorkspaces Workspaces`

    Which of the organization's workspaces the destination covers.

    - `class BetaTelemetryDestinationWorkspacesAll`

      The destination covers every workspace of the organization, including the default workspace, archived workspaces, and workspaces created later. It doesn't have a list.

      - `JsonElement Type = "all"`

    - `class BetaTelemetryDestinationWorkspacesInclude`

      The destination covers the workspaces on its list, and no others.

      - `JsonElement Type = "include"`

    - `class BetaTelemetryDestinationWorkspacesExclude`

      The destination covers every workspace of the organization except the workspaces on its list. A workspace created later is covered until it is added to the list.

      - `JsonElement Type = "exclude"`

### Example

```csharp
using System;
using Anthropic.Models.Beta.Organization.TelemetryDestinations;

TelemetryDestinationRetrieveParams parameters = new()
{
    DestinationID = "destination_id"
};

var betaTelemetryDestination = await client.Beta.Organization.TelemetryDestinations.Retrieve(parameters);

Console.WriteLine(betaTelemetryDestination);
```

#### Response (200)

```json
{
  "id": "id",
  "created_at": "2019-12-27T18:11:19.117Z",
  "delivery_health": {
    "last_error": "last_error",
    "last_error_at": "2019-12-27T18:11:19.117Z",
    "last_success_at": "2019-12-27T18:11:19.117Z"
  },
  "display_name": "display_name",
  "endpoint_url": "endpoint_url",
  "header_names": [
    "string"
  ],
  "state": {
    "type": "enabled"
  },
  "traces": {
    "content_mode": "metadata_only",
    "enabled": true,
    "endpoint_url": "endpoint_url",
    "max_content_bytes": 0
  },
  "type": "telemetry_destination",
  "updated_at": "2019-12-27T18:11:19.117Z",
  "workspaces": {
    "type": "all"
  }
}
```

## Update a Telemetry Destination

`BetaTelemetryDestination Beta.Organization.TelemetryDestinations.Update(parameters, cancellationToken = default)`

**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=csharp#delivery-and-health) to learn more about changing a destination.

### Parameters

- `TelemetryDestinationUpdateParams parameters`

  - `required string destinationID` (path parameter)

    ID of the destination (`tdst_...`).

  - `string? displayName`

    New human-readable name, 1 to 255 characters. Null clears it.

  - `string endpointUrl`

    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

  - `IReadOnlyDictionary<string, string>? headers`

    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.

  - `BetaTelemetryDestinationStateParams state`

    Whether the destination receives deliveries after the update. The field can't be `null`.

  - `BetaTelemetryDestinationTracesParams? traces`

    The traces settings to change. Omitted settings keep their stored values.

    `null` sets every traces setting to its create default.

  - `BetaTelemetryDestinationWorkspacesParams workspaces`

    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.

  - `IReadOnlyList<AnthropicBeta> betas` (header parameter)

    This endpoint is in beta: requests must send `telemetry-destinations-2026-08-11` in this header.

    - `MessageBatches2024_09_24("message-batches-2024-09-24")`

    - `PromptCaching2024_07_31("prompt-caching-2024-07-31")`

    - `ComputerUse2024_10_22("computer-use-2024-10-22")`

    - `ComputerUse2025_01_24("computer-use-2025-01-24")`

    - `Pdfs2024_09_25("pdfs-2024-09-25")`

    - `TokenCounting2024_11_01("token-counting-2024-11-01")`

    - `TokenEfficientTools2025_02_19("token-efficient-tools-2025-02-19")`

    - `Output128k2025_02_19("output-128k-2025-02-19")`

    - `FilesApi2025_04_14("files-api-2025-04-14")`

    - `McpClient2025_04_04("mcp-client-2025-04-04")`

    - `McpClient2025_11_20("mcp-client-2025-11-20")`

    - `DevFullThinking2025_05_14("dev-full-thinking-2025-05-14")`

    - `InterleavedThinking2025_05_14("interleaved-thinking-2025-05-14")`

    - `CodeExecution2025_05_22("code-execution-2025-05-22")`

    - `ExtendedCacheTtl2025_04_11("extended-cache-ttl-2025-04-11")`

    - `Context1m2025_08_07("context-1m-2025-08-07")`

    - `ContextManagement2025_06_27("context-management-2025-06-27")`

    - `ModelContextWindowExceeded2025_08_26("model-context-window-exceeded-2025-08-26")`

    - `Skills2025_10_02("skills-2025-10-02")`

    - `FastMode2026_02_01("fast-mode-2026-02-01")`

    - `Output300k2026_03_24("output-300k-2026-03-24")`

    - `UserProfiles2026_03_24("user-profiles-2026-03-24")`

    - `UserProfiles2026_08_18("user-profiles-2026-08-18")`

    - `UserProfiles2026_09_04("user-profiles-2026-09-04")`

    - `AdvisorTool2026_03_01("advisor-tool-2026-03-01")`

    - `ManagedAgents2026_04_01("managed-agents-2026-04-01")`

    - `CacheDiagnosis2026_04_07("cache-diagnosis-2026-04-07")`

    - `Dreaming2026_04_21("dreaming-2026-04-21")`

    - `ThinkingTokenCount2026_05_13("thinking-token-count-2026-05-13")`

    - `ServerSideFallback2026_06_01("server-side-fallback-2026-06-01")`

    - `ServerSideFallback2026_07_01("server-side-fallback-2026-07-01")`

    - `FallbackCredit2026_06_01("fallback-credit-2026-06-01")`

    - `FallbackCredit2026_07_01("fallback-credit-2026-07-01")`

    - `AgentMemory2026_07_22("agent-memory-2026-07-22")`

    - `MidConversationToolChanges2026_07_01("mid-conversation-tool-changes-2026-07-01")`

    - `Compact2026_01_12("compact-2026-01-12")`

    - `ComputerUse2025_11_24("computer-use-2025-11-24")`

    - `McpTunnels2026_06_22("mcp-tunnels-2026-06-22")`

    - `StructuredOutputs2025_11_13("structured-outputs-2025-11-13")`

    - `TaskBudgets2026_03_13("task-budgets-2026-03-13")`

    - `ThinkingDisplayUpdates2026_08_18("thinking-display-updates-2026-08-18")`

    - `CEUserManagement2026_07_13("ce-user-management-2026-07-13")`

    - `MidConversationOutputConfig2026_07_01("mid-conversation-output-config-2026-07-01")`

    - `ThinkingBindingControls2026_08_01("thinking-binding-controls-2026-08-01")`

    - `MidConversationSystemClearAt2026_08_21("mid-conversation-system-clear-at-2026-08-21")`

    - `Compact2026_09_04("compact-2026-09-04")`

    - `InlineTools2026_09_15("inline-tools-2026-09-15")`

    - `McpClient2026_09_15("mcp-client-2026-09-15")`

    - `CEPlugins2026_09_01("ce-plugins-2026-09-01")`

    - `SpendLimitReads2026_09_26("spend-limit-reads-2026-09-26")`

    - `TelemetryDestinations2026_08_11("telemetry-destinations-2026-08-11")`

    - `Webhooks2026_10_07("webhooks-2026-10-07")`

### Returns

- `class BetaTelemetryDestination`

  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.

  - `JsonElement Type = "telemetry_destination"`

  - `required string ID`

    The unique ID of the destination (`tdst_...`).

  - `required DateTimeOffset CreatedAt`

    Time the destination was created.

    format: date-time

  - `required BetaTelemetryDestinationDeliveryHealth DeliveryHealth`

    The most recent delivery results for this destination.

    - `required string? LastError`

      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=csharp#delivery-errors) to learn the likely cause of each error.

    - `required DateTimeOffset? LastErrorAt`

      Time of the failure that `last_error` describes. Changes together with `last_error`. Null until a delivery first fails.

      format: date-time

    - `required DateTimeOffset? LastSuccessAt`

      Time of the most recent successful delivery to the destination, or `null` if no delivery has succeeded yet.

      format: date-time

  - `required string? DisplayName`

    Human-readable name for the destination. Null when none was set.

  - `required string EndpointUrl`

    The base URL of the destination's OTLP/HTTP endpoint, exactly as registered.

    The API appends the per-signal path, such as `/v1/traces`, on delivery, unless `traces.endpoint_url` is set.

  - `required IReadOnlyList<string> HeaderNames`

    Names of the registered request headers. Header values are write-only and are never returned.

  - `required BetaTelemetryDestinationState State`

    Whether the destination receives deliveries.

    - `class BetaTelemetryDestinationStateEnabled`

      The telemetry destination receives the spans of the workspaces that it covers.

      - `JsonElement Type = "enabled"`

    - `class BetaTelemetryDestinationStateDisabled`

      The API doesn't deliver anything to the telemetry destination.

      Spans produced while it is disabled aren't delivered later.

      - `JsonElement Type = "disabled"`

      - `required BetaTelemetryDestinationDisabledReason Reason`

        Whether a caller or the API disabled the destination and, when the API did, why. Read-only.

        - `class BetaTelemetryDestinationDisabledReasonCaller`

          A caller disabled the destination with an update that set `state` to `disabled`.

          - `JsonElement Type = "caller"`

        - `class BetaTelemetryDestinationDisabledReasonSustainedFailure`

          The API disabled the destination because deliveries to it failed, with no successful delivery in between, for longer than a threshold that Anthropic configures and that is not part of this contract. The reason is `invalid_address` instead when the most recent failed delivery failed with an invalid address.

          - `JsonElement Type = "sustained_failure"`

        - `class BetaTelemetryDestinationDisabledReasonInvalidAddress`

          The API disabled the destination because deliveries to it failed for longer than the same threshold as for `sustained_failure`, and the most recent failed delivery failed with an invalid address: the DNS answer says that the endpoint's hostname doesn't exist or doesn't have an address, or the address that the API would connect to isn't publicly routable or is reserved, for example a loopback, link-local, private-network, or cloud-metadata address. The API doesn't connect to such an address, and retries the delivery a bounded number of times as it does after a timeout. A timeout or a server failure of the DNS lookup is a temporary DNS failure instead, not an invalid address.

          - `JsonElement Type = "invalid_address"`

        - `class BetaTelemetryDestinationDisabledReasonRedirect`

          The API disabled the destination because the endpoint answered a delivery with a 3xx status. Redirects are never followed, and one such answer disables the destination at once.

          - `JsonElement Type = "redirect"`

  - `required BetaTelemetryDestinationTraces Traces`

    The destination's settings for the traces it receives.

    - `required BetaTelemetryDestinationContentMode ContentMode`

      What the exported spans contain.

      - `MetadataOnly("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("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`.

    - `required bool Enabled`

      Whether the destination receives traces. A destination whose `enabled` is false keeps its other settings.

    - `required string? EndpointUrl`

      The full URL that the API posts traces to, exactly as registered, or `null` if the destination doesn't have one.

      When it is `null`, the API posts traces to `endpoint_url` with `/v1/traces` appended.

    - `required int? MaxContentBytes`

      The most bytes of content that one exported span can contain, or `null` if only the API's maximum applies.

      Content means model prompts and responses, and tool inputs and outputs. The API shortens longer content to this size before it delivers the span. A destination whose `content_mode` is `metadata_only` keeps this value. It applies once `content_mode` is `content`.

      format: int32

  - `required DateTimeOffset UpdatedAt`

    Time of the last change to the destination's configuration or state. Changes to `delivery_health` don't change it.

    An update that sets a header value always changes it, even when the value is the same as before. Adding or removing a single workspace on the destination's list doesn't change it. An update that changes the list does.

    format: date-time

  - `required BetaTelemetryDestinationWorkspaces Workspaces`

    Which of the organization's workspaces the destination covers.

    - `class BetaTelemetryDestinationWorkspacesAll`

      The destination covers every workspace of the organization, including the default workspace, archived workspaces, and workspaces created later. It doesn't have a list.

      - `JsonElement Type = "all"`

    - `class BetaTelemetryDestinationWorkspacesInclude`

      The destination covers the workspaces on its list, and no others.

      - `JsonElement Type = "include"`

    - `class BetaTelemetryDestinationWorkspacesExclude`

      The destination covers every workspace of the organization except the workspaces on its list. A workspace created later is covered until it is added to the list.

      - `JsonElement Type = "exclude"`

### Example

```csharp
using System;
using Anthropic.Models.Beta.Organization.TelemetryDestinations;

TelemetryDestinationUpdateParams parameters = new()
{
    DestinationID = "destination_id"
};

var betaTelemetryDestination = await client.Beta.Organization.TelemetryDestinations.Update(parameters);

Console.WriteLine(betaTelemetryDestination);
```

#### Response (200)

```json
{
  "id": "id",
  "created_at": "2019-12-27T18:11:19.117Z",
  "delivery_health": {
    "last_error": "last_error",
    "last_error_at": "2019-12-27T18:11:19.117Z",
    "last_success_at": "2019-12-27T18:11:19.117Z"
  },
  "display_name": "display_name",
  "endpoint_url": "endpoint_url",
  "header_names": [
    "string"
  ],
  "state": {
    "type": "enabled"
  },
  "traces": {
    "content_mode": "metadata_only",
    "enabled": true,
    "endpoint_url": "endpoint_url",
    "max_content_bytes": 0
  },
  "type": "telemetry_destination",
  "updated_at": "2019-12-27T18:11:19.117Z",
  "workspaces": {
    "type": "all"
  }
}
```

## Delete a Telemetry Destination

`BetaDeletedTelemetryDestination Beta.Organization.TelemetryDestinations.Delete(parameters, cancellationToken = default)`

**DELETE** `/v1/organizations/telemetry_destinations/{destination_id}`

Delete a destination and its workspace list.

The API stops sending spans to the destination. The spans of the workspaces it covered still go to the other destinations that cover them. A deleted destination can't be read, listed, or restored.

See the [OpenTelemetry export guide](https://platform.claude.com/docs/en/manage-claude/opentelemetry?sdk_languages=csharp#delivery-and-health) to learn more about managing a destination.

### Parameters

- `TelemetryDestinationDeleteParams parameters`

  - `required string destinationID` (path parameter)

    ID of the destination (`tdst_...`).

  - `IReadOnlyList<AnthropicBeta> betas` (header parameter)

    This endpoint is in beta: requests must send `telemetry-destinations-2026-08-11` in this header.

    - `MessageBatches2024_09_24("message-batches-2024-09-24")`

    - `PromptCaching2024_07_31("prompt-caching-2024-07-31")`

    - `ComputerUse2024_10_22("computer-use-2024-10-22")`

    - `ComputerUse2025_01_24("computer-use-2025-01-24")`

    - `Pdfs2024_09_25("pdfs-2024-09-25")`

    - `TokenCounting2024_11_01("token-counting-2024-11-01")`

    - `TokenEfficientTools2025_02_19("token-efficient-tools-2025-02-19")`

    - `Output128k2025_02_19("output-128k-2025-02-19")`

    - `FilesApi2025_04_14("files-api-2025-04-14")`

    - `McpClient2025_04_04("mcp-client-2025-04-04")`

    - `McpClient2025_11_20("mcp-client-2025-11-20")`

    - `DevFullThinking2025_05_14("dev-full-thinking-2025-05-14")`

    - `InterleavedThinking2025_05_14("interleaved-thinking-2025-05-14")`

    - `CodeExecution2025_05_22("code-execution-2025-05-22")`

    - `ExtendedCacheTtl2025_04_11("extended-cache-ttl-2025-04-11")`

    - `Context1m2025_08_07("context-1m-2025-08-07")`

    - `ContextManagement2025_06_27("context-management-2025-06-27")`

    - `ModelContextWindowExceeded2025_08_26("model-context-window-exceeded-2025-08-26")`

    - `Skills2025_10_02("skills-2025-10-02")`

    - `FastMode2026_02_01("fast-mode-2026-02-01")`

    - `Output300k2026_03_24("output-300k-2026-03-24")`

    - `UserProfiles2026_03_24("user-profiles-2026-03-24")`

    - `UserProfiles2026_08_18("user-profiles-2026-08-18")`

    - `UserProfiles2026_09_04("user-profiles-2026-09-04")`

    - `AdvisorTool2026_03_01("advisor-tool-2026-03-01")`

    - `ManagedAgents2026_04_01("managed-agents-2026-04-01")`

    - `CacheDiagnosis2026_04_07("cache-diagnosis-2026-04-07")`

    - `Dreaming2026_04_21("dreaming-2026-04-21")`

    - `ThinkingTokenCount2026_05_13("thinking-token-count-2026-05-13")`

    - `ServerSideFallback2026_06_01("server-side-fallback-2026-06-01")`

    - `ServerSideFallback2026_07_01("server-side-fallback-2026-07-01")`

    - `FallbackCredit2026_06_01("fallback-credit-2026-06-01")`

    - `FallbackCredit2026_07_01("fallback-credit-2026-07-01")`

    - `AgentMemory2026_07_22("agent-memory-2026-07-22")`

    - `MidConversationToolChanges2026_07_01("mid-conversation-tool-changes-2026-07-01")`

    - `Compact2026_01_12("compact-2026-01-12")`

    - `ComputerUse2025_11_24("computer-use-2025-11-24")`

    - `McpTunnels2026_06_22("mcp-tunnels-2026-06-22")`

    - `StructuredOutputs2025_11_13("structured-outputs-2025-11-13")`

    - `TaskBudgets2026_03_13("task-budgets-2026-03-13")`

    - `ThinkingDisplayUpdates2026_08_18("thinking-display-updates-2026-08-18")`

    - `CEUserManagement2026_07_13("ce-user-management-2026-07-13")`

    - `MidConversationOutputConfig2026_07_01("mid-conversation-output-config-2026-07-01")`

    - `ThinkingBindingControls2026_08_01("thinking-binding-controls-2026-08-01")`

    - `MidConversationSystemClearAt2026_08_21("mid-conversation-system-clear-at-2026-08-21")`

    - `Compact2026_09_04("compact-2026-09-04")`

    - `InlineTools2026_09_15("inline-tools-2026-09-15")`

    - `McpClient2026_09_15("mcp-client-2026-09-15")`

    - `CEPlugins2026_09_01("ce-plugins-2026-09-01")`

    - `SpendLimitReads2026_09_26("spend-limit-reads-2026-09-26")`

    - `TelemetryDestinations2026_08_11("telemetry-destinations-2026-08-11")`

    - `Webhooks2026_10_07("webhooks-2026-10-07")`

### Returns

- `class BetaDeletedTelemetryDestination`

  Confirmation that a destination was deleted.

  - `JsonElement Type = "telemetry_destination_deleted"`

  - `required string ID`

    ID of the deleted destination (`tdst_...`).

### Example

```csharp
using System;
using Anthropic.Models.Beta.Organization.TelemetryDestinations;

TelemetryDestinationDeleteParams parameters = new()
{
    DestinationID = "destination_id"
};

var betaDeletedTelemetryDestination = await client.Beta.Organization.TelemetryDestinations.Delete(parameters);

Console.WriteLine(betaDeletedTelemetryDestination);
```

#### Response (200)

```json
{
  "id": "id",
  "type": "telemetry_destination_deleted"
}
```

## Test a Telemetry Destination

`BetaTelemetryDestinationTestResponse Beta.Organization.TelemetryDestinations.Test(parameters, cancellationToken = default)`

**POST** `/v1/organizations/telemetry_destinations/{destination_id}/test`

Send one test span, named `anthropic.test`, to the destination with its registered headers, once and without retries, and report the destination's answer. The response is 200 whether or not the destination answered with a 2xx status: its `result` has the type `success`, or the type `failure` and the reason in `error`. The destination's configuration, `state` and `delivery_health` do not change. A disabled destination can be tested too. Wait 10 seconds between tests of one destination; a request that comes sooner may be answered with status 429.

### Parameters

- `TelemetryDestinationTestParams parameters`

  - `required string destinationID` (path parameter)

    ID of the destination to test (starts with `tdst_`).

  - `IReadOnlyList<AnthropicBeta> betas` (header parameter)

    This endpoint is in beta: requests must send `telemetry-destinations-2026-08-11` in this header.

    - `MessageBatches2024_09_24("message-batches-2024-09-24")`

    - `PromptCaching2024_07_31("prompt-caching-2024-07-31")`

    - `ComputerUse2024_10_22("computer-use-2024-10-22")`

    - `ComputerUse2025_01_24("computer-use-2025-01-24")`

    - `Pdfs2024_09_25("pdfs-2024-09-25")`

    - `TokenCounting2024_11_01("token-counting-2024-11-01")`

    - `TokenEfficientTools2025_02_19("token-efficient-tools-2025-02-19")`

    - `Output128k2025_02_19("output-128k-2025-02-19")`

    - `FilesApi2025_04_14("files-api-2025-04-14")`

    - `McpClient2025_04_04("mcp-client-2025-04-04")`

    - `McpClient2025_11_20("mcp-client-2025-11-20")`

    - `DevFullThinking2025_05_14("dev-full-thinking-2025-05-14")`

    - `InterleavedThinking2025_05_14("interleaved-thinking-2025-05-14")`

    - `CodeExecution2025_05_22("code-execution-2025-05-22")`

    - `ExtendedCacheTtl2025_04_11("extended-cache-ttl-2025-04-11")`

    - `Context1m2025_08_07("context-1m-2025-08-07")`

    - `ContextManagement2025_06_27("context-management-2025-06-27")`

    - `ModelContextWindowExceeded2025_08_26("model-context-window-exceeded-2025-08-26")`

    - `Skills2025_10_02("skills-2025-10-02")`

    - `FastMode2026_02_01("fast-mode-2026-02-01")`

    - `Output300k2026_03_24("output-300k-2026-03-24")`

    - `UserProfiles2026_03_24("user-profiles-2026-03-24")`

    - `UserProfiles2026_08_18("user-profiles-2026-08-18")`

    - `UserProfiles2026_09_04("user-profiles-2026-09-04")`

    - `AdvisorTool2026_03_01("advisor-tool-2026-03-01")`

    - `ManagedAgents2026_04_01("managed-agents-2026-04-01")`

    - `CacheDiagnosis2026_04_07("cache-diagnosis-2026-04-07")`

    - `Dreaming2026_04_21("dreaming-2026-04-21")`

    - `ThinkingTokenCount2026_05_13("thinking-token-count-2026-05-13")`

    - `ServerSideFallback2026_06_01("server-side-fallback-2026-06-01")`

    - `ServerSideFallback2026_07_01("server-side-fallback-2026-07-01")`

    - `FallbackCredit2026_06_01("fallback-credit-2026-06-01")`

    - `FallbackCredit2026_07_01("fallback-credit-2026-07-01")`

    - `AgentMemory2026_07_22("agent-memory-2026-07-22")`

    - `MidConversationToolChanges2026_07_01("mid-conversation-tool-changes-2026-07-01")`

    - `Compact2026_01_12("compact-2026-01-12")`

    - `ComputerUse2025_11_24("computer-use-2025-11-24")`

    - `McpTunnels2026_06_22("mcp-tunnels-2026-06-22")`

    - `StructuredOutputs2025_11_13("structured-outputs-2025-11-13")`

    - `TaskBudgets2026_03_13("task-budgets-2026-03-13")`

    - `ThinkingDisplayUpdates2026_08_18("thinking-display-updates-2026-08-18")`

    - `CEUserManagement2026_07_13("ce-user-management-2026-07-13")`

    - `MidConversationOutputConfig2026_07_01("mid-conversation-output-config-2026-07-01")`

    - `ThinkingBindingControls2026_08_01("thinking-binding-controls-2026-08-01")`

    - `MidConversationSystemClearAt2026_08_21("mid-conversation-system-clear-at-2026-08-21")`

    - `Compact2026_09_04("compact-2026-09-04")`

    - `InlineTools2026_09_15("inline-tools-2026-09-15")`

    - `McpClient2026_09_15("mcp-client-2026-09-15")`

    - `CEPlugins2026_09_01("ce-plugins-2026-09-01")`

    - `SpendLimitReads2026_09_26("spend-limit-reads-2026-09-26")`

    - `TelemetryDestinations2026_08_11("telemetry-destinations-2026-08-11")`

    - `Webhooks2026_10_07("webhooks-2026-10-07")`

### Returns

- `class BetaTelemetryDestinationTestResponse`

  The result of one test span sent to a destination.

  - `JsonElement Type = "telemetry_destination_test"`

  - `required BetaTelemetryDestinationTestResult Result`

    How the test went: `success` when the destination answered with a 2xx status, else `failure` with the reason.

    - `class BetaTelemetryDestinationTestSuccess`

      The destination answered the test span with a 2xx status.

      - `JsonElement Type = "success"`

    - `class BetaTelemetryDestinationTestFailure`

      The test span was not delivered.

      - `JsonElement Type = "failure"`

      - `required string Error`

        A message that describes why the test span was not delivered, including the HTTP status code when the destination returned one. Examples: `HTTP error (status 403)`, `timeout`, `TLS failure`. It has the same form as the destination's `delivery_health.last_error` and never contains the destination's response body, any header value, a network address, or TLS details.

### Example

```csharp
using System;
using Anthropic.Models.Beta.Organization.TelemetryDestinations;

TelemetryDestinationTestParams parameters = new()
{
    DestinationID = "destination_id"
};

var betaTelemetryDestinationTestResponse = await client.Beta.Organization.TelemetryDestinations.Test(parameters);

Console.WriteLine(betaTelemetryDestinationTestResponse);
```

#### Response (200)

```json
{
  "result": {
    "type": "success"
  },
  "type": "telemetry_destination_test"
}
```

## Domain types

### Beta Deleted Telemetry Destination

- `class BetaDeletedTelemetryDestination`

  Confirmation that a destination was deleted.

  - `JsonElement Type = "telemetry_destination_deleted"`

  - `required string ID`

    ID of the deleted destination (`tdst_...`).

### Beta Telemetry Destination

- `class BetaTelemetryDestination`

  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.

  - `JsonElement Type = "telemetry_destination"`

  - `required string ID`

    The unique ID of the destination (`tdst_...`).

  - `required DateTimeOffset CreatedAt`

    Time the destination was created.

    format: date-time

  - `required BetaTelemetryDestinationDeliveryHealth DeliveryHealth`

    The most recent delivery results for this destination.

    - `required string? LastError`

      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=csharp#delivery-errors) to learn the likely cause of each error.

    - `required DateTimeOffset? LastErrorAt`

      Time of the failure that `last_error` describes. Changes together with `last_error`. Null until a delivery first fails.

      format: date-time

    - `required DateTimeOffset? LastSuccessAt`

      Time of the most recent successful delivery to the destination, or `null` if no delivery has succeeded yet.

      format: date-time

  - `required string? DisplayName`

    Human-readable name for the destination. Null when none was set.

  - `required string EndpointUrl`

    The base URL of the destination's OTLP/HTTP endpoint, exactly as registered.

    The API appends the per-signal path, such as `/v1/traces`, on delivery, unless `traces.endpoint_url` is set.

  - `required IReadOnlyList<string> HeaderNames`

    Names of the registered request headers. Header values are write-only and are never returned.

  - `required BetaTelemetryDestinationState State`

    Whether the destination receives deliveries.

    - `class BetaTelemetryDestinationStateEnabled`

      The telemetry destination receives the spans of the workspaces that it covers.

      - `JsonElement Type = "enabled"`

    - `class BetaTelemetryDestinationStateDisabled`

      The API doesn't deliver anything to the telemetry destination.

      Spans produced while it is disabled aren't delivered later.

      - `JsonElement Type = "disabled"`

      - `required BetaTelemetryDestinationDisabledReason Reason`

        Whether a caller or the API disabled the destination and, when the API did, why. Read-only.

        - `class BetaTelemetryDestinationDisabledReasonCaller`

          A caller disabled the destination with an update that set `state` to `disabled`.

          - `JsonElement Type = "caller"`

        - `class BetaTelemetryDestinationDisabledReasonSustainedFailure`

          The API disabled the destination because deliveries to it failed, with no successful delivery in between, for longer than a threshold that Anthropic configures and that is not part of this contract. The reason is `invalid_address` instead when the most recent failed delivery failed with an invalid address.

          - `JsonElement Type = "sustained_failure"`

        - `class BetaTelemetryDestinationDisabledReasonInvalidAddress`

          The API disabled the destination because deliveries to it failed for longer than the same threshold as for `sustained_failure`, and the most recent failed delivery failed with an invalid address: the DNS answer says that the endpoint's hostname doesn't exist or doesn't have an address, or the address that the API would connect to isn't publicly routable or is reserved, for example a loopback, link-local, private-network, or cloud-metadata address. The API doesn't connect to such an address, and retries the delivery a bounded number of times as it does after a timeout. A timeout or a server failure of the DNS lookup is a temporary DNS failure instead, not an invalid address.

          - `JsonElement Type = "invalid_address"`

        - `class BetaTelemetryDestinationDisabledReasonRedirect`

          The API disabled the destination because the endpoint answered a delivery with a 3xx status. Redirects are never followed, and one such answer disables the destination at once.

          - `JsonElement Type = "redirect"`

  - `required BetaTelemetryDestinationTraces Traces`

    The destination's settings for the traces it receives.

    - `required BetaTelemetryDestinationContentMode ContentMode`

      What the exported spans contain.

      - `MetadataOnly("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("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`.

    - `required bool Enabled`

      Whether the destination receives traces. A destination whose `enabled` is false keeps its other settings.

    - `required string? EndpointUrl`

      The full URL that the API posts traces to, exactly as registered, or `null` if the destination doesn't have one.

      When it is `null`, the API posts traces to `endpoint_url` with `/v1/traces` appended.

    - `required int? MaxContentBytes`

      The most bytes of content that one exported span can contain, or `null` if only the API's maximum applies.

      Content means model prompts and responses, and tool inputs and outputs. The API shortens longer content to this size before it delivers the span. A destination whose `content_mode` is `metadata_only` keeps this value. It applies once `content_mode` is `content`.

      format: int32

  - `required DateTimeOffset UpdatedAt`

    Time of the last change to the destination's configuration or state. Changes to `delivery_health` don't change it.

    An update that sets a header value always changes it, even when the value is the same as before. Adding or removing a single workspace on the destination's list doesn't change it. An update that changes the list does.

    format: date-time

  - `required BetaTelemetryDestinationWorkspaces Workspaces`

    Which of the organization's workspaces the destination covers.

    - `class BetaTelemetryDestinationWorkspacesAll`

      The destination covers every workspace of the organization, including the default workspace, archived workspaces, and workspaces created later. It doesn't have a list.

      - `JsonElement Type = "all"`

    - `class BetaTelemetryDestinationWorkspacesInclude`

      The destination covers the workspaces on its list, and no others.

      - `JsonElement Type = "include"`

    - `class BetaTelemetryDestinationWorkspacesExclude`

      The destination covers every workspace of the organization except the workspaces on its list. A workspace created later is covered until it is added to the list.

      - `JsonElement Type = "exclude"`

### Beta Telemetry Destination Content Mode

- `enum BetaTelemetryDestinationContentMode`

  What the spans that the API exports to a telemetry destination contain.

  See the [OpenTelemetry export guide](https://platform.claude.com/docs/en/manage-claude/opentelemetry?sdk_languages=csharp#choose-a-content-mode) to learn what the spans contain in each content mode.

  - `MetadataOnly("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("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`.

### Beta Telemetry Destination Delivery Health

- `class BetaTelemetryDestinationDeliveryHealth`

  The most recent delivery results that the API records for a telemetry destination.

  Changes to the destination's configuration or state don't reset these fields. Changes to these fields don't change `updated_at`. The values can lag behind the latest deliveries.

  See the [OpenTelemetry export guide](https://platform.claude.com/docs/en/manage-claude/opentelemetry?sdk_languages=csharp#delivery-and-health) to learn how the API delivers spans and when it disables a destination.

  - `required string? LastError`

    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=csharp#delivery-errors) to learn the likely cause of each error.

  - `required DateTimeOffset? LastErrorAt`

    Time of the failure that `last_error` describes. Changes together with `last_error`. Null until a delivery first fails.

    format: date-time

  - `required DateTimeOffset? LastSuccessAt`

    Time of the most recent successful delivery to the destination, or `null` if no delivery has succeeded yet.

    format: date-time

### Beta Telemetry Destination Disabled Reason

- `class BetaTelemetryDestinationDisabledReason: union`

  Why the destination is disabled: `caller` when a caller disabled it, or the reason the API disabled it automatically (`sustained_failure`, `invalid_address`, or `redirect`). Every automatic disable is reversible with an update that sets `state` to `enabled`. An update that sets `disabled` on a destination that is already disabled keeps its reason.

  - `class BetaTelemetryDestinationDisabledReasonCaller`

    A caller disabled the destination with an update that set `state` to `disabled`.

    - `JsonElement Type = "caller"`

  - `class BetaTelemetryDestinationDisabledReasonSustainedFailure`

    The API disabled the destination because deliveries to it failed, with no successful delivery in between, for longer than a threshold that Anthropic configures and that is not part of this contract. The reason is `invalid_address` instead when the most recent failed delivery failed with an invalid address.

    - `JsonElement Type = "sustained_failure"`

  - `class BetaTelemetryDestinationDisabledReasonInvalidAddress`

    The API disabled the destination because deliveries to it failed for longer than the same threshold as for `sustained_failure`, and the most recent failed delivery failed with an invalid address: the DNS answer says that the endpoint's hostname doesn't exist or doesn't have an address, or the address that the API would connect to isn't publicly routable or is reserved, for example a loopback, link-local, private-network, or cloud-metadata address. The API doesn't connect to such an address, and retries the delivery a bounded number of times as it does after a timeout. A timeout or a server failure of the DNS lookup is a temporary DNS failure instead, not an invalid address.

    - `JsonElement Type = "invalid_address"`

  - `class BetaTelemetryDestinationDisabledReasonRedirect`

    The API disabled the destination because the endpoint answered a delivery with a 3xx status. Redirects are never followed, and one such answer disables the destination at once.

    - `JsonElement Type = "redirect"`

### Beta Telemetry Destination Disabled Reason Caller

- `class BetaTelemetryDestinationDisabledReasonCaller`

  A caller disabled the destination with an update that set `state` to `disabled`.

  - `JsonElement Type = "caller"`

### Beta Telemetry Destination Disabled Reason Invalid Address

- `class BetaTelemetryDestinationDisabledReasonInvalidAddress`

  The API disabled the destination because deliveries to it failed for longer than the same threshold as for `sustained_failure`, and the most recent failed delivery failed with an invalid address: the DNS answer says that the endpoint's hostname doesn't exist or doesn't have an address, or the address that the API would connect to isn't publicly routable or is reserved, for example a loopback, link-local, private-network, or cloud-metadata address. The API doesn't connect to such an address, and retries the delivery a bounded number of times as it does after a timeout. A timeout or a server failure of the DNS lookup is a temporary DNS failure instead, not an invalid address.

  - `JsonElement Type = "invalid_address"`

### Beta Telemetry Destination Disabled Reason Redirect

- `class BetaTelemetryDestinationDisabledReasonRedirect`

  The API disabled the destination because the endpoint answered a delivery with a 3xx status. Redirects are never followed, and one such answer disables the destination at once.

  - `JsonElement Type = "redirect"`

### Beta Telemetry Destination Disabled Reason Sustained Failure

- `class BetaTelemetryDestinationDisabledReasonSustainedFailure`

  The API disabled the destination because deliveries to it failed, with no successful delivery in between, for longer than a threshold that Anthropic configures and that is not part of this contract. The reason is `invalid_address` instead when the most recent failed delivery failed with an invalid address.

  - `JsonElement Type = "sustained_failure"`

### Beta Telemetry Destination State

- `class BetaTelemetryDestinationState: union`

  Whether a telemetry destination receives deliveries.

  A caller can set either state. The API also disables an enabled destination on its own in some cases. The `reason` of the disabled state says whether a caller or the API disabled the destination and, when the API did, why.

  See the [OpenTelemetry export guide](https://platform.claude.com/docs/en/manage-claude/opentelemetry?sdk_languages=csharp#delivery-and-health) to learn when the API disables a destination.

  - `class BetaTelemetryDestinationStateEnabled`

    The telemetry destination receives the spans of the workspaces that it covers.

    - `JsonElement Type = "enabled"`

  - `class BetaTelemetryDestinationStateDisabled`

    The API doesn't deliver anything to the telemetry destination.

    Spans produced while it is disabled aren't delivered later.

    - `JsonElement Type = "disabled"`

    - `required BetaTelemetryDestinationDisabledReason Reason`

      Whether a caller or the API disabled the destination and, when the API did, why. Read-only.

      - `class BetaTelemetryDestinationDisabledReasonCaller`

        A caller disabled the destination with an update that set `state` to `disabled`.

        - `JsonElement Type = "caller"`

      - `class BetaTelemetryDestinationDisabledReasonSustainedFailure`

        The API disabled the destination because deliveries to it failed, with no successful delivery in between, for longer than a threshold that Anthropic configures and that is not part of this contract. The reason is `invalid_address` instead when the most recent failed delivery failed with an invalid address.

        - `JsonElement Type = "sustained_failure"`

      - `class BetaTelemetryDestinationDisabledReasonInvalidAddress`

        The API disabled the destination because deliveries to it failed for longer than the same threshold as for `sustained_failure`, and the most recent failed delivery failed with an invalid address: the DNS answer says that the endpoint's hostname doesn't exist or doesn't have an address, or the address that the API would connect to isn't publicly routable or is reserved, for example a loopback, link-local, private-network, or cloud-metadata address. The API doesn't connect to such an address, and retries the delivery a bounded number of times as it does after a timeout. A timeout or a server failure of the DNS lookup is a temporary DNS failure instead, not an invalid address.

        - `JsonElement Type = "invalid_address"`

      - `class BetaTelemetryDestinationDisabledReasonRedirect`

        The API disabled the destination because the endpoint answered a delivery with a 3xx status. Redirects are never followed, and one such answer disables the destination at once.

        - `JsonElement Type = "redirect"`

### Beta Telemetry Destination State Disabled

- `class BetaTelemetryDestinationStateDisabled`

  The API doesn't deliver anything to the telemetry destination.

  Spans produced while it is disabled aren't delivered later.

  - `JsonElement Type = "disabled"`

  - `required BetaTelemetryDestinationDisabledReason Reason`

    Whether a caller or the API disabled the destination and, when the API did, why. Read-only.

    - `class BetaTelemetryDestinationDisabledReasonCaller`

      A caller disabled the destination with an update that set `state` to `disabled`.

      - `JsonElement Type = "caller"`

    - `class BetaTelemetryDestinationDisabledReasonSustainedFailure`

      The API disabled the destination because deliveries to it failed, with no successful delivery in between, for longer than a threshold that Anthropic configures and that is not part of this contract. The reason is `invalid_address` instead when the most recent failed delivery failed with an invalid address.

      - `JsonElement Type = "sustained_failure"`

    - `class BetaTelemetryDestinationDisabledReasonInvalidAddress`

      The API disabled the destination because deliveries to it failed for longer than the same threshold as for `sustained_failure`, and the most recent failed delivery failed with an invalid address: the DNS answer says that the endpoint's hostname doesn't exist or doesn't have an address, or the address that the API would connect to isn't publicly routable or is reserved, for example a loopback, link-local, private-network, or cloud-metadata address. The API doesn't connect to such an address, and retries the delivery a bounded number of times as it does after a timeout. A timeout or a server failure of the DNS lookup is a temporary DNS failure instead, not an invalid address.

      - `JsonElement Type = "invalid_address"`

    - `class BetaTelemetryDestinationDisabledReasonRedirect`

      The API disabled the destination because the endpoint answered a delivery with a 3xx status. Redirects are never followed, and one such answer disables the destination at once.

      - `JsonElement Type = "redirect"`

### Beta Telemetry Destination State Disabled Params

- `class BetaTelemetryDestinationStateDisabledParams`

  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`.

  - `JsonElement Type = "disabled"`

### Beta Telemetry Destination State Enabled

- `class BetaTelemetryDestinationStateEnabled`

  The telemetry destination receives the spans of the workspaces that it covers.

  - `JsonElement Type = "enabled"`

### Beta Telemetry Destination State Enabled Params

- `class BetaTelemetryDestinationStateEnabledParams`

  Start deliveries to the telemetry destination again.

  This doesn't reset `delivery_health`.

  - `JsonElement Type = "enabled"`

### Beta Telemetry Destination State Params

- `class BetaTelemetryDestinationStateParams: union`

  The state to set on a telemetry destination, by `type` alone.

  A caller can't set the `reason` of a disabled state. Only the API sets it.

  - `class BetaTelemetryDestinationStateEnabledParams`

    Start deliveries to the telemetry destination again.

    This doesn't reset `delivery_health`.

    - `JsonElement Type = "enabled"`

  - `class BetaTelemetryDestinationStateDisabledParams`

    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`.

    - `JsonElement Type = "disabled"`

### Beta Telemetry Destination Test Failure

- `class BetaTelemetryDestinationTestFailure`

  The test span was not delivered.

  - `JsonElement Type = "failure"`

  - `required string Error`

    A message that describes why the test span was not delivered, including the HTTP status code when the destination returned one. Examples: `HTTP error (status 403)`, `timeout`, `TLS failure`. It has the same form as the destination's `delivery_health.last_error` and never contains the destination's response body, any header value, a network address, or TLS details.

### Beta Telemetry Destination Test Response

- `class BetaTelemetryDestinationTestResponse`

  The result of one test span sent to a destination.

  - `JsonElement Type = "telemetry_destination_test"`

  - `required BetaTelemetryDestinationTestResult Result`

    How the test went: `success` when the destination answered with a 2xx status, else `failure` with the reason.

    - `class BetaTelemetryDestinationTestSuccess`

      The destination answered the test span with a 2xx status.

      - `JsonElement Type = "success"`

    - `class BetaTelemetryDestinationTestFailure`

      The test span was not delivered.

      - `JsonElement Type = "failure"`

      - `required string Error`

        A message that describes why the test span was not delivered, including the HTTP status code when the destination returned one. Examples: `HTTP error (status 403)`, `timeout`, `TLS failure`. It has the same form as the destination's `delivery_health.last_error` and never contains the destination's response body, any header value, a network address, or TLS details.

### Beta Telemetry Destination Test Result

- `class BetaTelemetryDestinationTestResult: union`

  The outcome of a test: `success`, or `failure` with the reason.

  - `class BetaTelemetryDestinationTestSuccess`

    The destination answered the test span with a 2xx status.

    - `JsonElement Type = "success"`

  - `class BetaTelemetryDestinationTestFailure`

    The test span was not delivered.

    - `JsonElement Type = "failure"`

    - `required string Error`

      A message that describes why the test span was not delivered, including the HTTP status code when the destination returned one. Examples: `HTTP error (status 403)`, `timeout`, `TLS failure`. It has the same form as the destination's `delivery_health.last_error` and never contains the destination's response body, any header value, a network address, or TLS details.

### Beta Telemetry Destination Test Success

- `class BetaTelemetryDestinationTestSuccess`

  The destination answered the test span with a 2xx status.

  - `JsonElement Type = "success"`

### Beta Telemetry Destination Traces

- `class BetaTelemetryDestinationTraces`

  A telemetry destination's settings for the traces it receives.

  - `required BetaTelemetryDestinationContentMode ContentMode`

    What the exported spans contain.

    - `MetadataOnly("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("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`.

  - `required bool Enabled`

    Whether the destination receives traces. A destination whose `enabled` is false keeps its other settings.

  - `required string? EndpointUrl`

    The full URL that the API posts traces to, exactly as registered, or `null` if the destination doesn't have one.

    When it is `null`, the API posts traces to `endpoint_url` with `/v1/traces` appended.

  - `required int? MaxContentBytes`

    The most bytes of content that one exported span can contain, or `null` if only the API's maximum applies.

    Content means model prompts and responses, and tool inputs and outputs. The API shortens longer content to this size before it delivers the span. A destination whose `content_mode` is `metadata_only` keeps this value. It applies once `content_mode` is `content`.

    format: int32

### Beta Telemetry Destination Traces Params

- `class BetaTelemetryDestinationTracesParams`

  The settings for the traces that a telemetry destination receives, as a create or update request sets them. An omitted field takes its default on create and keeps its stored value on update.

  - `BetaTelemetryDestinationContentMode? ContentMode`

    What the exported spans contain. Defaults to `metadata_only` on create.

    On update, `null` sets `metadata_only`.

    - `MetadataOnly("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("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`.

  - `bool Enabled`

    Whether the destination receives traces. Defaults to true on create. It cannot be null.

  - `string? EndpointUrl`

    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

  - `int? MaxContentBytes`

    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

### Beta Telemetry Destination Workspaces

- `class BetaTelemetryDestinationWorkspaces: union`

  Which of the organization's workspaces a telemetry destination covers.

  Several destinations can cover the same workspace. Each of them receives the workspace's spans while it is enabled.

  The workspace list of an `include` or `exclude` destination isn't part of the destination object. List the destination's workspaces to read it. Add or remove one workspace at a time, or replace the whole list with an update. A list holds at most 1,000 workspaces.

  - `class BetaTelemetryDestinationWorkspacesAll`

    The destination covers every workspace of the organization, including the default workspace, archived workspaces, and workspaces created later. It doesn't have a list.

    - `JsonElement Type = "all"`

  - `class BetaTelemetryDestinationWorkspacesInclude`

    The destination covers the workspaces on its list, and no others.

    - `JsonElement Type = "include"`

  - `class BetaTelemetryDestinationWorkspacesExclude`

    The destination covers every workspace of the organization except the workspaces on its list. A workspace created later is covered until it is added to the list.

    - `JsonElement Type = "exclude"`

### Beta Telemetry Destination Workspaces All

- `class BetaTelemetryDestinationWorkspacesAll`

  The destination covers every workspace of the organization, including the default workspace, archived workspaces, and workspaces created later. It doesn't have a list.

  - `JsonElement Type = "all"`

### Beta Telemetry Destination Workspaces All Params

- `class BetaTelemetryDestinationWorkspacesAllParams`

  Cover every workspace of the organization. Doesn't take `workspace_ids`.

  An update that sets `all` empties the destination's workspace list.

  - `JsonElement Type = "all"`

### Beta Telemetry Destination Workspaces Exclude

- `class BetaTelemetryDestinationWorkspacesExclude`

  The destination covers every workspace of the organization except the workspaces on its list. A workspace created later is covered until it is added to the list.

  - `JsonElement Type = "exclude"`

### Beta Telemetry Destination Workspaces Exclude Params

- `class BetaTelemetryDestinationWorkspacesExcludeParams`

  Cover every workspace of the organization except the workspaces on the list.

  - `JsonElement Type = "exclude"`

  - `IReadOnlyList<string> WorkspaceIds`

    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.

### Beta Telemetry Destination Workspaces Include

- `class BetaTelemetryDestinationWorkspacesInclude`

  The destination covers the workspaces on its list, and no others.

  - `JsonElement Type = "include"`

### Beta Telemetry Destination Workspaces Include Params

- `class BetaTelemetryDestinationWorkspacesIncludeParams`

  Cover only the workspaces on the list.

  - `JsonElement Type = "include"`

  - `IReadOnlyList<string> WorkspaceIds`

    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.

### Beta Telemetry Destination Workspaces Params

- `class BetaTelemetryDestinationWorkspacesParams: union`

  Which of the organization's workspaces a telemetry destination covers, as a create or update request sets it.

  - `class BetaTelemetryDestinationWorkspacesAllParams`

    Cover every workspace of the organization. Doesn't take `workspace_ids`.

    An update that sets `all` empties the destination's workspace list.

    - `JsonElement Type = "all"`

  - `class BetaTelemetryDestinationWorkspacesIncludeParams`

    Cover only the workspaces on the list.

    - `JsonElement Type = "include"`

    - `IReadOnlyList<string> WorkspaceIds`

      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.

  - `class BetaTelemetryDestinationWorkspacesExcludeParams`

    Cover every workspace of the organization except the workspaces on the list.

    - `JsonElement Type = "exclude"`

    - `IReadOnlyList<string> WorkspaceIds`

      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.

## Telemetry Destinations › Workspaces

### List Telemetry Destination Workspaces

`WorkspaceListPage Beta.Organization.TelemetryDestinations.Workspaces.List(parameters, cancellationToken = default)`

**GET** `/v1/organizations/telemetry_destinations/{destination_id}/workspaces`

List the workspaces on a destination's workspace list, newest entry first.

A destination whose `workspaces.type` is `all` doesn't have a list, so its page is empty. The list includes archived workspaces.

See the [OpenTelemetry export guide](https://platform.claude.com/docs/en/manage-claude/opentelemetry?sdk_languages=csharp#choose-workspaces-for-a-destination) to learn more about choosing the workspaces of a destination.

#### Parameters

- `WorkspaceListParams parameters`

  - `required string destinationID` (path parameter)

    ID of the destination (`tdst_...`).

  - `int limit` (query parameter)

    Number of entries to return per page, between 1 and 1,000. Defaults to 20.

    format: int32

  - `string page` (query parameter)

    Opaque cursor from a previous response's `next_page`. Leave it out to get the first page.

  - `IReadOnlyList<AnthropicBeta> betas` (header parameter)

    This endpoint is in beta: requests must send `telemetry-destinations-2026-08-11` in this header.

    - `MessageBatches2024_09_24("message-batches-2024-09-24")`

    - `PromptCaching2024_07_31("prompt-caching-2024-07-31")`

    - `ComputerUse2024_10_22("computer-use-2024-10-22")`

    - `ComputerUse2025_01_24("computer-use-2025-01-24")`

    - `Pdfs2024_09_25("pdfs-2024-09-25")`

    - `TokenCounting2024_11_01("token-counting-2024-11-01")`

    - `TokenEfficientTools2025_02_19("token-efficient-tools-2025-02-19")`

    - `Output128k2025_02_19("output-128k-2025-02-19")`

    - `FilesApi2025_04_14("files-api-2025-04-14")`

    - `McpClient2025_04_04("mcp-client-2025-04-04")`

    - `McpClient2025_11_20("mcp-client-2025-11-20")`

    - `DevFullThinking2025_05_14("dev-full-thinking-2025-05-14")`

    - `InterleavedThinking2025_05_14("interleaved-thinking-2025-05-14")`

    - `CodeExecution2025_05_22("code-execution-2025-05-22")`

    - `ExtendedCacheTtl2025_04_11("extended-cache-ttl-2025-04-11")`

    - `Context1m2025_08_07("context-1m-2025-08-07")`

    - `ContextManagement2025_06_27("context-management-2025-06-27")`

    - `ModelContextWindowExceeded2025_08_26("model-context-window-exceeded-2025-08-26")`

    - `Skills2025_10_02("skills-2025-10-02")`

    - `FastMode2026_02_01("fast-mode-2026-02-01")`

    - `Output300k2026_03_24("output-300k-2026-03-24")`

    - `UserProfiles2026_03_24("user-profiles-2026-03-24")`

    - `UserProfiles2026_08_18("user-profiles-2026-08-18")`

    - `UserProfiles2026_09_04("user-profiles-2026-09-04")`

    - `AdvisorTool2026_03_01("advisor-tool-2026-03-01")`

    - `ManagedAgents2026_04_01("managed-agents-2026-04-01")`

    - `CacheDiagnosis2026_04_07("cache-diagnosis-2026-04-07")`

    - `Dreaming2026_04_21("dreaming-2026-04-21")`

    - `ThinkingTokenCount2026_05_13("thinking-token-count-2026-05-13")`

    - `ServerSideFallback2026_06_01("server-side-fallback-2026-06-01")`

    - `ServerSideFallback2026_07_01("server-side-fallback-2026-07-01")`

    - `FallbackCredit2026_06_01("fallback-credit-2026-06-01")`

    - `FallbackCredit2026_07_01("fallback-credit-2026-07-01")`

    - `AgentMemory2026_07_22("agent-memory-2026-07-22")`

    - `MidConversationToolChanges2026_07_01("mid-conversation-tool-changes-2026-07-01")`

    - `Compact2026_01_12("compact-2026-01-12")`

    - `ComputerUse2025_11_24("computer-use-2025-11-24")`

    - `McpTunnels2026_06_22("mcp-tunnels-2026-06-22")`

    - `StructuredOutputs2025_11_13("structured-outputs-2025-11-13")`

    - `TaskBudgets2026_03_13("task-budgets-2026-03-13")`

    - `ThinkingDisplayUpdates2026_08_18("thinking-display-updates-2026-08-18")`

    - `CEUserManagement2026_07_13("ce-user-management-2026-07-13")`

    - `MidConversationOutputConfig2026_07_01("mid-conversation-output-config-2026-07-01")`

    - `ThinkingBindingControls2026_08_01("thinking-binding-controls-2026-08-01")`

    - `MidConversationSystemClearAt2026_08_21("mid-conversation-system-clear-at-2026-08-21")`

    - `Compact2026_09_04("compact-2026-09-04")`

    - `InlineTools2026_09_15("inline-tools-2026-09-15")`

    - `McpClient2026_09_15("mcp-client-2026-09-15")`

    - `CEPlugins2026_09_01("ce-plugins-2026-09-01")`

    - `SpendLimitReads2026_09_26("spend-limit-reads-2026-09-26")`

    - `TelemetryDestinations2026_08_11("telemetry-destinations-2026-08-11")`

    - `Webhooks2026_10_07("webhooks-2026-10-07")`

#### Returns

- `class BetaTelemetryDestinationWorkspace`

  A workspace on a telemetry destination's workspace list.

  Under `include`, the destination covers the workspace. Under `exclude`, the destination covers every workspace except this one. The entry doesn't have an `id`. Its `telemetry_destination_id` and `workspace_id` together identify it.

  - `JsonElement Type = "telemetry_destination_workspace"`

  - `required DateTimeOffset CreatedAt`

    Time the workspace was added to the list.

    format: date-time

  - `required string TelemetryDestinationID`

    ID of the telemetry destination (`tdst_...`).

  - `required string WorkspaceID`

    ID of the workspace (`wrkspc_...`).

#### Example

```csharp
using System;
using Anthropic.Models.Beta.Organization.TelemetryDestinations.Workspaces;

WorkspaceListParams parameters = new() { DestinationID = "destination_id" };

var page = await client.Beta.Organization.TelemetryDestinations.Workspaces.List(parameters);
await foreach (var item in page.Paginate())
{
    Console.WriteLine(item);
}
```

##### Response (200)

```json
{
  "data": [
    {
      "created_at": "2019-12-27T18:11:19.117Z",
      "telemetry_destination_id": "telemetry_destination_id",
      "type": "telemetry_destination_workspace",
      "workspace_id": "workspace_id"
    }
  ],
  "next_page": "next_page"
}
```

### Add a Telemetry Destination Workspace

`BetaTelemetryDestinationWorkspace Beta.Organization.TelemetryDestinations.Workspaces.Add(parameters, cancellationToken = default)`

**POST** `/v1/organizations/telemetry_destinations/{destination_id}/workspaces/{workspace_id}`

Add one workspace to a destination's workspace list.

Under `include` the workspace's spans start going to the destination. Under `exclude` they stop. A list holds at most 1,000 workspaces.

Adding a workspace that is already on the list changes nothing and returns the existing entry. An archived workspace that isn't on the list yet can't be added. A destination whose `workspaces.type` is `all` doesn't have a list, so the API returns 400. To change which workspaces such a destination covers, update its `workspaces`.

See the [OpenTelemetry export guide](https://platform.claude.com/docs/en/manage-claude/opentelemetry?sdk_languages=csharp#choose-workspaces-for-a-destination) to learn more about choosing the workspaces of a destination.

#### Parameters

- `WorkspaceAddParams parameters`

  - `required string destinationID` (path parameter)

    ID of the destination (`tdst_...`).

  - `required string workspaceID` (path parameter)

    ID of the workspace to add (`wrkspc_...`).

  - `IReadOnlyList<AnthropicBeta> betas` (header parameter)

    This endpoint is in beta: requests must send `telemetry-destinations-2026-08-11` in this header.

    - `MessageBatches2024_09_24("message-batches-2024-09-24")`

    - `PromptCaching2024_07_31("prompt-caching-2024-07-31")`

    - `ComputerUse2024_10_22("computer-use-2024-10-22")`

    - `ComputerUse2025_01_24("computer-use-2025-01-24")`

    - `Pdfs2024_09_25("pdfs-2024-09-25")`

    - `TokenCounting2024_11_01("token-counting-2024-11-01")`

    - `TokenEfficientTools2025_02_19("token-efficient-tools-2025-02-19")`

    - `Output128k2025_02_19("output-128k-2025-02-19")`

    - `FilesApi2025_04_14("files-api-2025-04-14")`

    - `McpClient2025_04_04("mcp-client-2025-04-04")`

    - `McpClient2025_11_20("mcp-client-2025-11-20")`

    - `DevFullThinking2025_05_14("dev-full-thinking-2025-05-14")`

    - `InterleavedThinking2025_05_14("interleaved-thinking-2025-05-14")`

    - `CodeExecution2025_05_22("code-execution-2025-05-22")`

    - `ExtendedCacheTtl2025_04_11("extended-cache-ttl-2025-04-11")`

    - `Context1m2025_08_07("context-1m-2025-08-07")`

    - `ContextManagement2025_06_27("context-management-2025-06-27")`

    - `ModelContextWindowExceeded2025_08_26("model-context-window-exceeded-2025-08-26")`

    - `Skills2025_10_02("skills-2025-10-02")`

    - `FastMode2026_02_01("fast-mode-2026-02-01")`

    - `Output300k2026_03_24("output-300k-2026-03-24")`

    - `UserProfiles2026_03_24("user-profiles-2026-03-24")`

    - `UserProfiles2026_08_18("user-profiles-2026-08-18")`

    - `UserProfiles2026_09_04("user-profiles-2026-09-04")`

    - `AdvisorTool2026_03_01("advisor-tool-2026-03-01")`

    - `ManagedAgents2026_04_01("managed-agents-2026-04-01")`

    - `CacheDiagnosis2026_04_07("cache-diagnosis-2026-04-07")`

    - `Dreaming2026_04_21("dreaming-2026-04-21")`

    - `ThinkingTokenCount2026_05_13("thinking-token-count-2026-05-13")`

    - `ServerSideFallback2026_06_01("server-side-fallback-2026-06-01")`

    - `ServerSideFallback2026_07_01("server-side-fallback-2026-07-01")`

    - `FallbackCredit2026_06_01("fallback-credit-2026-06-01")`

    - `FallbackCredit2026_07_01("fallback-credit-2026-07-01")`

    - `AgentMemory2026_07_22("agent-memory-2026-07-22")`

    - `MidConversationToolChanges2026_07_01("mid-conversation-tool-changes-2026-07-01")`

    - `Compact2026_01_12("compact-2026-01-12")`

    - `ComputerUse2025_11_24("computer-use-2025-11-24")`

    - `McpTunnels2026_06_22("mcp-tunnels-2026-06-22")`

    - `StructuredOutputs2025_11_13("structured-outputs-2025-11-13")`

    - `TaskBudgets2026_03_13("task-budgets-2026-03-13")`

    - `ThinkingDisplayUpdates2026_08_18("thinking-display-updates-2026-08-18")`

    - `CEUserManagement2026_07_13("ce-user-management-2026-07-13")`

    - `MidConversationOutputConfig2026_07_01("mid-conversation-output-config-2026-07-01")`

    - `ThinkingBindingControls2026_08_01("thinking-binding-controls-2026-08-01")`

    - `MidConversationSystemClearAt2026_08_21("mid-conversation-system-clear-at-2026-08-21")`

    - `Compact2026_09_04("compact-2026-09-04")`

    - `InlineTools2026_09_15("inline-tools-2026-09-15")`

    - `McpClient2026_09_15("mcp-client-2026-09-15")`

    - `CEPlugins2026_09_01("ce-plugins-2026-09-01")`

    - `SpendLimitReads2026_09_26("spend-limit-reads-2026-09-26")`

    - `TelemetryDestinations2026_08_11("telemetry-destinations-2026-08-11")`

    - `Webhooks2026_10_07("webhooks-2026-10-07")`

#### Returns

- `class BetaTelemetryDestinationWorkspace`

  A workspace on a telemetry destination's workspace list.

  Under `include`, the destination covers the workspace. Under `exclude`, the destination covers every workspace except this one. The entry doesn't have an `id`. Its `telemetry_destination_id` and `workspace_id` together identify it.

  - `JsonElement Type = "telemetry_destination_workspace"`

  - `required DateTimeOffset CreatedAt`

    Time the workspace was added to the list.

    format: date-time

  - `required string TelemetryDestinationID`

    ID of the telemetry destination (`tdst_...`).

  - `required string WorkspaceID`

    ID of the workspace (`wrkspc_...`).

#### Example

```csharp
using System;
using Anthropic.Models.Beta.Organization.TelemetryDestinations.Workspaces;

WorkspaceAddParams parameters = new()
{
    DestinationID = "destination_id",
    WorkspaceID = "workspace_id",
};

var betaTelemetryDestinationWorkspace = await client.Beta.Organization.TelemetryDestinations.Workspaces.Add(parameters);

Console.WriteLine(betaTelemetryDestinationWorkspace);
```

##### Response (200)

```json
{
  "created_at": "2019-12-27T18:11:19.117Z",
  "telemetry_destination_id": "telemetry_destination_id",
  "type": "telemetry_destination_workspace",
  "workspace_id": "workspace_id"
}
```

### Remove a Telemetry Destination Workspace

`BetaDeletedTelemetryDestinationWorkspace Beta.Organization.TelemetryDestinations.Workspaces.Remove(parameters, cancellationToken = default)`

**DELETE** `/v1/organizations/telemetry_destinations/{destination_id}/workspaces/{workspace_id}`

Remove one workspace from a destination's workspace list.

Under `include` the workspace's spans stop going to the destination. Under `exclude` they start. An archived workspace can be removed too.

The API returns 404 when the workspace isn't on the list. A destination whose `workspaces.type` is `all` doesn't have a list, so the API returns 400.

See the [OpenTelemetry export guide](https://platform.claude.com/docs/en/manage-claude/opentelemetry?sdk_languages=csharp#choose-workspaces-for-a-destination) to learn more about choosing the workspaces of a destination.

#### Parameters

- `WorkspaceRemoveParams parameters`

  - `required string destinationID` (path parameter)

    ID of the destination (`tdst_...`).

  - `required string workspaceID` (path parameter)

    ID of the workspace to remove (`wrkspc_...`).

  - `IReadOnlyList<AnthropicBeta> betas` (header parameter)

    This endpoint is in beta: requests must send `telemetry-destinations-2026-08-11` in this header.

    - `MessageBatches2024_09_24("message-batches-2024-09-24")`

    - `PromptCaching2024_07_31("prompt-caching-2024-07-31")`

    - `ComputerUse2024_10_22("computer-use-2024-10-22")`

    - `ComputerUse2025_01_24("computer-use-2025-01-24")`

    - `Pdfs2024_09_25("pdfs-2024-09-25")`

    - `TokenCounting2024_11_01("token-counting-2024-11-01")`

    - `TokenEfficientTools2025_02_19("token-efficient-tools-2025-02-19")`

    - `Output128k2025_02_19("output-128k-2025-02-19")`

    - `FilesApi2025_04_14("files-api-2025-04-14")`

    - `McpClient2025_04_04("mcp-client-2025-04-04")`

    - `McpClient2025_11_20("mcp-client-2025-11-20")`

    - `DevFullThinking2025_05_14("dev-full-thinking-2025-05-14")`

    - `InterleavedThinking2025_05_14("interleaved-thinking-2025-05-14")`

    - `CodeExecution2025_05_22("code-execution-2025-05-22")`

    - `ExtendedCacheTtl2025_04_11("extended-cache-ttl-2025-04-11")`

    - `Context1m2025_08_07("context-1m-2025-08-07")`

    - `ContextManagement2025_06_27("context-management-2025-06-27")`

    - `ModelContextWindowExceeded2025_08_26("model-context-window-exceeded-2025-08-26")`

    - `Skills2025_10_02("skills-2025-10-02")`

    - `FastMode2026_02_01("fast-mode-2026-02-01")`

    - `Output300k2026_03_24("output-300k-2026-03-24")`

    - `UserProfiles2026_03_24("user-profiles-2026-03-24")`

    - `UserProfiles2026_08_18("user-profiles-2026-08-18")`

    - `UserProfiles2026_09_04("user-profiles-2026-09-04")`

    - `AdvisorTool2026_03_01("advisor-tool-2026-03-01")`

    - `ManagedAgents2026_04_01("managed-agents-2026-04-01")`

    - `CacheDiagnosis2026_04_07("cache-diagnosis-2026-04-07")`

    - `Dreaming2026_04_21("dreaming-2026-04-21")`

    - `ThinkingTokenCount2026_05_13("thinking-token-count-2026-05-13")`

    - `ServerSideFallback2026_06_01("server-side-fallback-2026-06-01")`

    - `ServerSideFallback2026_07_01("server-side-fallback-2026-07-01")`

    - `FallbackCredit2026_06_01("fallback-credit-2026-06-01")`

    - `FallbackCredit2026_07_01("fallback-credit-2026-07-01")`

    - `AgentMemory2026_07_22("agent-memory-2026-07-22")`

    - `MidConversationToolChanges2026_07_01("mid-conversation-tool-changes-2026-07-01")`

    - `Compact2026_01_12("compact-2026-01-12")`

    - `ComputerUse2025_11_24("computer-use-2025-11-24")`

    - `McpTunnels2026_06_22("mcp-tunnels-2026-06-22")`

    - `StructuredOutputs2025_11_13("structured-outputs-2025-11-13")`

    - `TaskBudgets2026_03_13("task-budgets-2026-03-13")`

    - `ThinkingDisplayUpdates2026_08_18("thinking-display-updates-2026-08-18")`

    - `CEUserManagement2026_07_13("ce-user-management-2026-07-13")`

    - `MidConversationOutputConfig2026_07_01("mid-conversation-output-config-2026-07-01")`

    - `ThinkingBindingControls2026_08_01("thinking-binding-controls-2026-08-01")`

    - `MidConversationSystemClearAt2026_08_21("mid-conversation-system-clear-at-2026-08-21")`

    - `Compact2026_09_04("compact-2026-09-04")`

    - `InlineTools2026_09_15("inline-tools-2026-09-15")`

    - `McpClient2026_09_15("mcp-client-2026-09-15")`

    - `CEPlugins2026_09_01("ce-plugins-2026-09-01")`

    - `SpendLimitReads2026_09_26("spend-limit-reads-2026-09-26")`

    - `TelemetryDestinations2026_08_11("telemetry-destinations-2026-08-11")`

    - `Webhooks2026_10_07("webhooks-2026-10-07")`

#### Returns

- `class BetaDeletedTelemetryDestinationWorkspace`

  Confirmation that a workspace was removed from a destination's list.

  - `JsonElement Type = "telemetry_destination_workspace_deleted"`

  - `required string TelemetryDestinationID`

    ID of the telemetry destination (`tdst_...`).

  - `required string WorkspaceID`

    ID of the workspace that was removed (`wrkspc_...`).

#### Example

```csharp
using System;
using Anthropic.Models.Beta.Organization.TelemetryDestinations.Workspaces;

WorkspaceRemoveParams parameters = new()
{
    DestinationID = "destination_id",
    WorkspaceID = "workspace_id",
};

var betaDeletedTelemetryDestinationWorkspace = await client.Beta.Organization.TelemetryDestinations.Workspaces.Remove(parameters);

Console.WriteLine(betaDeletedTelemetryDestinationWorkspace);
```

##### Response (200)

```json
{
  "telemetry_destination_id": "telemetry_destination_id",
  "type": "telemetry_destination_workspace_deleted",
  "workspace_id": "workspace_id"
}
```
