mozex/anthropic-laravel

Anthropic PHP for Laravel is a supercharged PHP API client that allows you to interact with the Anthropic API
237,492 71
Install
composer require mozex/anthropic-laravel
Latest Version:1.4.0
PHP:^8.2.0
License:MIT
Last Updated:Apr 9, 2026
Links: GitHub  ·  Packagist
Maintainer: mozex

Anthropic Laravel

Latest Version on Packagist GitHub Tests Workflow Status Docs License Total Downloads

Laravel wrapper for Anthropic PHP, the community-maintained PHP SDK for the Anthropic API. Adds a Facade, a publishable config, an install command, and a testing integration that plugs into the service container.

Read the full documentation at mozex.dev: searchable docs, version requirements, detailed changelog, and more.

Not using Laravel? Use the framework-agnostic Anthropic PHP package directly.

Table of Contents

Support This Project

I maintain this package along with several other open-source PHP packages used by thousands of developers every day.

If my packages save you time or help your business, consider sponsoring my work on GitHub Sponsors. Your support lets me keep these packages updated, respond to issues quickly, and ship new features.

Business sponsors get logo placement in package READMEs. See sponsorship tiers →

Why This Package

Anthropic:: Facade for everything. Anthropic::messages(), Anthropic::models(), Anthropic::batches(), Anthropic::completions(). No client instantiation, no factory setup. The service provider handles it.

Anthropic::fake() in your tests. Swap the real client with a fake, queue responses, and assert exactly which requests were sent. Pairs with Laravel's existing testing idioms like Event::fake() and Queue::fake(). See the testing docs →

use Anthropic\Laravel\Facades\Anthropic;
use Anthropic\Resources\Messages;
use Anthropic\Responses\Messages\CreateResponse;

Anthropic::fake([
    CreateResponse::fake([
        'content' => [['type' => 'text', 'text' => 'Paris is the capital of France.']],
    ]),
]);

// Run your code...

Anthropic::assertSent(Messages::class, function (string $method, array $parameters) {
    return $parameters['model'] === 'claude-sonnet-4-6';
});

One artisan command to set up. php artisan anthropic:install publishes the config file and appends ANTHROPIC_API_KEY= to your .env. You're ready to go.

Forward-compatible. Parameters pass through to the API as-is. When Anthropic ships a new feature, it works in your code the same day. No waiting for a package update.

Full Anthropic API coverage. Messages, streaming, tool use, extended thinking, web search, code execution, citations, token counting, and batch processing. Every feature the API supports is available through the Facade.

Installation

Requires PHP 8.2+ - see all version requirements

composer require mozex/anthropic-laravel

Run the install command:

php artisan anthropic:install

This publishes config/anthropic.php and appends ANTHROPIC_API_KEY= to your .env. Set your key from the Anthropic Console:

ANTHROPIC_API_KEY=sk-ant-...

Quick Start

Use the Anthropic Facade anywhere in your app:

use Anthropic\Laravel\Facades\Anthropic;

$response = Anthropic::messages()->create([
    'model' => 'claude-sonnet-4-6',
    'max_tokens' => 1024,
    'messages' => [
        ['role' => 'user', 'content' => 'Hello!'],
    ],
]);

echo $response->content[0]->text; // Hello! How can I assist you today?

Streaming

Print text as it arrives:

$stream = Anthropic::messages()->createStreamed([
    'model' => 'claude-sonnet-4-6',
    'max_tokens' => 1024,
    'messages' => [
        ['role' => 'user', 'content' => 'Tell me a short story.'],
    ],
]);

foreach ($stream as $response) {
    if ($response->type === 'content_block_delta'
        && $response->delta->type === 'text_delta') {
        echo $response->delta->text;
    }
}

Tool Use

Give Claude tools to call, execute them in your code, send results back:

$response = Anthropic::messages()->create([
    'model' => 'claude-sonnet-4-6',
    'max_tokens' => 1024,
    'tools' => [
        [
            'name' => 'get_weather',
            'description' => 'Get the current weather in a given location',
            'input_schema' => [
                'type' => 'object',
                'properties' => [
                    'location' => ['type' => 'string'],
                ],
                'required' => ['location'],
            ],
        ],
    ],
    'messages' => [
        ['role' => 'user', 'content' => 'What is the weather in San Francisco?'],
    ],
]);

$response->content[1]->name;              // 'get_weather'
$response->content[1]->input['location']; // 'San Francisco'

Extended Thinking

Let Claude reason through complex problems before answering:

$response = Anthropic::messages()->create([
    'model' => 'claude-opus-4-6',
    'max_tokens' => 16000,
    'thinking' => ['type' => 'adaptive'],
    'messages' => [
        ['role' => 'user', 'content' => 'What is the GCD of 1071 and 462?'],
    ],
]);

$response->content[0]->thinking; // 'Using the Euclidean algorithm...'
$response->content[1]->text;     // 'The GCD of 1071 and 462 is 21.'

The full documentation covers every feature: vision and images, web search and code execution, document citations, batch processing, error handling, testing, and more.

Resources

Visit the documentation site for searchable docs auto-updated from this repository.

  • AI Integration: Use this package with AI coding assistants via Context7 and Laravel Boost
  • Requirements: PHP, Laravel, and dependency versions
  • Changelog: Release history with linked pull requests and diffs
  • Contributing: Development setup, code quality, and PR guidelines
  • Questions & Issues: Bug reports, feature requests, and help
  • Security: Report vulnerabilities directly via email

License

The MIT License (MIT). Please see License File for more information.