fkrzski / laravel-steam-api-sdk
Laravel bridge for fkrzski/php-steam-api-sdk — service provider, Steam facade and test fakes for the Steam Web API.
Fund package maintenance!
Requires
- php: ^8.5.0
- fkrzski/php-steam-api-sdk: ^0.9
- illuminate/contracts: ^13.0
- illuminate/support: ^13.0
- saloonphp/saloon: ^4.0
Requires (Dev)
- larastan/larastan: ^3.0
- laravel/nightwatch: ^1.24
- laravel/pint: ^1.29.1
- orchestra/testbench: ^11.0
- pestphp/pest: ^5.0.0
- pestphp/pest-plugin-phpstan: ^5.0.2
- pestphp/pest-plugin-rector: ^5.0.3
- pestphp/pest-plugin-type-coverage: ^5.0.0
- phpstan/phpstan: ^2.2.7
- rector/rector: ^2.4.2
- symfony/var-dumper: ^8.0.8
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-10-28 20:56:10 UTC
README
Laravel bridge for fkrzski/php-steam-api-sdk. Ships a service provider, a Steam facade and a Steam::fake() test helper so you can talk to the Steam Web API the Laravel way.
It powers the player stats on Dead by Stats.
- Auto-discovered
SteamConnectorbinding, scoped per request and safe under Octane. - Rate limits shared across processes through a Laravel cache store of your choosing — Steam's daily quota or your own, with a cool-down after a 429.
- Timeouts and retries from the config file, and queue middleware that holds a job back once a limit is spent.
- Requests through Guzzle, reported to Laravel Nightwatch while it is enabled, or through any Saloon sender the container builds.
- Fluent
Steamfacade over the SDK's resources —Steam::users()->summaries(...)and the rest — plus a lazy news feed. - Laravel events for every Steam request, response and failure, and a log channel built on them.
- Localised payloads follow your application locale, or the language you pin in config.
AsSteamIdEloquent cast,SteamIdRulevalidation rule and one-liner test fakes that mirror the resources —Steam::fake()->users()->summaries(...)— with DTO factories for the payloads.
Requirements
- PHP 8.5+
- Laravel 13+
Installation
composer require fkrzski/laravel-steam-api-sdk
The service provider and Steam facade are auto-discovered. Run the installer to publish the config and store your key:
php artisan steam:install
It writes config/steam-api.php and asks for your Steam Web API key, appending it to .env. Both steps are also fine to do by hand:
php artisan vendor:publish --tag=steam-api-config
STEAM_API_KEY=your-steam-web-api-key
Quick start
use Fkrzski\LaravelSteamApiSdk\Facades\Steam; use Fkrzski\SteamApiSdk\ValueObjects\SteamId; $id = SteamId::fromSteamId64('76561198000000000'); $summaries = Steam::users()->summaries([$id]); $bans = Steam::users()->bans([$id]); $friends = Steam::users()->friends($id); $groups = Steam::users()->groups($id); $resolvedId = Steam::users()->resolveVanityUrl('gabelogannewell'); $library = Steam::players()->ownedGames($id, appIdsFilter: [381210]); $recentGames = Steam::players()->recentlyPlayedGames($id); $level = Steam::players()->steamLevel($id); $badges = Steam::players()->badges($id); $quests = Steam::players()->communityBadgeProgress($id); $stats = Steam::stats()->userStats($id, appId: 381210); $achievements = Steam::stats()->achievements($id, appId: 381210); $playing = Steam::stats()->currentPlayers(appId: 381210); $globalStats = Steam::stats()->globalAchievements(gameId: 381210); $gameSchema = Steam::stats()->schema(appId: 381210); $versionCheck = Steam::apps()->upToDateCheck(appId: 440, version: $installedVersion); $servers = Steam::apps()->serversAtAddress('108.181.62.21'); $relayNetwork = Steam::apps()->sdrConfig(appId: 730); $news = Steam::news()->appNews(appId: 440); $newsFeed = Steam::newsFeed(appId: 440); $serverTime = Steam::webApi()->serverTime(); $webApis = Steam::webApi()->supportedApis();
Each resource method returns a strongly-typed DTO from the underlying SDK — you never touch raw JSON.
Documentation
Full documentation lives at docs.fkrzski.dev/laravel-steam-api-sdk:
- Guide — the
SteamIdvalue object, the resources, exceptions, and concurrent requests. - Configuration — the config file, your API key, timeouts and retries, the HTTP sender and Nightwatch.
- Rate limiting — the daily budget, limits of your own, the 429 cool-down and queued jobs.
- API reference — every resource and facade method, its parameters, return type, and errors.
- Eloquent cast — persist a Steam ID on a model with
AsSteamId. - Route binding — opt in to resolving a
{steamId}route parameter into aSteamIdvalue object. - Validation rule — validate submitted Steam IDs with
SteamIdRule. - Events — listen to Steam requests, responses and failures through Laravel events.
- Logging — log failed Steam calls, and every response if you ask, to a channel of yours.
- Testing — fake the Steam Web API with
Steam::fake().
License
MIT. See LICENSE.md.