Claude Platform Docs

Create Tunnel

$client->beta->tunnels->create(?string displayName, ?list<AnthropicBeta> betas, ?string workspaceID): BetaTunnel
POST/v1/tunnels

The Tunnels API is in research preview. It requires the anthropic-beta: mcp-tunnels-2026-06-22 header and may change without a deprecation period. It supersedes the Admin API endpoints at /v1/organizations/tunnels, which remain available during a migration window.

Creates a tunnel. Creation allocates a fresh hostname and provisions the tunnel; it is not idempotent. The new tunnel rejects MCP traffic until at least one CA certificate is added.

Parameters
displayName?:optional string

Optional human-readable name for the tunnel (1-255 characters).

betas?:optional list<AnthropicBeta>⁠Header parameter

This endpoint is in beta: requests must send mcp-tunnels-2026-06-22 in this header.

workspaceID?:optional string⁠Header parameter

Optional header to select the Workspace for this request. The value is a Workspace ID (for example, wrkspc_011CZkZaBF1tNoB5wlCeusgy).

Only needed for credentials that can act on more than one Workspace. A credential that belongs to a specific Workspace may omit it; if sent, it must match that Workspace.

Returns
class BetaTunnel { $type = 'tunnel'; $id; $archivedAt; /* 3 more */ }
"tunnel" type
string id

Unique identifier for the tunnel, prefixed with tnl_.

?\Datetime archivedAt

RFC 3339 datetime string indicating when the tunnel was archived. Null if it is not archived.

\Datetime createdAt

RFC 3339 datetime string indicating when the tunnel was created.

?string displayName

Human-readable name for the tunnel (1-255 characters). Null if unset.

string domain

Anthropic-assigned hostname for the tunnel. MCP server URLs whose host is a subdomain of this value are routed through the tunnel. Globally unique and never reused, even after the tunnel is archived.

Create Tunnel
<?php

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

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

$betaTunnel = $client->beta->tunnels->create(
  displayName: 'x',
  betas: [AnthropicBeta::MESSAGE_BATCHES_2024_09_24],
  workspaceID: 'wrkspc_011CZkZaBF1tNoB5wlCeusgy',
);

var_dump($betaTunnel);
Returns Examples
Response 200
{
  "id": "id",
  "archived_at": "2019-12-27T18:11:19.117Z",
  "created_at": "2019-12-27T18:11:19.117Z",
  "display_name": "display_name",
  "domain": "domain",
  "type": "tunnel"
}