Requizon

Requizon vs Laravel Pulse

Pulse shows you which outgoing requests were slow. Requizon shows those too, along with the ones that failed fast.

Checked against Laravel Pulse's docs and source on

Short answer

Pulse is free, already installed in a lot of applications, and its Slow Outgoing Requests card is a good answer to "which API is slow". It only sees calls over its threshold, a second by default, and it records how many and how slow, never the status. An API that fails in 80 ms is invisible to it. If failures and error rates are what you need to see, that is the gap Requizon fills, and the two run side by side without conflict.

Laravel Pulse
Laravel's free, self-hosted performance dashboard. Its Slow Outgoing Requests card lists HTTP client calls that took longer than a threshold. Free, MIT
Requizon
A Laravel package that records every outbound HTTP call into your own database and charts it by API, host and path. One-time purchase, runs on your servers

Laravel Pulse is Laravel's free, self-hosted performance dashboard. One of its cards is Slow Outgoing Requests, which lists the HTTP client calls that took longer than a threshold. If you have Pulse installed, you already have a view of your outbound traffic, and it is fair to ask what Requizon would add. The short version is failures: Pulse measures how slow a call was, and never records whether it worked.

What the Slow Outgoing Requests recorder keeps#

Pulse's SlowOutgoingRequests recorder registers global middleware on Laravel's HTTP client. When a call finishes, successfully or not, it compares the duration with a threshold: 1,000 ms by default, adjustable per URL pattern. Calls under the threshold are discarded. For the rest it records a count and the slowest duration, keyed by the HTTP method and the URL, after applying any grouping patterns you have configured.

That is the whole record. The card shows each method and URL with how many times it was slow and its slowest time, over the last hour, six hours, 24 hours or seven days. Pulse trims data older than seven days by default.

At a glance#

For outgoing requests Pulse Requizon
Price Free, MIT A one-time purchase per app
What else it shows Slow requests, jobs and queries, exceptions, queues, cache, servers, usage Nothing else
Which calls are recorded Those over the threshold All of them
Status code Not recorded Recorded and charted
Failure types None Connection, HTTP and application errors
Response time Slowest per URL Average per API, host and path, over time
Grouping Method and URL, rewritten by your regular expressions API, host and path, with IDs replaced automatically
Individual calls Not kept 14 days, with the body of each failure
History 7 days A year of hourly statistics
Raw Guzzle clients Through a community recorder Bundled middleware
Database MySQL, MariaDB or PostgreSQL MySQL 8.0.20+ or a compatible MariaDB
Laravel versions 10 to 13 12 and 13

The calls Pulse cannot show you#

A threshold on duration is a good filter for slowness and the wrong filter for failure, because plenty of failing calls are fast. An expired API key can get its 401 in 60 ms. A vendor's broken deploy returns 500s as fast as it returns anything. A misconfigured DNS name fails before a connection is even opened. None of those reach the threshold, so none of them appear on the card, and an API that is failing every call can look perfectly healthy in Pulse.

The calls that do reach the card are recorded without a status, so a slow success and a slow timeout land in the same row, and telling them apart means going to find the exception.

Requizon records every transfer with its outcome. The overview charts responses per API stacked by status code or failure type, so the hour a vendor started returning 503s shows up as a change of colour in the chart, whatever the latency did.

Where Pulse is ahead#

  • It costs nothing, it is maintained by the Laravel team, and there is a good chance it is already in your composer.json.
  • One screen for the whole app. Slow queries, slow jobs, exceptions and server load next to slow outgoing requests is a better morning check than any single-purpose dashboard.
  • It runs on PostgreSQL, and on Laravel 10 and 11. Requizon needs MySQL and Laravel 12 or later.
  • It scales down its own cost. Sampling and a Redis ingest are built in for high-traffic applications. Requizon's answer to volume is its rollup and pruning, and it writes one row per transfer before that.
  • Slowness is sometimes the only question. If your integrations fail loudly in your error tracker already and you just want to know which one drags, the Slow Outgoing Requests card answers that.

Grouping URLs#

Pulse groups by the full URL unless you give it regular expressions, so /orders/1 and /orders/2 are separate rows until you write a pattern such as '#/\d+#' => '/*'. It is flexible, and the patterns are yours to maintain as APIs change.

Requizon normalises paths without configuration: numeric, UUID, ULID and hex segments, and any segment over 40 characters, become :id. Hosts can be mapped to API names, so several hostnames for one vendor share a row. When the heuristic is wrong for an API you can set allowed patterns or replace the normaliser.

Keeping Pulse and adding Requizon#

Both register global middleware on Laravel's HTTP client factory and neither changes the request, so they run together without any configuration. Keep Pulse as the overview of the application, and look at Requizon when the question is whether a particular API is failing and since when.

Questions people ask about the two

Does Laravel Pulse track failed outgoing requests?

No. The SlowOutgoingRequests recorder records a call only when its duration is over the configured threshold, 1,000 ms by default, and it stores the count and the slowest duration for each method and URL. It does not record the status code, so a slow 500 and a slow 200 look the same, and a failure faster than the threshold is not recorded at all.

How does Pulse group outgoing requests?

By method and full URL by default. The recorder's groups option takes regular expressions that rewrite the URL before it is stored, so you can replace IDs with a wildcard or collapse a whole domain into one entry. Requizon replaces numeric, UUID, ULID and hex path segments with :id without configuration, and groups hosts into named APIs.

Can I use Requizon and Pulse at the same time?

Yes. Both register global middleware on Laravel's HTTP client factory and neither alters the request or the response. Pulse keeps giving you slow queries, slow jobs, exceptions and server usage on one screen, and Requizon adds the failure detail for outgoing calls.

How long does Pulse keep its data?

Seven days by default (PULSE_STORAGE_KEEP), which matches its longest dashboard period. Requizon keeps individual calls for 14 days and hourly aggregates for 365, both configurable.

Does Pulse record Guzzle requests?

Only those made through Laravel's HTTP client, which is where its recorder installs its middleware. A community package adds a recorder for raw Guzzle clients. Requizon ships a Guzzle middleware you push onto an SDK's own handler stack.

Keep what you have. Add the outbound view.

Requizon installs beside Laravel Pulse, changes nothing about it, and records from the next request. The installation guide is public, so you can read it first.