PHPackages                             seatplus/esi-client - 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. [Caching](/categories/caching)
4. /
5. seatplus/esi-client

ActiveLibrary[Caching](/categories/caching)

seatplus/esi-client
===================

A standalone ESI (Eve Swagger Interface) Client Library using kevinrob/guzzle-cache-middleware

4.1.2(1mo ago)13.0k1[1 issues](https://github.com/seatplus/esi-client/issues)2MITPHPPHP ^8.3CI passing

Since Sep 23Pushed 1mo ago2 watchersCompare

[ Source](https://github.com/seatplus/esi-client)[ Packagist](https://packagist.org/packages/seatplus/esi-client)[ Docs](https://github.com/seatplus/esi-client)[ GitHub Sponsors](https://github.com/seatplus)[ RSS](/packages/seatplus-esi-client/feed)WikiDiscussions 4.x Synced today

READMEChangelog (10)Dependencies (44)Versions (30)Used By (2)

Esi-Client
==========

[](#esi-client)

[![Latest Stable Version](https://camo.githubusercontent.com/bc9d1f0a426793b83ab56d047e1f90d9d061214903faeecc521adbe4701ed1ab/68747470733a2f2f706f7365722e707567782e6f72672f73656174706c75732f6573692d636c69656e742f762f737461626c65)](https://packagist.org/packages/seatplus/esi-client)[![Tests](https://github.com/seatplus/esi-client/actions/workflows/tests.yml/badge.svg)](https://github.com/seatplus/esi-client/actions/workflows/tests.yml)[![Formats](https://github.com/seatplus/esi-client/actions/workflows/formats.yml/badge.svg)](https://github.com/seatplus/esi-client/actions/workflows/formats.yml)[![Maintainability](https://camo.githubusercontent.com/47408768414f97adeadb9ffa4ed6e9dbbf079e45f299b8b9e257fbaec221d07d/68747470733a2f2f6170692e636f6465636c696d6174652e636f6d2f76312f6261646765732f36343264336233636134316537636333636434662f6d61696e7461696e6162696c697479)](https://codeclimate.com/github/seatplus/esi-client/maintainability)[![Test Coverage](https://camo.githubusercontent.com/87665690094b1c658e475f927d5b3d4841842492486230f5732da6be80f1e10c/68747470733a2f2f6170692e636f6465636c696d6174652e636f6d2f76312f6261646765732f36343264336233636134316537636333636434662f746573745f636f766572616765)](https://codeclimate.com/github/seatplus/esi-client/test_coverage)[![Total Downloads](https://camo.githubusercontent.com/43b64a4cefcaea0534ff430a2e14bae734f59553a702509fa7762579e92d0b01/68747470733a2f2f706f7365722e707567782e6f72672f73656174706c75732f6573692d636c69656e742f646f776e6c6f616473)](https://packagist.org/packages/seatplus/esi-client)[![License](https://camo.githubusercontent.com/84877eb2671497c9bb12d9fa676a56b94e63cf3b944904b03820b6ba5862cec2/68747470733a2f2f706f7365722e707567782e6f72672f73656174706c75732f6573692d636c69656e742f6c6963656e7365)](https://packagist.org/packages/seatplus/esi-client)

A standalone ESI (Eve Swagger Interface) Client Library using kevinrob/guzzle-cache-middleware.

> **ESI compatibility date:** This branch of `esi-client` targets ESI compatibility date **`2025-12-16`** and forward. Responses DTOs are sourced from [`seatplus/esi-schema`](https://github.com/seatplus/esi-schema) (`1.x`). If CCP publishes a new breaking compatibility date, a new major version of both packages will be released.

Installation
------------

[](#installation)

You can install the package via composer:

```
composer require seatplus/esi-client
```

Usage
-----

[](#usage)

### Typed SDK (recommended)

[](#typed-sdk-recommended)

The SDK exposes typed resource methods. Single-object endpoints return the DTO directly (a subclass of `AbstractEsiDto`); paginated list endpoints return `EsiResult`.

```
use Seatplus\EsiClient\EsiClient;

$sdk = new EsiClient();

// Single object — returns AllianceDetail directly
$alliance = $sdk->alliance()->getAlliancesAllianceId(99000006);
echo $alliance->name;          // typed readonly string
echo $alliance->ticker;
$alliance->isCachedLoad;       // bool — true if served from RFC 7234 cache

// Authenticated endpoint — returns CharactersDetail directly
$character = $sdk->withToken($accessToken)->characters()->getCharactersCharacterId(95725047);
echo $character->name;

// Paginated list — returns EsiResult (pages metadata needed)
$result = $sdk->withToken($accessToken)->assets()->getCharactersCharacterIdAssets(95725047, page: 1);
echo $result->pages;           // total pages from X-Pages header
foreach ($result->data as $asset) {
    echo $asset->item_id;      // typed readonly int
}
```

### Low-level transport

[](#low-level-transport)

```
$esi = new EsiClient();

// make a call — returns EsiResponse
$response = $esi->invoke('get', '/characters/{character_id}/', [
    'character_id' => 95725047,
]);

// $response->data    — stdClass decoded from the JSON body
// $response->pages   — total pages (from X-Pages header, or 1)
// $response->isCachedLoad() — true if served from RFC 7234 cache
```

### Rate limiting

[](#rate-limiting)

ESI enforces a **1800-token / 15-minute** rolling window (one token consumed per request, irrespective of response code). `esi-client` itself does not throttle — rate limiting is handled by the consumer layer (`eveapi`) using Laravel Horizon throttle middleware on each queued job.

If the HTTP client receives a `420 Error Limited` response, the request is retried with exponential backoff as configured on the job.

Testing
-------

[](#testing)

```
composer test
```

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

Contributing
------------

[](#contributing)

As of today this esi client only supports Laravel Cache Middleware. However [`Kevinrob/guzzle-cache-middleware`](https://github.com/Kevinrob/guzzle-cache-middleware) supports various others such as:

- Doctrine cache
- Laravel cache
- Flysystem
- PSR6
- WordPress Object Cache

if you plan to use this client with any of these a proper CacheMiddleware would be needed. Same goes to the HTTP client. This client and its cache middleware had been designed to use with Guzzle7 (but you can use it with any PSR-7 HTTP client). Please submit your PR accordingly implementing other HTTP clients.

Please see [CONTRIBUTING](.github/CONTRIBUTING.md) for details.

Security Vulnerabilities
------------------------

[](#security-vulnerabilities)

Please review [our security policy](../../security/policy) on how to report security vulnerabilities.

Credits
-------

[](#credits)

- [Felix Huber](https://github.com/seatplus)
- [All Contributors](../../contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

51

—

FairBetter than 95% of packages

Maintenance73

Regular maintenance activity

Popularity24

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity77

Established project with proven stability

 Bus Factor1

Top contributor holds 100% 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 ~95 days

Recently: every ~2 days

Total

19

Last Release

36d ago

Major Versions

0.10.1 → 1.0.02022-04-29

1.0.1 → 2.0.02023-01-19

2.x-dev → 3.0.02024-09-28

3.x-dev → 4.0.02026-05-18

PHP version history (2 changes)0.9.0PHP ^8.0

3.0.0PHP ^8.3

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/6583519?v=4)[Herpaderp Aldent](/maintainers/herpaderpaldent)[@herpaderpaldent](https://github.com/herpaderpaldent)

---

Top Contributors

[![herpaderpaldent](https://avatars.githubusercontent.com/u/6583519?v=4)](https://github.com/herpaderpaldent "herpaderpaldent (45 commits)")

---

Tags

cacheesieveeve-onlinelaravellibrarypsr-6rfc-7234rfc7234seatpluslaravellibrarycachepsr6cache-controlrfc7234esiEVE Onlineseatplus

###  Code Quality

TestsPest

Static AnalysisPHPStan, Rector

Code StyleLaravel Pint

Type Coverage Yes

### Embed Badge

![Health badge](/badges/seatplus-esi-client/health.svg)

```
[![Health](https://phpackages.com/badges/seatplus-esi-client/health.svg)](https://phpackages.com/packages/seatplus-esi-client)
```

###  Alternatives

[laravel/framework

The Laravel Framework.

34.8k543.8M20.1k](/packages/laravel-framework)[spatie/laravel-responsecache

Speed up a Laravel application by caching the entire response

2.8k9.0M69](/packages/spatie-laravel-responsecache)[laravel/nightwatch

The official Laravel Nightwatch package.

36210.1M36](/packages/laravel-nightwatch)[awssat/laravel-visits

Laravel Redis visits counter for Eloquent models

973172.3k2](/packages/awssat-laravel-visits)[barryvdh/laravel-httpcache

HttpCache for Laravel

512406.1k11](/packages/barryvdh-laravel-httpcache)[open-dxp/opendxp

Content &amp; Product Management Framework (CMS/PIM)

9421.6k61](/packages/open-dxp-opendxp)

PHPackages © 2026

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