An api package for Laravel and Lumen.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Artisan API

Latest Stable Version Latest Unstable Version Software License Build Status Coverage Status Total Downloads

An api service for Laravel or Lumen. Helps you send responses with the proper status and code. Uses Fractal for items and collections.


Require it with Composer

$ composer require isaackearl/artisan-api

Add the service provider to config/app.php

// For Laravel add this to config/app.php

// For Lumen add this to bootstrap/app.php 

(Optional) Add the API facade in config/app.php

'Api' => IsaacKenEarl\LaravelApi\Facades\Api::class,


In your controllers you can do stuff like this:

// do stuff like this
public function show() {
    return Api::respondWithItem($user, new UserTransformer());

// or like this:

return Api::respondNotFound();

There are alot of options. Include the ArtisanApiInterface in your controller constructor and you can use it without the facade.

    private $api;

    public function __construct(ArtisanApiServiceInterface $apiService)
        $this->api = $apiService;

    public function index()
        $users = User::all();
        return $this->api->respondWithCollection($users, new UserTransformer());

You can do custom stuff too and chain methods

// you can respondWithError or respondWithMessage and customize the status code 
// and response code etc
return $this->api
            ->respondWithError('Not logged in');

Take a look at the ArtisanApiInterface to see all the supported methods. You can find that here:



Transformers allow you to control how the data is presented in the response of your API. A typical transformer looks like this:

class UserTransformer extends Transformer
    function transform($user)

        return [
            'id' => $user->id,
            'name' => $user->name,
            'date_of_birth' => $user->date_of_birth->toDateString(),
            'email' => $user->getPrimaryEmail()

You can generate a transformer with the make:transformer command

php artisan make:transformer UserTransformer

This package uses laravel-fractal as it's fractal implementation. Check out their docs on their github page for more specific usage information and examples.

Since we are using the laravel-fractal package you can also publish the laravel-fractal config to customize the response data.

php artisan vendor:publish --provider="Spatie\Fractal\FractalServiceProvider"


$ composer test


Please see CONTRIBUTING and CONDUCT for details.



The MIT License (MIT). Please see License File for more information.