Know what your API did.
Before your customers tell you.
ApiTraffic records every request your API handles - the payload, the queries behind it and the firewall’s verdict - then tells you the moment an endpoint breaks, drifts or slows down after a deploy. One npm install. No agents, no sidecars.
- Free trial
- No credit card
- Live in minutes
- Alerts on every plan
Everything you need to run an API. One install.
Logging, performance, alerting, drift detection and a firewall usually mean four tools, four bills and four places to look. ApiTraffic is one record per request, and every feature reads it.
Request logging & search
Every request and response - headers, bodies, timing, status - inbound and outbound, searchable with filters anyone can read, grouped by endpoint.
Performance monitoring
Every database query, cache call and outbound request, tied to the handler and line of code that ran it. N+1 queries flagged for you.
Alerts & incidents
Each endpoint is judged against its own normal. A real regression opens one incident and notifies Slack, email, PagerDuty, Jira or a webhook.
API drift detection
Learns what every endpoint normally sends and returns, then flags removed fields, changed types and new behavior before consumers notice.
Release markers
Deploys, incidents and config changes drawn on every chart - sent from CI, the API, your AI assistant, or GitHub, GitLab and Bitbucket.
Regression tracking
Pick a deploy and see which queries and endpoints got slower after it - p95 before and after, ranked by impact on real traffic.
Web application firewall
OWASP managed rules, rate limits, IP and country lists and behavioral protection, running inside your app. Monitor first, enforce when ready.
Proxy URL & captures
No SDK for your stack? Swap a hostname and capture traffic from any language. Point a webhook at a capture URL to see exactly what arrives.
Compare requests
Put any two requests side by side - the one that worked and the one that failed - and see every header and body line that differs.
Resend requests
Open a captured request in the editor, change the method, URL, headers or body, send it again and see the new attempt next to the original.
Collections & share links
Gather the requests that tell the story into a collection, then share one request or the whole set with a public link that expires.
Reports & dashboards
Break traffic down by endpoint, customer or any tag, compare with an earlier period, and pin reports to dashboards your team shares.
Embeds
Put a live request log, a report or a whole dashboard inside your own app - each customer sees only their own traffic.
Fix with AI
Turn a failed request into a paste-ready prompt for Cursor, Claude Code or Copilot - with the evidence and the deploy that likely caused it.
MCP server
Connect Claude, Cursor or VS Code with one URL and let your assistant search traffic, diagnose endpoints and check a release for you.
Redaction & privacy
Credential headers and secret-looking keys are masked from the first request. Add your own rules in your app or before storage, and drop routes you never want kept.
Every request. Every payload. Every query.
Open any request and see exactly what came in, what went out, and where the time went - down to the SQL statement and the line of code that ran it. No log line to reconstruct, no sampling that dropped the one you need.
- Search by anything - endpoint, status, duration, header, tag or a field in the body
- Endpoints, not URLs: /orders/ord_8f21a groups as /orders/{order_id}
- Resend a request, share a link, or gather a collection for the bug report
Catch it before customers do
ApiTraffic learns what normal looks like for every endpoint, watches every deploy, and tells you when something changes - with the evidence attached.
One incident per problem, sent to the right people
Every endpoint is compared with its own normal - last hour and the same hour last week - so a busy endpoint that always throws a few errors does not page you, and a real regression does within about ten minutes.
- Three tests at once: a multiple of normal, big in real terms, and statistically real
- Slack, email, PagerDuty, Jira and webhooks, with routing and silences
- Related alerts grouped into one incident with a timeline of who was told and why
A p95 chart says it is slow. We show you which query.
Every database query, cache call, queue publish and outbound request is captured with the request that caused it, then ranked across your whole service by the time it costs you.
- N+1 queries flagged automatically, with the file and line
- Postgres, MySQL, MongoDB, Redis, Kafka, RabbitMQ and outbound HTTP out of the box
- Ask AI turns a slow waterfall into a prompt for your coding agent
Over half of web traffic is bots. Stop the bad ones in your app.
The ApiTraffic WAF runs as middleware, so it inspects the parsed request your handler is about to see - and every verdict lands on the same record as the trace. Run it in monitor mode, see exactly what it would have blocked, then enforce. Source: Imperva 2026 Bad Bot Report
- OWASP managed rules for SQL injection, XSS, RCE, SSRF and more
- Rate limits, IP and country lists, and behavioral protection against scraping and probing
- Explainable blocks: the rule, the field, the score and the policy on every request
Not on Node? Change one hostname.
Generate a proxy URL for your bucket and send any API call through it - from Python, Go, Ruby, PHP, a mobile app or Postman. ApiTraffic forwards it, records it and gives you the same request log, search and alerts. No SDK, no code change beyond the URL.
- Proxy URL: the same URL with only the hostname changed, per bucket and environment
- Capture URL: point a webhook at it and read exactly what a third party sends you
- Same record, same search as SDK traffic, in its own Captures view
From a failed request to a fix, in one paste
Fix with AI turns any failed request into a grounded prompt for Cursor, Claude Code or Copilot - the endpoint, the error, the example requests and the deploy most likely to blame. And with the MCP server, your assistant can search traffic and check a release on its own.
- Fix with AI on every failed request, Ask AI on every waterfall
- MCP server for Claude, Cursor, VS Code and Windsurf - connect with one URL
- Redaction still applies to everything an assistant sees
Every screenshot on this page is the real ApiTraffic app, showing the sample API every new account can explore.
From one bad request to the whole story
Compare two requests, replay one with a fix, collect the evidence, report on it and share it - with your team, or embedded right inside your own product.
Why did this one fail when that one worked?
Put any two requests side by side and see every header and body line that differs, with the changed part highlighted - so the one field that broke a call stops hiding in a wall of JSON.
About comparing requests →Live in minutes, not a sprint
No agent to deploy, no collector to run, no dashboards to build. Install it, ship, and let the traffic tell you.
Install the SDK
npm i @apitraffic/node and one line in your app - or swap a hostname for the proxy URL if your stack is not Node.
Ship as usual
Requests, queries, outbound calls and firewall verdicts stream in. Every endpoint starts learning its own normal.
Hear about problems first
Incidents, drift and post-deploy regressions reach Slack, email or PagerDuty - with the evidence, and a prompt your AI agent can act on.
const express = require('express');
const apitraffic = require('@apitraffic/node');
const app = express();
app.use(express.json()); // parse first - verdicts read parsed bodies
app.use(apitraffic.express({
token: process.env.API_TRAFFIC_TOKEN,
bucket: process.env.API_TRAFFIC_BUCKET,
}));
app.get('/users/:id', (req, res) => {
res.json({ id: req.params.id });
});
app.listen(3000);express.json(), before your routes.Node 20+. Types included, no @types package. Read the middleware source →
Simple, published pricing
Every plan, what it includes and what it costs past the allowance - read live from our billing system, so this is the number checkout charges. Start with a free trial, no credit card.
Solo
Retention: 30 days of request history
Usage & limits
- 1M requests · Captured requests (then $0.08 per 1,000 requests)
- 5 buckets · Buckets
- 2 environments · Environments
- 1 seat · Team members
- Unlimited · API tokens
Logging & search
- 30 days · Retention window
- Collections
- Custom reports
- 5 keys · Promoted tag keys
- Unlimited · Exclusion rules
- Unlimited · Custom redaction rules
APM & performance
- Span analytics
- APM
- Deploy & incident markers
- 10 rules · Endpoint rules
Host telemetry
- Host telemetry
- Unlimited · Reporting servers
- Unlimited · Host samples
Firewall
- Web application firewall
- 2 policies · WAF policies per account
Embeds & sharing
- 10 reports and dashboards · Embedded reports and dashboards
- Share links
AI & MCP
- MCP server
- MCP request replay
Alerts & drift
- Alerting
- 1 channel · Alert channels
- Certificate monitoring
- Outbound destination watch
Integrations
- Git integration
- 1 repository · Linked repositories
Team
Retention: 180 days of request history
Usage & limits
- 5M requests · Captured requests (then $0.05 per 1,000 requests)
- 20 buckets · Buckets
- 5 environments · Environments
- 20 seats · Team members
- Unlimited · API tokens
Logging & search
- 180 days · Retention window
- Collections
- Custom reports
- 20 keys · Promoted tag keys
- Unlimited · Exclusion rules
- Unlimited · Custom redaction rules
APM & performance
- Span analytics
- APM
- Deploy & incident markers
- 50 rules · Endpoint rules
Host telemetry
- Host telemetry
- Unlimited · Reporting servers
- Unlimited · Host samples
Firewall
- Web application firewall
- 10 policies · WAF policies per account
Embeds & sharing
- Embeds
- Unlimited · Embedded reports and dashboards
- Share links
AI & MCP
- MCP server
- MCP request replay
Alerts & drift
- Alerting
- Unlimited · Alert channels
- API drift detection
- Attention signals
- Certificate monitoring
- Outbound destination watch
Integrations
- Git integration
- 5 repositories · Linked repositories
Business
Retention: 365 days of request history
Usage & limits
- 25M requests · Captured requests (then $0.03 per 1,000 requests)
- 100 buckets · Buckets
- 20 environments · Environments
- Unlimited · Team members
- Unlimited · API tokens
Logging & search
- 365 days · Retention window
- Collections
- Custom reports
- 50 keys · Promoted tag keys
- Unlimited · Exclusion rules
- Unlimited · Custom redaction rules
APM & performance
- Span analytics
- APM
- Deploy & incident markers
- Unlimited · Endpoint rules
Host telemetry
- Host telemetry
- Unlimited · Reporting servers
- Unlimited · Host samples
Firewall
- Web application firewall
- Unlimited · WAF policies per account
Embeds & sharing
- Embeds
- Unlimited · Embedded reports and dashboards
- Share links
AI & MCP
- MCP server
- MCP request replay
Alerts & drift
- Alerting
- Unlimited · Alert channels
- API drift detection
- Attention signals
- Certificate monitoring
- Outbound destination watch
Integrations
- Git integration
- Unlimited · Linked repositories
Every plan starts with a 7-day free trial - no credit card to begin, and nothing is charged unless you choose a plan.
Prices in the currency shown, excluding tax. Overage is billed per unit and rounded to the cent on the invoice.
The questions we actually get
Cloudflare decides whether a request gets in. We record what happened after it did.
Those are different jobs, and the gap between them is where most API incidents live. Your edge sees strangers - unknown IPs, bad signatures, known-bad patterns - and it’s good at that. What it can’t see is a legitimate, authenticated key behaving unlike itself: enumerating IDs one at a time, pulling fifty times its normal volume on a Sunday, or walking endpoints it has never touched before. That traffic passes every edge check, because it’s a customer.
Keep Cloudflare. We’re the layer inside your app where the caller has a name, a history, and a bill.
Datadog is a much broader product. If you need to monitor a Kafka cluster, build custom dashboards for forty services, and correlate across your whole estate, use Datadog - we’re not that, and we’re not trying to be.
We answer one question well: who called your API, and what happened. Because logging, timing, and screening run in one middleware, you get one record per request with the trace and the security verdict already on it. Nothing to correlate by request ID across three products and three clocks at 2am.
The other difference is structural. There’s no host agent to deploy, so there’s no per-host meter and no bill that grows every time you add a container.
What we don’t do: infrastructure monitoring, RUM, log ingestion from things that aren’t your API, or 800 integrations.
Fair question, and the right one to ask about middleware in a single-threaded runtime.
Nothing that matters runs on your request path. We capture metadata in-process, hand it to a buffer, and ship batches asynchronously off the event loop. No network call, no serialisation of large payloads, and no synchronous work between your handler and the response.
Don’t take our word for it: the middleware is public on GitHub, so you can read exactly what runs on your request path - and measure it against your own service on staging before it goes anywhere near production.
No. The middleware fails open.
If our collector is unreachable, requests complete exactly as they would without us. Telemetry queues into a bounded in-memory buffer and is dropped once that buffer is full - it never grows without limit, and it never blocks a response. You lose visibility for the duration of the outage. You don’t lose traffic.
Enforcement is a separate question, and the answer is better than fail-open usually implies. Verdicts are evaluated in your process against the policy you last synced, not by calling us - so a rule that was live when the connection dropped is still live now. During an outage you stop receiving policy changes; you do not stop being protected. The kill switch works the same way: API_TRAFFIC_WAF_ENABLED=false takes effect without a deploy and without reaching us, which is the case that matters when we are the problem.
Yes, through the proxy URL - and the SDKs are Node because that is where we can go deepest.
For any other stack, generate a proxy URL for your bucket: the same URL as your API call with only the hostname changed. Calls sent through it land in your request log, searchable, grouped by endpoint and watched by alerting, from any language and with no code to install.
The SDKs add what only an in-process middleware can see: your route definitions (/users/:id as one endpoint instead of forty thousand paths), the outbound calls your app makes, the queries behind each request, and a firewall that inspects the parsed request. That is why the first-party SDKs are for Node frameworks.
You decide what is kept, and the secrets are masked before you configure anything.
From the very first request, credential headers - Authorization, cookies, API key and CSRF headers - and secret-looking keys in bodies and query strings are masked inside your process, before anything is sent.
On top of that, redaction rules mask your own fields, either in your app so the value never leaves your server or on our side just before storage. Exclusion rules keep a route out entirely, or log its requests without their bodies. Everything you see afterwards - the request log, share links, embeds, the API and the MCP server - sees only the redacted value.
Keep them. Application logs are what your code chose to say. We record what actually crossed the wire.
The difference shows up on the requests you didn’t write a log line for: the ones that 404’d before reaching a handler, the ones that failed auth, the ones hitting a route someone shipped last quarter and forgot. Those don’t appear in your app logs precisely because your code never ran - and they’re disproportionately the ones worth looking at.
There’s also no correlation step. The timing and the verdict are already on the record; you’re not grepping a log drain and joining it to something else by hand.
The middleware is public on GitHub if you’d rather read it than take our word for what it does on the request path.
ApiTraffic tells you - alerts are on every plan.
Every endpoint is compared with its own normal, and a change has to be a multiple of normal, big in real terms and statistically real before anyone is told. Related alerts become one incident, sent to Slack, email, PagerDuty, Jira or a webhook following your routing. Drift detection adds breaking API changes, and deploy markers let you see which release changed what. How alerting works
Refer a team. Get tracking for free.
Every ApiTraffic account has its own referral link. Share it with a team that ships APIs, and when they join you can both earn rewards - extra captured requests, longer retention or features from a bigger plan - added to your account automatically.
Rewards depend on the promotion running when your referral signs up, last for a set time, and only ever add to your plan. How referrals work
- 1Grab your linkIt is waiting under Account → Referrals the moment your trial starts.
- 2Share itSend it to a friend, or use the ready-made posts to share it with your network.
- 3Earn rewardsWhen they join, rewards land on your account on their own. No coupons, no forms.
Know what your API did - before your customers tell you.
One npm install and one line of code. Your first requests arrive in minutes, with their queries, their firewall verdict and a baseline for every endpoint already building.
Free trial · No credit card · Set up in minutes
Primary call to action: Start your free trial