---
title: Workspaces
url: https://platform.claude.com/docs/en/api/php/beta/organization/telemetry_destinations/workspaces
---

# Workspaces

## List Telemetry Destination Workspaces

`$client->beta->organization->telemetryDestinations->workspaces->list(string destinationID, ?int limit, ?string page, ?list<AnthropicBeta> betas): PageCursor<BetaTelemetryDestinationWorkspace>`

**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=php#choose-workspaces-for-a-destination) to learn more about choosing the workspaces of a destination.

### Parameters

- `destinationID: string` (path parameter)

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

- `limit?: optional int` (query parameter)

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

- `page?: optional string` (query parameter)

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

- `betas?: optional list<AnthropicBeta>` (header parameter)

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

### Returns

- `class BetaTelemetryDestinationWorkspace`

  - `"telemetry_destination_workspace" type`

  - `\Datetime createdAt`

    Time the workspace was added to the list.

  - `string telemetryDestinationID`

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

  - `string workspaceID`

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

### Example

```php
<?php

require_once dirname(__DIR__) . '/vendor/autoload.php';

use Anthropic\Client;
use Anthropic\Beta\AnthropicBeta;

$client = new Client(apiKey: 'my-anthropic-api-key');

$page = $client->beta->organization->telemetryDestinations->workspaces->list(
  'destination_id',
  limit: 0,
  page: 'page',
  betas: [AnthropicBeta::MESSAGE_BATCHES_2024_09_24],
);

var_dump($page);
```

#### 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

`$client->beta->organization->telemetryDestinations->workspaces->add(string workspaceID, string destinationID, ?list<AnthropicBeta> betas): BetaTelemetryDestinationWorkspace`

**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=php#choose-workspaces-for-a-destination) to learn more about choosing the workspaces of a destination.

### Parameters

- `destinationID: string` (path parameter)

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

- `workspaceID: string` (path parameter)

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

- `betas?: optional list<AnthropicBeta>` (header parameter)

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

### Returns

- `class BetaTelemetryDestinationWorkspace`

  - `"telemetry_destination_workspace" type`

  - `\Datetime createdAt`

    Time the workspace was added to the list.

  - `string telemetryDestinationID`

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

  - `string workspaceID`

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

### Example

```php
<?php

require_once dirname(__DIR__) . '/vendor/autoload.php';

use Anthropic\Client;
use Anthropic\Beta\AnthropicBeta;

$client = new Client(apiKey: 'my-anthropic-api-key');

$betaTelemetryDestinationWorkspace = $client
  ->beta
  ->organization
  ->telemetryDestinations
  ->workspaces
  ->add(
  'workspace_id',
  destinationID: 'destination_id',
  betas: [AnthropicBeta::MESSAGE_BATCHES_2024_09_24],
);

var_dump($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

`$client->beta->organization->telemetryDestinations->workspaces->remove(string workspaceID, string destinationID, ?list<AnthropicBeta> betas): BetaDeletedTelemetryDestinationWorkspace`

**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=php#choose-workspaces-for-a-destination) to learn more about choosing the workspaces of a destination.

### Parameters

- `destinationID: string` (path parameter)

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

- `workspaceID: string` (path parameter)

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

- `betas?: optional list<AnthropicBeta>` (header parameter)

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

### Returns

- `class BetaDeletedTelemetryDestinationWorkspace`

  - `"telemetry_destination_workspace_deleted" type`

  - `string telemetryDestinationID`

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

  - `string workspaceID`

    ID of the workspace that was removed (`wrkspc_...`).

### Example

```php
<?php

require_once dirname(__DIR__) . '/vendor/autoload.php';

use Anthropic\Client;
use Anthropic\Beta\AnthropicBeta;

$client = new Client(apiKey: 'my-anthropic-api-key');

$betaDeletedTelemetryDestinationWorkspace = $client
  ->beta
  ->organization
  ->telemetryDestinations
  ->workspaces
  ->remove(
  'workspace_id',
  destinationID: 'destination_id',
  betas: [AnthropicBeta::MESSAGE_BATCHES_2024_09_24],
);

var_dump($betaDeletedTelemetryDestinationWorkspace);
```

#### Response (200)

```json
{
  "telemetry_destination_id": "telemetry_destination_id",
  "type": "telemetry_destination_workspace_deleted",
  "workspace_id": "workspace_id"
}
```

## Domain types

### Beta Deleted Telemetry Destination Workspace

- `class BetaDeletedTelemetryDestinationWorkspace`

  - `"telemetry_destination_workspace_deleted" type`

  - `string telemetryDestinationID`

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

  - `string workspaceID`

    ID of the workspace that was removed (`wrkspc_...`).

### Beta Telemetry Destination Workspace

- `class BetaTelemetryDestinationWorkspace`

  - `"telemetry_destination_workspace" type`

  - `\Datetime createdAt`

    Time the workspace was added to the list.

  - `string telemetryDestinationID`

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

  - `string workspaceID`

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