One package. Three lines. Done.
First-party SDKs for the Node.js frameworks your services already run on - Node 20+, TypeScript declarations included - plus a proxy URL for any other language, an OpenTelemetry bridge for APM, and alerts that reach Slack, PagerDuty and Jira.
Copy, paste, deploy
Request capture, APM and the firewall all come from the same SDK. There is no separate agent to run and no collector to babysit.
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 →
- Asynchronous batched delivery - nothing blocks your handler
- Outbound HTTP captured too, including fetch and undici
- Fails open: if ApiTraffic is unreachable, your API carries on
- Credential headers and secret-looking keys masked before anything is sent
- tag(), trace() and span() from the same import
Not on Node? Change one hostname.
For any stack without an SDK, generate a proxy URL for your bucket: the same URL as your API call with only the hostname changed. Calls sent to it pass through ApiTraffic and land in your request log - searchable, grouped by endpoint and watched for incidents - from any language, with no code to install.
- Generate it in the app: paste a URL into the URL Helper and copy the result
- Capture URLs record a request and answer it themselves - perfect for reading webhook payloads
- Captures stay separate from your app’s traffic, under Workspace → Captures
# Your API call today
https://api.example.com/v1/orders?status=open
# The same call through ApiTraffic: only the hostname changes
https://api-example-com-<bucket><environment>.apitraffic.io/v1/orders?status=openThe proxy sees the calls routed through it. Outbound calls, APM spans, tags and the in-app firewall need an SDK. How the proxy works
Where your traffic data goes next
ApiTraffic fits into the tools your team already runs.
Slack, PagerDuty & Jira
Incidents go to the channel, rotation or board that owns them, with routing and escalation
Email & webhooks
Alerts by email, or signed webhooks into your own incident tooling
GitHub, GitLab & Bitbucket
Deploys, tags and releases become markers, and failures link to the commit
OpenTelemetry
Add our span processor to the provider you already run, or use the bundled setup
Claude, Cursor & VS Code
The MCP server puts your traffic in front of your AI assistant
REST API & embeds
Everything the dashboard does, from your scripts - and reports embedded in your own tools
Pick your framework and go.
Install takes one command - or one hostname. The free trial needs no credit card.
Free trial · No credit card · Set up in minutes
Express
Hapi