A lightweight Laravel package that provides a clean, consistent structure for API success and error responses. Supports Laravel 8 → 12 with auto-discovery.
Every Laravel project needs a unified structure for API responses. This package solves that by providing:
successResponse()→ Standard success JSONerrorResponse()→ Standard error JSON- Optional
BaseController→ Automatically includes the trait - Clean, readable, reusable responses across all your apps
composer require fadyreda99/laravel-responseLaravel auto-discovers the package — no configuration needed.
use Fadyreda99\LaravelResponse\ResponseTrait;
class UserController extends Controller
{
use ResponseTrait;
### basic example to return success response
public function successIndex()
{
return $this->successResponse(
['users' => User::all()],
'Users fetched successfully'
);
}
### example to return success response with pagination data
public function successIndex()
{
$users = Uset::paginate(10);
$userResource = UserResource::collection($users);
// get pagination data
$paginationData = $this->getPaginationData($users);
return $this->successResponse($userResource, 'ok', 201, $paginationData);
}
### basic example to return error response
public function errorIndex()
{
return $this->errorResponse(
'Invalid request',
400
);
}
}return $this->successResponse(
['id' => 1, 'name' => 'Fady'],
'User loaded successfully'
);Response JSON:
{
"status": "success",
"message": "User loaded successfully",
"data": {
"id": 1,
"name": "Fady"
}
}return $this->successResponse(
$users,
'Users retrieved',
200,
[
'page' => 1,
'per_page' => 10,
'total' => 100
]
);Response JSON:
{
"status": "success",
"message": "Users retrieved",
"data": [...],
"pagination": {
"page": 1,
"per_page": 10,
"total": 100
}
} $paginationData = $this->getPaginationData($users);
return $this->successResponse(
$userResource,
'ok',
200,
$paginationData
);Response JSON:
{
"status": "success",
"message": "Users retrieved",
"data": [...],
"pagination": {
"current_page": 1,
"last_page": 5,
"total_page": 5,
"per_page": 2,
"total_items": 10,
"from": 1,
"to": 2,
"next_page_url": "URL/test?page=2",
"prev_page_url": null,
"first_page_url": "URL/test?page=1",
"last_page_url": "URL/test?page=5",
"path": "URL/test"
}
}return $this->successResponse(
$users,
'Users retrieved',
200,
['page' => 1],
['debug' => 'Extra info here']
);Response JSON:
{
"status": "success",
"message": "Users retrieved",
"data": [...],
"pagination": { "page": 1 },
"additionals": { "debug": "Extra info here" }
}return $this->errorResponse(
'Invalid request',
400
);Response JSON:
{
"status": "error",
"message": "Invalid request"
}return $this->errorResponse(
'Validation failed',
422,
['email' => 'Email is required']
);Response JSON:
{
"status": "error",
"message": "Validation failed",
"data": {
"email": "Email is required"
}
}This package is open-sourced under the MIT License.