Beta 标头(beta headers)允许您在实验性功能和新模型能力成为标准 API 的一部分之前访问它们。

说明

客户端 SDK 提供了一个 client.beta (csharp, go: client.Beta; java: client.beta(); php: $client->beta) 命名空间,用于在启用 beta 功能的情况下调用 API。

如何使用 beta 标头

要访问 beta 功能,请在您的 API 请求中包含 anthropic-beta 标头:

POST /v1/messages
Authorization: Bearer YOUR_API_KEY
anthropic-version: 2023-06-01
anthropic-beta: BETA_FEATURE_NAME
content-type: application/json

每个功能的文档都会说明需要发送的确切 beta 名称。API 概述列出了处于 beta 阶段的 API。

以下示例发送了一个使用 上下文编辑 beta 的请求。SDK 通过 betas (csharp, go: Betas; java: .addBeta()) 接收 beta 名称,并为您发送 anthropic-beta 标头:

cURL

curl https://api.anthropic.com/v1/messages \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "anthropic-beta: context-management-2025-06-27" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-opus-5-5",
    "max_tokens": 1024,
    "messages": [
      {"role": "user", "content": "Hello, Claude"}
    ]
  }'

CLI

ant beta:messages create \
  --beta context-management-2025-06-27 \
  --model claude-opus-5-5 \
  --max-tokens 1024 \
  --message '{role: user, content: "Hello, Claude"}'

Python

client = Anthropic()

response = client.beta.messages.create(
    model="claude-opus-5-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello, Claude"}],
    betas=["context-management-2025-06-27"],
)

print(response.content)

TypeScript

const client = new Anthropic();

const msg = await client.beta.messages.create({
  model: "claude-opus-5-5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Hello, Claude" }],
  betas: ["context-management-2025-06-27"]
});

console.log(msg.content);

C#

var client = new AnthropicClient();

var message = await client.Beta.Messages.Create(
    new MessageCreateParams
    {
        Model = Model.ClaudeOpus5_5,
        MaxTokens = 1024,
        Messages = [new BetaUserMessageParam { Content = "Hello, Claude" }],
        Betas = ["context-management-2025-06-27"],
    }
);

Console.WriteLine(string.Join("\n", message.Content));

Go

client := anthropic.NewClient()

message, err := client.Beta.Messages.New(context.TODO(), anthropic.BetaMessageNewParams{
	Model:     anthropic.ModelClaudeOpus5_5,
	MaxTokens: 1024,
	Messages: []anthropic.BetaMessageParam{
		anthropic.NewBetaUserMessage(anthropic.NewBetaTextBlock("Hello, Claude")),
	},
	Betas: []anthropic.AnthropicBeta{anthropic.AnthropicBetaContextManagement2025_06_27},
})
if err != nil {
	panic(err)
}

fmt.Printf("%+v\n", message.Content)

Java

AnthropicClient client = AnthropicOkHttpClient.fromEnv();

MessageCreateParams params = MessageCreateParams.builder()
    .model(Model.CLAUDE_OPUS_5_5)
    .maxTokens(1024)
    .addUserMessage("Hello, Claude")
    .addBeta(AnthropicBeta.CONTEXT_MANAGEMENT_2025_06_27)
    .build();

BetaMessage message = client.beta().messages().create(params);
System.out.println(message.content());

PHP

$client = new Client();

$message = $client->beta->messages->create(
    maxTokens: 1024,
    messages: [['role' => 'user', 'content' => 'Hello, Claude']],
    model: Model::CLAUDE_OPUS_5_5,
    betas: ['context-management-2025-06-27'],
);

echo $message;

Ruby

client = Anthropic::Client.new

message = client.beta.messages.create(
  model: Anthropic::Model::CLAUDE_OPUS_5_5,
  max_tokens: 1024,
  messages: [{role: "user", content: "Hello, Claude"}],
  betas: ["context-management-2025-06-27"]
)

puts(message.content)

警告

Beta 功能是实验性的,可能会:

  • 在通知后发生破坏性变更
  • 被弃用或移除
  • 具有不同的速率限制或定价
  • 并非在所有地区都可用

