PHPackages                             treblle/treblle-laravel - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Logging &amp; Monitoring](/categories/logging)
4. /
5. treblle/treblle-laravel

ActiveLibrary[Logging &amp; Monitoring](/categories/logging)

treblle/treblle-laravel
=======================

Runtime Intelligence Platform

6.1.6(3w ago)135226.0k—8.8%25MITPHPPHP ^8.2CI passing

Since Apr 25Pushed 3w ago6 watchersCompare

[ Source](https://github.com/Treblle/treblle-laravel)[ Packagist](https://packagist.org/packages/treblle/treblle-laravel)[ Docs](https://treblle.com/)[ RSS](/packages/treblle-treblle-laravel/feed)WikiDiscussions main Synced 3d ago

READMEChangelog (10)Dependencies (9)Versions (104)Used By (0)

Treblle - Runtime Intelligence Platform
=======================================

[](#treblle---runtime-intelligence-platform)

[Website](http://treblle.com/) • [Documentation](https://docs.treblle.com/) • [Pricing](https://treblle.com/pricing)

Discover, Govern, and Secure APIs, Agents, and AI Across Any Cloud, Gateway or Technology.

---

Treblle Laravel SDK
-------------------

[](#treblle-laravel-sdk)

[![Latest Version](https://camo.githubusercontent.com/736c664f510dea3d7e0bacadfc61e2a5a8234e81cb2e8eb647eb2e792af6a226/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f747265626c6c652f747265626c6c652d6c61726176656c)](https://packagist.org/packages/treblle/treblle-laravel)[![Total Downloads](https://camo.githubusercontent.com/f77cddb76ea8276f650acb3f76b31760a9c32e4cb0344886d143aed73e71f436/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f747265626c6c652f747265626c6c652d6c61726176656c)](https://packagist.org/packages/treblle/treblle-laravel)

Table of Contents
-----------------

[](#table-of-contents)

- [Requirements](#requirements)
- [Installation](#installation)
- [Quick Start](#quick-start)
- [Registering Middleware](#registering-middleware)
    - [Laravel 11 and 12](#laravel-11-and-12)
    - [Laravel 10 and below](#laravel-10-and-below)
- [Applying Middleware to Routes](#applying-middleware-to-routes)
- [Excluding Routes from Monitoring](#excluding-routes-from-monitoring)
- [Configuration Reference](#configuration-reference)
- [Environment Variables](#environment-variables)
- [Advanced Features](#advanced-features)
    - [Multi-Project Setup](#multi-project-setup)
    - [Early Payload Capture](#early-payload-capture)
    - [Custom Metadata](#custom-metadata)
    - [Queue-Based Transmission](#queue-based-transmission)
    - [Sensitive Data Masking](#sensitive-data-masking)
    - [Header Exclusion](#header-exclusion)
    - [Debug Mode](#debug-mode)
- [Verifying Your Setup](#verifying-your-setup)
- [Upgrading](#upgrading)
    - [v6.0 → v6.1](#v60--v61)
    - [v5.x → v6.0](#v5x--v60)

---

Requirements
------------

[](#requirements)

RequirementVersionPHP^8.2Laravel10.x, 11.x, 12.x, 13.x---

Installation
------------

[](#installation)

**Step 1 — Install via Composer:**

```
composer require treblle/treblle-laravel
```

**Step 2 — Add your credentials to `.env`:**

```
TREBLLE_API_KEY=your_api_key
TREBLLE_SDK_TOKEN=your_sdk_token
```

Get your API Key and SDK Token for free at [platform.treblle.com](https://platform.treblle.com).

**Step 3 — (Optional) Publish the config file:**

```
php artisan vendor:publish --provider="Treblle\Laravel\TreblleServiceProvider"
```

This creates `config/treblle.php` where you can customize all settings.

---

Quick Start
-----------

[](#quick-start)

Apply the `treblle` middleware to the routes you want to monitor:

```
// routes/api.php
Route::middleware(['treblle'])->group(function () {
    Route::get('/users', [UserController::class, 'index']);
    Route::post('/users', [UserController::class, 'store']);
    Route::get('/users/{id}', [UserController::class, 'show']);
});
```

That's it. Requests to those routes will appear in your [Treblle Dashboard](https://platform.treblle.com) in real time.

---

Registering Middleware
----------------------

[](#registering-middleware)

The `treblle` and `treblle.early` middleware aliases are registered automatically by the service provider. You do not need to add anything to your kernel or bootstrap file to use them.

If for some reason you need to register them manually, here's how:

### Laravel 11 and 12

[](#laravel-11-and-12)

In `bootstrap/app.php`:

```
use Treblle\Laravel\Middlewares\TreblleMiddleware;
use Treblle\Laravel\Middlewares\TreblleEarlyMiddleware;

return Application::configure(basePath: dirname(__DIR__))
    ->withMiddleware(function ($middleware) {
        $middleware->alias([
            'treblle'       => TreblleMiddleware::class,
            'treblle.early' => TreblleEarlyMiddleware::class,
        ]);
    })
    ->create();
```

### Laravel 10 and below

[](#laravel-10-and-below)

In `app/Http/Kernel.php`:

```
protected $middlewareAliases = [
    // ... other middleware
    'treblle'       => \Treblle\Laravel\Middlewares\TreblleMiddleware::class,
    'treblle.early' => \Treblle\Laravel\Middlewares\TreblleEarlyMiddleware::class,
];
```

---

Applying Middleware to Routes
-----------------------------

[](#applying-middleware-to-routes)

### Monitor all routes in a group

[](#monitor-all-routes-in-a-group)

```
Route::middleware(['treblle'])->group(function () {
    Route::get('/users', [UserController::class, 'index']);
    Route::post('/users', [UserController::class, 'store']);
    Route::get('/users/{id}', [UserController::class, 'show']);
    Route::put('/users/{id}', [UserController::class, 'update']);
    Route::delete('/users/{id}', [UserController::class, 'destroy']);
});
```

### Monitor a single route

[](#monitor-a-single-route)

```
Route::get('/users/{id}', [UserController::class, 'show'])
    ->middleware('treblle');
```

### Monitor only specific routes within a group

[](#monitor-only-specific-routes-within-a-group)

```
Route::prefix('api/v1')->group(function () {

    // These routes are monitored
    Route::middleware(['treblle'])->group(function () {
        Route::get('/products', [ProductController::class, 'index']);
        Route::get('/orders', [OrderController::class, 'index']);
    });

    // These routes are not monitored
    Route::post('/internal/cache/clear', [CacheController::class, 'clear']);
    Route::post('/internal/queue/retry', [QueueController::class, 'retry']);

});
```

---

Excluding Routes from Monitoring
--------------------------------

[](#excluding-routes-from-monitoring)

There are two ways to exclude specific routes from Treblle monitoring when the middleware is applied at a group level.

### Option 1 — `withoutMiddleware()` on a route

[](#option-1--withoutmiddleware-on-a-route)

Use Laravel's built-in `withoutMiddleware()` method directly on the routes you want to exclude:

```
Route::middleware(['treblle'])->group(function () {

    Route::get('/users', [UserController::class, 'index']);
    Route::post('/users', [UserController::class, 'store']);

    // This route is excluded from Treblle monitoring
    Route::get('/users/export', [UserController::class, 'export'])
        ->withoutMiddleware('treblle');

    // This route is also excluded
    Route::post('/users/bulk-import', [UserController::class, 'bulkImport'])
        ->withoutMiddleware(\Treblle\Laravel\Middlewares\TreblleMiddleware::class);

});
```

Both the alias (`'treblle'`) and the full class name work.

### Option 2 — Exclude an entire nested group

[](#option-2--exclude-an-entire-nested-group)

```
Route::middleware(['treblle'])->prefix('api')->group(function () {

    // Monitored routes
    Route::get('/users', [UserController::class, 'index']);
    Route::get('/products', [ProductController::class, 'index']);

    // This entire group is excluded
    Route::withoutMiddleware('treblle')->prefix('internal')->group(function () {
        Route::post('/cache/clear', [CacheController::class, 'clear']);
        Route::get('/health', [HealthController::class, 'check']);
        Route::post('/queue/retry', [QueueController::class, 'retry']);
    });

});
```

### Option 3 — Never apply the middleware in the first place

[](#option-3--never-apply-the-middleware-in-the-first-place)

The simplest approach: only apply `treblle` where you want it, not to everything.

```
// routes/api.php

// Monitored
Route::middleware(['auth:sanctum', 'treblle'])->group(function () {
    Route::apiResource('users', UserController::class);
    Route::apiResource('orders', OrderController::class);
});

// Not monitored — no treblle middleware
Route::middleware(['auth:sanctum'])->prefix('internal')->group(function () {
    Route::get('/health', [HealthController::class, 'check']);
    Route::post('/cache/flush', [CacheController::class, 'flush']);
});
```

---

Configuration Reference
-----------------------

[](#configuration-reference)

After publishing the config file, `config/treblle.php` contains all available options:

```
