Every request. Every payload. Searchable in seconds.
Stop reconstructing incidents from log lines. One line in your Node app - or a proxy URL for any other stack - keeps the whole transaction: headers, query, request and response bodies, timing and outcome, inbound and outbound, searchable with filters anyone can read.
What you get on day one
One npm install. No dashboards to build, no query language to learn, no sampling rules to tune.
Criteria search
Filter on method, path, status, duration, consumer, header, your own tags or any field inside a body. Combine with && and ||, save it, share it.
Saved views
A saved filter becomes a view your team can open during a release - “payments 5xx”, “partner API only”, “anything over 1 second”.
Endpoint normalisation
Our extractor collapses identifiers out of paths automatically, so /users/8f21a/orders/912 groups with every other request to that route.
tag(), trace() and span()
Attach an account id to a request with tag(), leave a production breadcrumb with trace() instead of console.log, and time your own code with span() - all from the same SDK import.
Event markers
Deploys, incidents and config changes land on the same charts as your traffic - from the app, the API, your CI job or a linked Git repository.
Redactions & exclusions
Credential headers and secret-looking keys are masked from the first request. Add your own redaction rules, and drop routes you never want recorded.
Shares & collections
Group related requests into a collection for a bug report, then share a signed, expiring link - the recipient needs no account.
Git integrations
Connect GitHub, GitLab or Bitbucket so a spike in errors has a commit and an author next to it.
Everything via API
The same REST API the dashboard uses is public and documented - requests, metrics, spans, events, redactions, reports and more.
Resend a request
Edit the headers or body of any captured request and send it again to check a fix - the result lands in the log next to the original.
Reports & dashboards
Summarize traffic by any field or tag you send, pin reports to dashboards your team shares, and embed them in your own tools.
Environments & buckets
Separate production from staging, and one service from another, each with its own settings, rules and firewall policies.
The whole transaction, on one screen
Open a request and you see what you received, what you returned, every query and downstream call it made, and whether the firewall had an opinion. Then resend it, share it, or hand it to your AI agent.
- Request & response bodies, with redacted fields clearly marked
- Span waterfall down to the SQL statement and the line of code that ran it
- Find similar requests in one click, and see related calls in the same trace
- Fix with AI on every failed request
Endpoints, not forty thousand URLs
ApiTraffic groups /v1/orders/ord_8f21a and every request like it under /v1/orders/{order_id} automatically, so traffic, latency and errors add up per route - and every alert, drift baseline and report works per endpoint, too.
- Learned from your traffic, with rules to adjust it when you need to
- Inbound and outbound: the APIs you call are endpoints too
Why did this one fail when that one worked?
Pick any two requests from the same bucket and ApiTraffic puts them side by side: the overview, every header matched by name, and the bodies as a line-by-line diff with the changed part of each line highlighted. The one field that differs stops hiding in a wall of JSON.
- Changed, only in A, only in B - marked on every header
- Only show differences folds away everything identical
- Sort JSON keys so key order alone never counts as a change
Check the fix against the exact request that failed
Open any captured request in the editor, change the method, URL, query, headers or body, and send it again. ApiTraffic sends it, shows you the response, and logs the new attempt as a request of its own - linked back to the original.
- JSON, form and multipart bodies edited in place
- Resent requests in the log, next to the one they came from
- Or let your assistant do it: the MCP
replay_requesttool prepares a replay
Turn a bad afternoon into a bug report
Gather the requests that tell the story into a named collection - the failures from an incident, the examples a partner should look at, the calls that reproduce a bug - so nobody has to search for them again. Then share one request or the whole collection with a public, read-only link.
- Collections your whole team sees, per bucket
- Share links that need no account, expire when you choose and can be revoked
- Redaction applies to everything a link shows
Answer the questions your dashboards never planned for
Group traffic by endpoint, status, country, customer or any tag you send with tag(), measure volume, errors and latency, and compare with an earlier period. Save it, share it, and pin it to a dashboard that filters every tile at once - say, one customer’s week.
- Request reports and span reports - slowest queries, time spent per vendor, N+1s
- Templates for top customers, error hot spots and more
- From the API and MCP too: run a saved report from a script or your assistant
Put your API traffic inside your own product
Give customers, partners or your support team a live view of their own API usage without building it. Every embed is locked down by a short-lived token your server signs, so each viewer sees only what you allow.
Embedded request log
A fully styled, live request log as a Web Component - vanilla JavaScript or React, themed to match your app, no iframe. The token decides which requests it shows and which detail tabs exist at all.
Embed the request log →Embedded reports & dashboards
Show each customer their own usage, errors and latency: a saved report or a whole dashboard, filtered to that customer by the token you sign. Sized to its content and isolated from your page.
Embed reports and dashboards →Public share links
A read-only page for one request or a whole collection, for a partner or a support ticket. Nobody needs an account; you choose the expiry and can revoke it any time.
Share requests and collections →Why not just search your logs?
Because log lines are a summary someone wrote before they knew what would break.
| Question you actually ask | Log search | Gateway analytics | ApiTraffic |
|---|---|---|---|
| “What body did we send upstream?” | Only if logged | No | Captured in full |
| “Which query made this slow?” | No | No | Span waterfall |
| “Group this by endpoint, not URL” | Manual regex | Partial | Automatic |
| “Show me this one customer’s request” | If you have the ID | Aggregate only | One click |
| “Block that payload pattern” | No | Edge only | Firewall middleware |
| “Did this deploy break the API?” | No | No | Drift detection + regressions |
| “Tell me before customers notice” | Alert on a query you wrote | Basic thresholds | Incidents vs. each endpoint’s normal |
| “Let my AI agent investigate” | No | No | MCP server + Fix with AI |
Everything the dashboard does, your scripts can do too
Query traffic from a CI job, assert on it in an integration test, or build the internal dashboard your support team keeps asking for.
curl -G "https://api.apitraffic.io/v1/accounts/$ACCOUNT/buckets/$BUCKET/requests" \
-H "Authorization: Bearer $TOKEN" \
--data-urlencode 'criteria=status_code >= 500 AND url_path like "/v1/payments/*"'See your own traffic in the next five minutes.
npm i the SDK into a staging service and watch requests land. Free trial, no credit card.
Free trial · No credit card · Set up in minutes