Skip to content
This repository has been archived by the owner on Jul 22, 2020. It is now read-only.


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

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.