Search by

karim-tao / airtable-laravel

karim-tao

Laravel integration for the Airtable API. Config-driven credentials and Laravel's own HTTP client under the hood.

Package info

github.com/karim-tao/airtable-laravel

pkg:composer/karim-tao/airtable-laravel

Statistics

Installs: 5

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

0.1.0 2026-10-23 12:12 UTC

This package is auto-updated.

Last update: 2026-10-23 12:38:48 UTC


README

Tests Latest Stable Version License

Talk to the Airtable API from Laravel: config-driven app credentials and Laravel's own HTTP client under the hood.

In this example, we build a client from a token stored for a user and read the authorized user:

use Airtable\Client\AirtableClient;
use Airtable\Laravel\Http\LaravelHttpClient;

$airtable = AirtableClient::factory()
    ->withClientCredentials(config('airtable.auth.client_id'), config('airtable.auth.client_secret'))
    ->withToken($accessToken, $expiresAt, $refreshToken)
    ->withHttpClient(new LaravelHttpClient)
    ->make();

$user = $airtable->users()->me();

Not using Laravel? See karim-tao/airtable-client.

Installation

Requires PHP 8.3+ and Laravel 12 or 13.

You can install the package via composer:

composer require karim-tao/airtable-laravel

The service provider is discovered automatically. Publish the config file if you want to change it:

php artisan vendor:publish --tag=airtable-config

Configuration

Set the credentials of your Airtable app in .env:

AIRTABLE_CLIENT_ID=your-client-id
AIRTABLE_CLIENT_SECRET=your-client-secret

All options

Everything in config/airtable.php:

Key Env Default
auth.client_id AIRTABLE_CLIENT_ID ''
auth.client_secret AIRTABLE_CLIENT_SECRET ''
http.timeout AIRTABLE_HTTP_TIMEOUT 30
http.connect_timeout AIRTABLE_HTTP_CONNECT_TIMEOUT 10

How it works

Airtable tokens belong to each user who connects their account, so there is no shared client: build one per user with AirtableClient::factory() and pass LaravelHttpClient, a PSR-18 adapter over Laravel's Http facade, so it honours your HTTP config, fakes and middleware.

Airtable invalidates the previous token pair on every refresh. Pass an event dispatcher with withEventDispatcher() to store the new pair as soon as the client dispatches Airtable\Client\Events\TokenRefreshed.

Testing

composer test

Because requests go through Laravel's Http facade, Http::fake() works out of the box:

Http::fake([
    'api.airtable.com/v0/meta/whoami' => Http::response(['id' => 'usr123', 'email' => 'karim@example.com']),
]);

License

Airtable Laravel is open-sourced software licensed under the MIT license.