多个 beta 功能

要在单个请求中使用多个 beta 功能,请在标头中包含所有功能名称,并以逗号分隔:

anthropic-beta: feature1,feature2,feature3

您也可以在同一请求中多次发送 anthropic-beta 标头。Claude API 会读取每个 anthropic-beta 标头,因此以下示例与上一个示例等效:

anthropic-beta: feature1
anthropic-beta: feature2
anthropic-beta: feature3

使用 SDK 时,请列出每个功能(例如 betas=["feature1", "feature2"] (typescript, ruby: betas: ["feature1", "feature2"]; php: betas: ['feature1', 'feature2']; csharp: Betas = ["feature1", "feature2"]; go: Betas: []anthropic.AnthropicBeta{"feature1", "feature2"}; java: .addBeta("feature1").addBeta("feature2")))。使用 CLI 时,请传递单个 --beta 标志,并用逗号分隔功能名称(例如 --beta feature1,feature2)。您也可以重复使用该标志(例如 --beta feature1 --beta feature2)。

其他平台上的 beta 功能

在所有接受 beta 名称的平台上,beta 名称都是相同的,但并非每个平台都接受所有 beta。Claude Platform on AWS、Claude Models on Google Cloud (Anthropic managed)、Microsoft Foundry 和 Claude Models on Google Cloud (Google managed) 与 Claude API 一样,通过 anthropic-beta 标头接收 beta 名称。要发送多个 beta,请将它们的名称放在一个标头中,并用逗号分隔:Claude Models on Google Cloud (Google managed) 只读取一个 anthropic-beta 标头并忽略其余标头,因此其他标头中的 beta 不会生效。

在 Amazon Bedrock 上,beta 名称的放置位置取决于您调用的 API:

  • Claude in Amazon Bedrock(bedrock-mantle 端点)通过 anthropic-beta 标头接收它们。
  • InvokeModel API 从请求体而非标头中读取它们。请在请求体的 anthropic_beta 数组中列出它们,每个元素一个名称,例如 "anthropic_beta": ["feature1", "feature2"]。

特定端点的标头

某些 beta API 的作用范围限定于特定端点,并且要求在每个请求中都包含特定功能的 beta 标头:

端点 Beta 标头
/v1/agents、/v1/sessions、/v1/environments managed-agents-2026-04-01
/v1/tunnels mcp-tunnels-2026-06-22
/v1/memory_stores 及其子资源 agent-memory-2026-07-22

SDK 的 client.beta (csharp, go: client.Beta; java: client.beta(); php: $client->beta) 命名空间会自动添加这些标头。仅在发出原始 HTTP 请求时才需要您自行添加。有关详细信息,请参阅 Managed Agents 概述、使用智能体记忆和 MCP 隧道参考。

适用于同一端点的特定端点标头并不总是可以组合使用。在记忆存储端点上,agent-memory-2026-07-22 会取代 managed-agents-2026-04-01:在同一请求中同时发送两者会返回 400 错误。SDK 会自动为每个端点发送正确的标头。

版本命名约定

Beta 功能名称通常遵循 feature-name-YYYY-MM-DD 的模式,其中日期表示该 beta 的发布时间。请始终使用文档中记载的确切 beta 功能名称。

错误处理

如果您使用了无效的 beta 名称,或者使用了您的组织无权访问的 beta,您将收到 400 错误响应:

Output

{
  "type": "error",
  "error": {
    "type": "invalid_request_error",
    "message": "Unexpected value(s) `invalid-beta-name` for the `anthropic-beta` header. Please consult our documentation at platform.claude.com/docs or try again without the header."
  },
  "request_id": "req_011CcnGfC9fELffo2EALu4Wd"
}

获取帮助

有关 beta 功能的更新,请参阅发布说明。如需生产问题方面的帮助,请联系支持团队。

后续步骤

  • 错误:了解 Claude API 返回的 HTTP 状态码、错误响应结构和请求 ID,并使用 SDK 的类型化异常处理错误。

  • API 概述:探索 Claude API 的功能,包括处于 beta 阶段的 API。