---
title: PHP SDK
url: https://platform.claude.com/docs/ja/cli-sdks-libraries/sdks/php
description: 値オブジェクトとビルダーパターンを備えたAnthropic PHP SDKのインストールと設定
---

Anthropic PHPライブラリは、PHP 8.1.0以降の任意のアプリケーションからClaude APIへの便利なアクセスを提供します。

<Info>
  コード例を含むAPI機能のドキュメントについては、[APIリファレンス](https://platform.claude.com/docs/ja/api/overview)を参照してください。このページでは、PHP固有のSDK機能と設定について説明します。
</Info>

## インストール

SDKはHTTPに[PSR-18](https://www.php-fig.org/psr/psr-18/)を使用し、インストールされているPSR-18クライアントを自動的に検出します。SDKが追加のセットアップなしでストリーミング用に設定するため、[Guzzle](https://docs.guzzlephp.org/)の使用を推奨します：

```bash
composer require "anthropic-ai/sdk" "guzzlehttp/guzzle:^7"
```

## 要件

PHP 8.1.0以降。

## 使用方法

このライブラリは、オプションの引数を指定するために名前付きパラメータを使用します。デフォルト値を持つパラメータは名前で設定する必要があります。

```php
$client = new Client();

$message = $client->messages->create(
  maxTokens: 1024,
  messages: [['role' => 'user', 'content' => 'Hello, Claude']],
  model: 'claude-opus-5-5',
);

$textBlock = array_find($message->content, static fn ($block): bool => $block->type === 'text');
echo $textBlock->text;
```

Workload Identity Federationを含む認証オプションについては、[認証](https://platform.claude.com/docs/ja/manage-claude/authentication)を参照してください。APIキーがワークスペースにスコープされていない[個人キーまたはサービスアカウントキー](https://platform.claude.com/docs/ja/manage-claude/authentication#key-types)である場合は、`anthropic-workspace-id`リクエストヘッダーにワークスペースIDを設定してください。このSDKでのリクエストごとのオプションについては、[ワークスペースを選択する](https://platform.claude.com/docs/ja/manage-claude/authentication#select-a-workspace)で説明しています。

## 値オブジェクト

値オブジェクトを初期化するには、静的な`with`コンストラクタ`Base64ImageSource::with(data: "U3RhaW5sZXNzIHJvY2tz", ...)`と名前付きパラメータを使用することを推奨します。

ただし、ビルダー`(new Base64ImageSource)->withData("U3RhaW5sZXNzIHJvY2tz")`も提供されています。

## ストリーミング

SDKは、「Server-Sent Events」（サーバー送信イベント）、すなわちSSEを使用したストリーミングレスポンスをサポートしています。

```php
$client = new Client();

$stream = $client->messages->createStream(
  maxTokens: 1024,
  messages: [['role' => 'user', 'content' => 'Hello, Claude']],
  model: 'claude-opus-5-5',
);

foreach ($stream as $event) {
  echo $event->type . PHP_EOL;
}
```

ストリーミングには、レスポンスボディを段階的に返すHTTPクライアントが必要です。検出されたPSR-18クライアントがGuzzleの場合、SDKはストリーミング用に自動的に設定します。バッファリングを行うクライアントでは、`foreach`ループは段階的にではなく、レスポンスの完了時にすべてのイベントを一度に返します。この症状が見られる場合は、Guzzleをインストールするか、`streamingTransporter`リクエストオプションを通じてストリーミング対応のPSR-18クライアントを指定してください：

```php
$client = new Client(
  requestOptions: RequestOptions::with(streamingTransporter: $myStreamingClient),
);
```

## エラー処理

ライブラリがAPIに接続できない場合、またはAPIが成功以外のステータスコード（つまり4xxまたは5xxレスポンス）を返した場合、`Anthropic\Core\Exceptions\APIException`のサブクラスがスローされます：

```php
<?php
// ...
use Anthropic\Core\Exceptions\APIConnectionException;
use Anthropic\Core\Exceptions\APIStatusException;
use Anthropic\Core\Exceptions\RateLimitException;
// ...
try {
  $message = $client->messages->create(
    maxTokens: 1024,
    messages: [['role' => 'user', 'content' => 'Hello, Claude']],
    model: 'claude-opus-5-5',
  );
} catch (APIConnectionException $e) {
  echo "The server could not be reached", PHP_EOL;
  echo $e->getPrevious()?->getMessage(), PHP_EOL;
} catch (RateLimitException $_) {
  echo "A 429 status code was received; we should back off a bit.", PHP_EOL;
} catch (APIStatusException $e) {
  echo "Another non-200-range status code was received", PHP_EOL;
  echo $e->getMessage();
}
```

エラーコードは次のとおりです：

| 原因          | エラータイプ                         |
| ----------- | ------------------------------ |
| HTTP 400    | `BadRequestException`          |
| HTTP 401    | `AuthenticationException`      |
| HTTP 403    | `PermissionDeniedException`    |
| HTTP 404    | `NotFoundException`            |
| HTTP 409    | `ConflictException`            |
| HTTP 422    | `UnprocessableEntityException` |
| HTTP 429    | `RateLimitException`           |
| HTTP >= 500 | `InternalServerException`      |
| その他のHTTPエラー | `APIStatusException`           |
| タイムアウト      | `APITimeoutException`          |
| ネットワークエラー   | `APIConnectionException`       |

## リトライ

特定のエラーは、デフォルトで短い指数バックオフを伴って自動的に2回リトライされます。

接続エラー（たとえば、ネットワーク接続の問題によるもの）、408 Request Timeout、409 Conflict、429 Rate Limit、500以上の内部エラー、およびタイムアウトは、すべてデフォルトでリトライされます。

`maxRetries`オプションを使用して、これを設定または無効化できます：

```php
use Anthropic\RequestOptions;
// ...
// すべてのリクエストのデフォルトを設定します:
$client = new Client(requestOptions: RequestOptions::with(maxRetries: 0));

// または、リクエストごとに設定します:
$result = $client->messages->create(
  maxTokens: 1024,
  messages: [['role' => 'user', 'content' => 'Hello, Claude']],
  model: 'claude-opus-5-5',
  requestOptions: RequestOptions::with(maxRetries: 5),
);
```

## ページネーション

Claude APIのリストメソッドはページネーションされています。

このライブラリは各リストレスポンスに自動ページネーションイテレータを提供するため、後続のページを手動でリクエストする必要はありません：

```php
$client = new Client();

$page = $client->beta->messages->batches->list(limit: 20);

// 現在のページからアイテムを取得します
foreach ($page->getItems() as $item) {
  echo $item->id, PHP_EOL;
}
// 追加のネットワークリクエストを行い、現在のページ以降のすべてのページからアイテムを取得します
// ...
foreach ($page->pagingEachItem() as $item) {
  echo $item->id, PHP_EOL;
// ...
}
```

## 高度な使用方法

### OpenTelemetryトレーシング

アプリケーションがOpenTelemetryトレーサープロバイダーを登録すると、SDKは送信する各リクエストについてスパンを出力します。スパンをオブザーバビリティプラットフォームに送信するには、[Claude SDKでOpenTelemetryを設定する](https://platform.claude.com/docs/ja/manage-claude/opentelemetry/sdk)を参照してください。

### ドキュメント化されていないプロパティ

次のように、任意のエンドポイントにドキュメント化されていないパラメータを送信し、ドキュメント化されていないレスポンスプロパティを読み取ることができます：

<Note>
  同じ名前の`extra*`パラメータは、ドキュメント化されたパラメータを上書きします。
</Note>

```php
<?php
// ...
use Anthropic\RequestOptions;
// ...
$message = $client->messages->create(
  maxTokens: 1024,
  messages: [['role' => 'user', 'content' => 'Hello, Claude']],
  model: 'claude-opus-5-5',
  requestOptions: RequestOptions::with(
    extraQueryParams: ['my_query_parameter' => 'value'],
    extraBodyParams: ['my_body_parameter' => 'value'],
    extraHeaders: ['my-header' => 'value'],
  ),
);
```

### ドキュメント化されていないリクエストパラメータ

追加のパラメータを明示的に送信したい場合は、前の例に示したように、リクエスト時に`RequestOptions::with()`の下で`extraQueryParams`、`extraBodyParams`、`extraHeaders`オプションを使用できます。

### ドキュメント化されていないエンドポイント

認証、リトライ、その他のクライアント機能の利点を維持しながらドキュメント化されていないエンドポイントにリクエストを送信するには、次のように`client->request`を使用してリクエストを送信できます：

```php
$client = new Client();

$response = $client->request(
  method: "post",
  path: '/undocumented/endpoint',
  query: ['dog' => 'woof'],
  headers: ['useful-header' => 'interesting-value'],
  body: ['hello' => 'world']
);
```

## プラットフォーム統合

<Note>
  コード例を含む詳細なプラットフォームセットアップガイドについては、以下を参照してください：

  * [Amazon Bedrock](https://platform.claude.com/docs/ja/build-with-claude/claude-in-amazon-bedrock)
  * [Amazon Bedrock（Opus 4.6以前）](https://platform.claude.com/docs/ja/build-with-claude/claude-on-amazon-bedrock-legacy)
  * [Claude Platform on AWS](https://platform.claude.com/docs/ja/build-with-claude/claude-platform-on-aws)
  * [Claude Models on Google Cloud (Google managed)](https://platform.claude.com/docs/ja/build-with-claude/claude-models-on-google-cloud/google-managed)
  * [Microsoft Foundry](https://platform.claude.com/docs/ja/build-with-claude/claude-in-microsoft-foundry)

  [Claude Models on Google Cloud (Anthropic managed)](https://platform.claude.com/docs/ja/build-with-claude/claude-models-on-google-cloud/anthropic-managed)も参照してください。
</Note>

PHP SDKは次のプラットフォームをサポートしています：

* **Agent Platform：** `Anthropic\Vertex\Client`。`::fromEnvironment()`を使用します。
* **Bedrock：** `Anthropic\Bedrock\MantleClient`。`new MantleClient(awsRegion: ...)`を使用します。
* **Bedrock（レガシー）：** `Anthropic\Bedrock\Client`。`::fromEnvironment()`または`::withCredentials()`を使用します。
* **Claude Platform on AWS：** `Anthropic\Aws\Client`（ソフト依存関係として`aws/aws-sdk-php`が必要）。`new Anthropic\Aws\Client(workspaceId: ...)`を使用するか、`ANTHROPIC_AWS_WORKSPACE_ID`を設定します。ベータ版で利用可能です。
* **Foundry：** `Anthropic\Foundry\Client`。`::withCredentials()`を使用します。

新しいプロジェクトには`MantleClient`を使用してください。`Anthropic\Bedrock\Client`は、Bedrockの`InvokeModel` APIを使用する既存のアプリケーション向けに引き続き提供されます。

PHP SDKは、`Anthropic\GoogleCloud\Client`を通じてClaude Models on Google Cloud (Anthropic managed)もサポートしています。このクライアントはベータ版です。`Anthropic\GoogleCloud\Client`には、ソフト依存関係として`google/auth`が必要です。`new Anthropic\GoogleCloud\Client(workspaceId: ...)`を使用するか、`ANTHROPIC_GOOGLE_CLOUD_WORKSPACE_ID`環境変数を設定してください。[プロジェクト、ロケーション、およびワークスペースの解決](https://platform.claude.com/docs/ja/build-with-claude/claude-models-on-google-cloud/anthropic-managed#project-location-and-workspace-resolution)を参照してください。

## セマンティックバージョニング

このSDKの各メジャーバージョンは、デフォルトで`anthropic-version`ヘッダーに1つのAPIバージョンを送信し、新しいAPIバージョンごとに新しいメジャーバージョンがリリースされます。`2026-10-21`を送信する最初のメジャーバージョンは1.0.0です。[2026-10-21へのアップグレード](https://platform.claude.com/docs/ja/api/migration-2026-10-21#upgrade)を参照してください。

このパッケージは[SemVer](https://semver.org/spec/v2.0.0.html)の規約に従います。

このパッケージは、（ランタイム以外の）PHPDoc型定義の改善を破壊的変更ではないものとみなします。

## その他のリソース

* [GitHubリポジトリ](https://github.com/anthropics/anthropic-sdk-php)
* [Packagist](https://packagist.org/packages/anthropic-ai/sdk)
* [APIリファレンス](https://platform.claude.com/docs/ja/api/overview)
* [メッセージのストリーミング](https://platform.claude.com/docs/ja/build-with-claude/streaming)
