Integrations

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.

The whole integration

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.

$ npm i @apitraffic/node
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);
Order is the whole integration. After express.json(), before your routes.

Node 20+. Types included, no @types package. Read the middleware source →

Everything about Express →

  • 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
Proxy URL & captures

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=open
The URL Helper: your call's URL, with only the hostname changed.
Webhooks sent to a capture URL, each with its headers and payload.

The proxy sees the calls routed through it. Outbound calls, APM spans, tags and the in-app firewall need an SDK. How the proxy works

Downstream

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

The request log: inbound calls to your API and the outbound calls it makes, in one place.

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