JSON:API for Laravel applications.

Maintainers

👁 lindyhopchris

Package info

github.com/laravel-json-api/laravel

pkg:composer/laravel-json-api/laravel

Statistics

Installs: 1 506 368

Dependents: 19

Suggesters: 0

Stars: 640

Open Issues: 81

v5.2.1 2026-04-14 12:29 UTC

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT 6d51a3a4eb8b842ac2462cc54d5de8a80703a45e

  • Cloud Creativity Ltd <info.woop@cloudcreativity.co.uk>
  • Christopher Gammie <chris.woop@cloudcreativity.co.uk>

laraveljsonapiJSON-APIjsonapi.org


README

👁 Tests

JSON:API for Web Artisans

Implement feature-rich JSON:API compliant APIs in your Laravel applications. Build your next standards-compliant API today.

Why use JSON:API and Laravel JSON:API?

Great question! Here's some reasons from this excellent article by Denisa Halmaghi:

Why Use JSON:API?

  • Standardised, consistent APIs.
  • Feature rich - some of which are: sparse fieldsets (only fetch the fields you need), filtering, sorting, pagination, eager loading for relationships (includes, which solve the N+1 problem).
  • Easy to understand.

Why use Laravel JSON:API?

  • Saves a lot of development time.
  • Highly maintainable code.
  • Great, extensive documentation.
  • Strong conventions, but also highly customisable.
  • Makes use of native Laravel features such as policies and form requests to make the shift easier for developers.
  • Beautiful, expressive Nova-style schemas.
  • Fully testable via expressive test helpers.
class PostSchema extends Schema
{

 /**
 * The model the schema corresponds to.
 *
 * @var string
 */
 public static string $model = Post::class;

 /**
 * The maximum include path depth.
 *
 * @var int
 */
 protected int $maxDepth = 3;

 /**
 * Get the resource fields.
 *
 * @return array
 */
 public function fields(): array
 {
 return [
 ID::make(),
 BelongsTo::make('author')->type('users')->readOnly(),
 HasMany::make('comments')->readOnly(),
 Str::make('content'),
 DateTime::make('createdAt')->sortable()->readOnly(),
 DateTime::make('publishedAt')->sortable(),
 Str::make('slug'),
 BelongsToMany::make('tags'),
 Str::make('title')->sortable(),
 DateTime::make('updatedAt')->sortable()->readOnly(),
 ];
 }

 /**
 * Get the resource filters.
 *
 * @return array
 */
 public function filters(): array
 {
 return [
 WhereIdIn::make($this),
 WhereIn::make('author', 'author_id'),
 ];
 }

 /**
 * Get the resource paginator.
 *
 * @return Paginator|null
 */
 public function pagination(): ?Paginator
 {
 return PagePagination::make();
 }
}

Documentation

See our website, laraveljsonapi.io

Tutorial

New to JSON:API and/or Laravel JSON:API? Then the Laravel JSON:API tutorial is a great way to learn!

Follow the tutorial to build a blog application with a JSON:API compliant API.

Installation

Install using Composer

composer require laravel-json-api/laravel

See our documentation for further installation instructions.

Upgrading

When upgrading you typically want to upgrade this package and all our related packages. This is the recommended way:

composer require laravel-json-api/laravel --no-update
composer require laravel-json-api/testing --dev --no-update
composer up "laravel-json-api/*" cloudcreativity/json-api-testing

Example Application

To view an example Laravel application that uses this package, see the Tutorial Application.

License

Laravel JSON:API is open-sourced software licensed under the MIT License.