PHPackages                             joeymckenzie/givebutter-php - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [HTTP &amp; Networking](/categories/http)
4. /
5. joeymckenzie/givebutter-php

ActiveLibrary[HTTP &amp; Networking](/categories/http)

joeymckenzie/givebutter-php
===========================

PHP API wrapper for Givebutter's public API.

0.1.8(10mo ago)035[5 PRs](https://github.com/JoeyMckenzie/givebutter-php/pulls)1MITPHPPHP &gt;=8.4CI passing

Since Jun 27Pushed 1mo agoCompare

[ Source](https://github.com/JoeyMckenzie/givebutter-php)[ Packagist](https://packagist.org/packages/joeymckenzie/givebutter-php)[ RSS](/packages/joeymckenzie-givebutter-php/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (9)Dependencies (18)Versions (13)Used By (1)

 [![logo](art/logo.png)](art/logo.png) [![packgist downloads](https://camo.githubusercontent.com/ee3f45901d03509f4e8146aa387e6360ba4587a42b820c04bb9c78bbb4f9bfaf/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6a6f65796d636b656e7a69652f676976656275747465722d7068702e737667)](https://camo.githubusercontent.com/ee3f45901d03509f4e8146aa387e6360ba4587a42b820c04bb9c78bbb4f9bfaf/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6a6f65796d636b656e7a69652f676976656275747465722d7068702e737667) [![ci](https://camo.githubusercontent.com/caefae9378ef7ce7b517f97e452a456979e51b1cc4cd64b9b7f4cd7b755feb91/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f6a6f65796d636b656e7a69652f676976656275747465722d7068702f72756e2d63692e796d6c3f6272616e63683d6d61696e266c6162656c3d6369)](https://camo.githubusercontent.com/caefae9378ef7ce7b517f97e452a456979e51b1cc4cd64b9b7f4cd7b755feb91/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f6a6f65796d636b656e7a69652f676976656275747465722d7068702f72756e2d63692e796d6c3f6272616e63683d6d61696e266c6162656c3d6369) [![packgist downloads](https://camo.githubusercontent.com/0efdbb54eaa4d71921ccf97ca6c6ded0b491e33005b06e4b5495d2be3fbf068f/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f6a6f65796d636b656e7a69652f676976656275747465722d7068702f6669782d7068702d636f64652d7374796c652d6973737565732e796d6c3f6272616e63683d6d61696e266c6162656c3d636f64652532307374796c65)](https://camo.githubusercontent.com/0efdbb54eaa4d71921ccf97ca6c6ded0b491e33005b06e4b5495d2be3fbf068f/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f6a6f65796d636b656e7a69652f676976656275747465722d7068702f6669782d7068702d636f64652d7374796c652d6973737565732e796d6c3f6272616e63683d6d61696e266c6162656c3d636f64652532307374796c65) [![packgist downloads](https://camo.githubusercontent.com/9c5cc60dfc108e884f4bcc40c61edbd668862b009943e77194547121f98abbb2/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6a6f65796d636b656e7a69652f676976656275747465722d7068702e737667)](https://camo.githubusercontent.com/9c5cc60dfc108e884f4bcc40c61edbd668862b009943e77194547121f98abbb2/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6a6f65796d636b656e7a69652f676976656275747465722d7068702e737667) [![](https://camo.githubusercontent.com/8d9325d50ab25055b84589520957ee5796397784149bd9451b9da665def50b83/68747470733a2f2f636f6465636f762e696f2f67682f4a6f65794d636b656e7a69652f676976656275747465722d7068702f67726170682f62616467652e7376673f746f6b656e3d394c5a4b315944474b47)](https://camo.githubusercontent.com/8d9325d50ab25055b84589520957ee5796397784149bd9451b9da665def50b83/68747470733a2f2f636f6465636f762e696f2f67682f4a6f65794d636b656e7a69652f676976656275747465722d7068702f67726170682f62616467652e7376673f746f6b656e3d394c5a4b315944474b47)

---

> This package was heavily inspired by [openai-php/client](https://github.com/openai-php/client). Consider giving it a start to support the PHP community!

🧈 Givebutter PHP
================

[](#-givebutter-php)

Givebutter PHP is a plug 'n play HTTP client for Givebutter's public API.

> Lookging for Laravel integration? I've got you covered! See [joeymckenzie/givebutter-laravel](https://github.com/joeymckenzie/givebutter-laravel) for details.

Table of Contents
-----------------

[](#table-of-contents)

- [Getting started](#getting-started)
- [Notes](#notes)
- [Usage](#usage)
    - [Campaigns](#campaigns)
    - [Campaign Members](#campaign-members)
    - [Campaign Teams](#campaign-teams)
    - [Contacts](#contacts)
    - [Tickets](#tickets)
    - [Transactions](#transactions)
    - [Payouts](#payouts)
    - [Funds](#funds)
- [Testing](#testing)

Getting started
---------------

[](#getting-started)

The client is available as a composer packager that can be installed in any project using composer:

```
composer require joeymckenzie/givebutter-php
```

Since the client is compatible with any PSR-18 HTTP client, any commonly used HTTP client can be used thanks to our dependency on `php-http/discovery`. Once installed, you may start interacting with [Givebutter's API](https://docs.givebutter.com/reference/reference-getting-started/):

```
/** @var string $apiKey */
$apiKey = $_ENV['GIVEBUTTER_API_KEY'];
$client = Givebutter::client($apiKey);

// Create a campaign
$createdCampaign = $client
    ->campaigns()
    ->create([
        'description' => 'This is a test campaign.',
        'end_at' => CarbonImmutable::now()->toIso8601String(),
        'goal' => 1000,
        'subtitle' => 'subtitle',
        'slug' => md5(uniqid('', true)),
        'title' => 'title',
        'type' => 'collect',
    ]);

// Get a campaign
$campaign = $client
    ->campaigns()
    ->get(441507);

// Get all campaigns
$campaigns = $client
    ->campaigns()
    ->list();

// Update a campaign
$updatedCampaign = $client
    ->campaigns()
    ->update($campaign->id, [
        'description' => 'This is a test campaign.',
        'goal' => 1500,
    ]);

// Delete a campaign
$deleteResponse = $client
    ->campaigns()
    ->delete($campaign->id);
```

For a comprehensive set of examples, take a look at the [examples](/examples) directory.

Notes
-----

[](#notes)

There's some current discrepancies between the API documentation and what the API actually returns, which several resources drifting from their schema definition. I do the best I can without internal knowledge of the API to adhere to the response schema, though it may be possible there will be breaking changes.

Due to the API response structure and the lack of resource enveloping, the response fields themselves may be `null`at any point. One should always check for errors before attempting to use any properties on the responses:

```
$createdCampaign = $client
    ->campaigns()
    ->create([
        'description' => 'This is a test campaign.',
        'end_at' => CarbonImmutable::now()->toIso8601String(),
        'goal' => 1000,
        'subtitle' => 'subtitle',
        'slug' => md5(uniqid('', true)),
        'title' => 'title',
        'type' => 'collect',
    ]);

if ($createdCampaign->hasErrors()) {
    // Do some error handling...
} else {
    // Safely dereference response properties
    assert($campaign->id !== null);

    // Update a campaign
    $updatedCampaign = $client
        ->campaigns()
        ->update($createdCampaign->id, [
            'description' => 'This is another test campaign.',
            'goal' => 1500,
        ]);
}
```

Usage
-----

[](#usage)

### Campaigns

[](#campaigns)

#### Create a campaign

[](#create-a-campaign)

Creates a campaign from a specified payload.

```
$response = $client
    ->campaigns()
    ->create([
        'title' => 'Campaign title',
        'description' => 'Campaign description.',
        'end_at' => CarbonImmutable::now()->toIso8601String(),
        'goal' => 10000,
        'subtitle' => 'Campaign subtitle',
        'slug' => 'campaignSlug123',
        'type' => 'collect',
    ]);

echo $response->data(); // GetCampaignResponse::class
echo $response->id; // 42
echo $response->title; // 'Campaign title'
echo $response->goal; // 10000
echo $response->toArray(); // ['id' => 42, ...]
```

#### Get all campaigns

[](#get-all-campaigns)

Gets a list of available campaigns. Optionally, accepts a scope parameter.

```
$response = $client
    ->campaigns()
    ->list();

echo $response->data(); // array
echo $response->meta; // Meta::class
echo $response->links; // Links::class
echo $response->toArray(); // ['data' => ['id' => 42, ...], 'meta' => [...], 'links' => [...]]
```

#### Get a campaign

[](#get-a-campaign)

Gets a single campaign.

```
$response = $client
    ->campaigns()
    ->get(42);

echo $response->data(); // GetCampaignResponse::class
echo $response->id; // 42
echo $response->title; // 'Campaign title'
echo $response->goal; // 10000
echo $response->toArray(); // ['id' => 42, ...]
```

#### Update a campaign

[](#update-a-campaign)

Updates a campaign from a specified payload.

```
$response = $client
    ->campaigns()
    ->update(42, [
        'description' => 'Updated campaign description.',
        'goal' => 20000,
    ]);

echo $response->data(); // GetCampaignResponse::class
echo $response->id; // 42
echo $response->title; // 'Campaign title'
echo $response->goal; // 20000
echo $response->toArray(); // ['id' => 42, ...]
```

#### Delete a campaign

[](#delete-a-campaign)

Deletes a campaign.

```
$response = $client
    ->campaigns()
    ->delete(42);

echo $response->getStatusCode(); // 200
```

### Campaign Members

[](#campaign-members)

#### Get all campaign members

[](#get-all-campaign-members)

Gets a list of available campaign members.

```
$response = $client
    ->campaigns()
    ->members()
    ->list(123);

echo $response->data(); // array
echo $response->meta; // Meta::class
echo $response->links; // Links::class
echo $response->toArray(); // ['data' => ['id' => 123, ...], 'meta' => [...], 'links' => [...]]
```

#### Get a campaign member

[](#get-a-campaign-member)

Gets a single campaign member.

```
$response = $client
    ->campaigns()
    ->members()
    ->get(123, 42);

echo $response->data(); // GetCampaignMemberResponse::class
echo $response->id; // 123
echo $response->firstName; // 'John'
echo $response->lastName; // 'Smith'
echo $response->raised; // 10000
echo $response->toArray(); // ['id' => 123, ...]
```

#### Delete a campaign member

[](#delete-a-campaign-member)

Deletes a campaign member.

```
$response = $client
    ->campaigns()
    ->members()
    ->delete(123, 42);

echo $response->getStatusCode(); // 200
```

### Campaign Teams

[](#campaign-teams)

#### Get all campaign teams

[](#get-all-campaign-teams)

Gets a list of available campaign teams.

```
$response = $client
    ->campaigns()
    ->teams()
    ->list(123);

echo $response->data(); // array
echo $response->meta; // Meta::class
echo $response->links; // Links::class
echo $response->toArray(); // ['data' => ['id' => 123, ...], 'meta' => [...], 'links' => [...]]
```

#### Get a campaign team

[](#get-a-campaign-team)

Gets a single campaign team.

```
$response = $client
    ->campaigns()
    ->teams()
    ->get(123, 42);

echo $response->data(); // GetCampaignTeamResponse::class
echo $response->id; // 123
echo $response->name; // 'Team 1'
echo $response->logo; // 'https://domain.com/photo123'
echo $response->raised; // 10000
echo $response->toArray(); // ['id' => 123, ...]
```

### Contacts

[](#contacts)

#### Create a contact

[](#create-a-contact)

Creates a contact from a specified payload.

```
$response = $client
    ->contacts()
    ->create([
        'first_name' => 'Michael',
        'middle_name' => 'Gary',
        'last_name' => 'Scott',
        'email' => [
            [
                'type' => 'work',
                'value' => 'michael.scott@dundermifflin.com',
            ],
        ],
        'phones' => [
            [
                'type' => 'work',
                'value' => '+15303567734',
            ],
        ],
        'addresses' => [
            [
                'address_1' => '123 Paper St.',
                'city' => 'Scranton',
                'state' => 'PA',
                'zipcode' => '18507',
                'country' => 'US',
            ],
        ],
        'tags' => [
            'paper',
            'dunder mifflin',
        ],
        'dob' => '03/15/1965',
        'company' => 'Dunder Mifflin',
        'title' => 'Regional Manager',
        'twitter_url' => 'https://twitter.com/dundermifflin',
        'linkedin_url' => 'https://linkedin.com/in/dundermifflin',
        'facebook_url' => 'https://facebook.com/dundermifflin',
    ]);

echo $response->data(); // GetContactResponse::class
echo $response->id; // 42
echo $response->firstName; // 'Michael'
echo $response->lastName; // 'Scott'
echo $response->toArray(); // ['id' => 42, ...]
```

#### Get all contacts

[](#get-all-contacts)

Gets a list of available contacts. Optionally, accepts a scope parameter.

```
$response = $client
    ->contacts()
    ->list();

echo $response->data(); // array
echo $response->meta; // Meta::class
echo $response->links; // Links::class
echo $response->toArray(); // ['data' => ['id' => 42, ...], 'meta' => [...], 'links' => [...]]
```

#### Get a contact

[](#get-a-contact)

Gets a single contact.

```
$response = $client
    ->contact()
    ->get(42);

echo $response->data(); // GetContactResponse::class
echo $response->id; // 42
echo $response->firstName; // 'Michael'
echo $response->lastName; // 'Scott'
echo $response->toArray(); // ['id' => 42, ...]
```

#### Update a contact

[](#update-a-contact)

Updates a contact from a specified payload.

```
$response = $client
    ->campaigns()
    ->update(42, [
        'first_name' => 'Michael',
        'last_name' => 'Scarn',
        'company' => 'CIA',
        'title' => 'Secret Agent'
    ]);

echo $response->data(); // GetContactResponse::class
echo $response->firstName; // 'Michael'
echo $response->lastName; // 'Scarn'
echo $response->company; // 'CIA'
echo $response->title; // 'Secret Agent'
echo $response->toArray(); // ['id' => 42, ...]
```

#### Archive a contact

[](#archive-a-contact)

Archives a contact.

```
$response = $client
    ->contacts()
    ->archive(42);

echo $response->getStatusCode(); // 200
```

#### Restore a contact

[](#restore-a-contact)

Gets an archived contact.

```
$response = $client
    ->contacts()
    ->restore(42);

echo $response->data(); // GetContactResponse::class
echo $response->id; // 42
echo $response->firstName; // 'Michael'
echo $response->lastName; // 'Scott'
echo $response->toArray(); // ['id' => 42, ...]
```

### Tickets

[](#tickets)

#### Get all tickets

[](#get-all-tickets)

Gets a list of tickets.

```
$response = $client
    ->tickets()
    ->list();

echo $response->data(); // array
echo $response->meta; // Meta::class
echo $response->links; // Links::class
echo $response->toArray(); // ['data' => ['id' => 'abc123', ...], 'meta' => [...], 'links' => [...]]
```

#### Get a ticket

[](#get-a-ticket)

Gets a single ticket.

```
$response = $client
    ->tickets()
    ->get('ab123');

echo $response->data(); // GetTicketResponse::class
echo $response->firstName; // 'Michael'
echo $response->lastName; // 'Scott'
echo $response->price; // 100
echo $response->toArray(); // ['id' => 'abc123', ...]
```

### Transactions

[](#transactions)

#### Create a transaction

[](#create-a-transaction)

Creates a transaction from a specified payload.

```
$response = $client
    ->transactions()
    ->create([
        'amount' => 100.00,
        'method' => 'cash',
        'transacted_at' => CarbonImmutable::now()->addHour()->format('m/d/y'),
        'campaign_code' => 'DEF456',
        'first_name' => 'Micahel',
        'last_name' => 'Scott',
    ]);

echo $response->data(); // GetTransactionResponse::class
echo $response->amount; // 100.00
echo $response->method; // 'cash'
echo $response->campaignCode; // 'DEF456'
echo $response->toArray(); // ['id' => 'abc123', ...]
```

#### Get all transactions

[](#get-all-transactions)

Gets a list of transactions.

```
$response = $client
    ->transactions()
    ->list();

echo $response->data(); // array
echo $response->meta; // Meta::class
echo $response->links; // Links::class
echo $response->toArray(); // ['data' => ['id' => 'abc123', ...], 'meta' => [...], 'links' => [...]]
```

#### Get a transactions

[](#get-a-transactions)

Gets a single transactions.

```
$response = $client
    ->transactions()
    ->get('ab123');

echo $response->data(); // GetTransactionResponse::class
echo $response->amount; // 100.00
echo $response->method; // 'cash'
echo $response->campaignCode; // 'DEF456'
echo $response->toArray(); // ['id' => 'abc123', ...]
```

### Payouts

[](#payouts)

#### Get all payouts

[](#get-all-payouts)

Gets a list of payouts.

```
$response = $client
    ->payouts()
    ->list();

echo $response->data(); // array
echo $response->meta; // Meta::class
echo $response->links; // Links::class
echo $response->toArray(); // ['data' => ['id' => 'abc123', ...], 'meta' => [...], 'links' => [...]]
```

#### Get a payout

[](#get-a-payout)

Gets a single payout.

```
$response = $client
    ->payout()
    ->get('ab123');

echo $response->data(); // GetPayoutResponse::class
echo $response->amount; // 100.00
echo $response->fee; // 3.00
echo $response->tip; // 1.00
echo $response->toArray(); // ['id' => 'abc123', ...]
```

### Plans

[](#plans)

#### Get all plans

[](#get-all-plans)

Gets a list of plans.

```
$response = $client
    ->plans()
    ->list();

echo $response->data(); // array
echo $response->meta; // Meta::class
echo $response->links; // Links::class
echo $response->toArray(); // ['data' => ['id' => 'abc123', ...], 'meta' => [...], 'links' => [...]]
```

#### Get a plan

[](#get-a-plan)

Gets a single plan.

```
$response = $client
    ->plans()
    ->get('ab123');

echo $response->data(); // GetPlanResponse::class
echo $response->amount; // 100.00
echo $response->firstName; // 'Michael'
echo $response->lastName; // 'Scarn'
echo $response->toArray(); // ['id' => 'abc123', ...]
```

### Funds

[](#funds)

#### Create a fund

[](#create-a-fund)

Creates a fund from a specified payload.

```
$response = $client
    ->funds()
    ->create("Scott's Tots");

echo $response->data(); // GetFundResponse::class
echo $response->id; // 'abc123'
echo $response->name; // "Scott's Tots"
echo $response->supporters; // 0
echo $response->toArray(); // ['id' => 'abc123', ...]
```

#### Get all funds

[](#get-all-funds)

Gets a list of all available funds

```
$response = $client
    ->funds()
    ->list();

echo $response->data(); // array
echo $response->meta; // Meta::class
echo $response->links; // Links::class
echo $response->toArray(); // ['data' => ['id' => 'abc123', ...], 'meta' => [...], 'links' => [...]]
```

#### Get a fund

[](#get-a-fund)

Gets a single fund.

```
$response = $client
    ->funds()
    ->get('abc123');

echo $response->data(); // GetFundResponse::class
echo $response->id; // 'abc123'
echo $response->name; // "Scott's Tots"
echo $response->supporters; // 0
echo $response->toArray(); // ['id' => 'abc123', ...]
```

#### Update a fund

[](#update-a-fund)

Updates a fund from a specified payload.

```
$response = $client
    ->campaigns()
    ->update('abc123', "Scott's Tots", "ST");

echo $response->data(); // GetFundResponse::class
echo $response->id; // 'abc123'
echo $response->name; // "Scott's Tots"
echo $response->code; // 'ST'
echo $response->supporters; // 0
echo $response->toArray(); // ['id' => 'abc123', ...]
```

#### Delete a fund

[](#delete-a-fund)

Deletes a fund.

```
$response = $client
    ->funds()
    ->delete('abc123');

echo $response->getStatusCode(); // 200
```

Testing
-------

[](#testing)

The package provides a fake implementation of the `Givebutter\Client` class that allows you to fake the API responses. To test your code, ensure you swap the `Givebutter\Client` class with the `Givebutter\Testing\ClientFake` class in your test case. Fake responses are returned in the order they are provided while creating the fake client. All responses have a `fake()` method that allows you to easily create a response object by only providing the parameters relevant for your test case.

```
use Givebutter\Testing\ClientFake;
use Givebutter\Responses\Campaigns\GetCampaignResponse;

$fake = new ClientFake([
    GetCampaignResponse::fake(GetCampaignFixture::class),
]);

$campaign = $fake
    ->campaigns()
    ->create([
        'description' => 'This is a test campaign.',
        'end_at' => CarbonImmutable::now()->toIso8601String(),
        'goal' => 1000,
        'subtitle' => 'subtitle',
        'slug' => md5(uniqid('', true)),
        'title' => 'title',
        'type' => 'collect',
    ]);

expect($campaign->description)->toBe('This is a test campaign.');
```

After the requests have been sent, there are various methods to ensure that the expected requests were sent:

```
// Assert completion create request was sent
$fake->assertSent(CampaignsResource::class, function (string $method, array $parameters): bool {
    return $method === 'create' &&
        $parameters[0]['title'] === 'title' &&
        $parameters[0]['description'] === 'This is a test campaign.';
});

// Assert 2 completion create requests were sent
$fake->assertSent(CampaignsResource::class, 2);

// Assert no completion create requests were sent
$fake->assertNotSent(CampaignsResource::class);

// Assert no requests were sent
$fake->assertNothingSent();
```

To write tests expecting the API request to fail, you may provide a `Throwable` object as the response.

```
$fake = new ClientFake([
    new Exception('Oops, something bad happened!')
]);

// the `Exception` will be thrown
$campaign = $fake
    ->campaigns()
    ->create([
        'description' => 'This is a test campaign.',
        'end_at' => CarbonImmutable::now()->toIso8601String(),
        'goal' => 1000,
        'subtitle' => 'subtitle',
        'slug' => md5(uniqid('', true)),
        'title' => 'title',
        'type' => 'collect',
    ]);
```

---

Givebutter PHP is an open-sourced software licensed under the **[MIT license](https://opensource.org/licenses/MIT)**.

###  Health Score

40

—

FairBetter than 87% of packages

Maintenance81

Actively maintained with recent releases

Popularity8

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity51

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 96.1% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

9

Last Release

309d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/cb50011d6f8c359f21b7352e7e7aaa76847a6d909d625bd439bf6c4df9fcf4d0?d=identicon)[JoeyMckenzie](/maintainers/JoeyMckenzie)

---

Top Contributors

[![JoeyMckenzie](https://avatars.githubusercontent.com/u/16873254?v=4)](https://github.com/JoeyMckenzie "JoeyMckenzie (99 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (2 commits)")[![github-actions[bot]](https://avatars.githubusercontent.com/in/15368?v=4)](https://github.com/github-actions[bot] "github-actions[bot] (2 commits)")

---

Tags

api-clientgivebutterphphttp clientApi Wrappergivebutter

###  Code Quality

TestsPest

Static AnalysisPHPStan, Rector

Code StyleLaravel Pint

Type Coverage Yes

### Embed Badge

![Health badge](/badges/joeymckenzie-givebutter-php/health.svg)

```
[![Health](https://phpackages.com/badges/joeymckenzie-givebutter-php/health.svg)](https://phpackages.com/packages/joeymckenzie-givebutter-php)
```

###  Alternatives

[psr/http-client

Common interface for HTTP clients

1.7k680.7M2.1k](/packages/psr-http-client)[kriswallsmith/buzz

Lightweight HTTP client

2.0k31.3M438](/packages/kriswallsmith-buzz)[react/http

Event-driven, streaming HTTP client and server implementation for ReactPHP

78126.4M414](/packages/react-http)[smi2/phpclickhouse

PHP ClickHouse Client

83510.1M71](/packages/smi2-phpclickhouse)[eightpoints/guzzle-bundle

Integrates Guzzle 6.x, a PHP HTTP Client, into Symfony. Comes with easy and powerful configuration options and optional plugins.

45912.1M55](/packages/eightpoints-guzzle-bundle)[sunchayn/nimbus

A Laravel package providing an in-browser API client with automatic schema generation, live validation, and built-in authentication with a touch of Laravel-tailored magic for effortless API testing.

29428.0k](/packages/sunchayn-nimbus)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
