API AnalyticsRequests · Bodies · Headers · Customers

Know Exactly Why Your APIs Are Slow, Failing, or Costing You Customers

Atatus API Analytics records every request with its headers, bodies and caller, links it to the APM transaction behind it, and shows which endpoint, customer or country is slow or failing.

3Capture points: agent, Kong, OpenResty
10Dimensions to group traffic by
p95Latency alerts per endpoint
API analyticsrequests
Api Analytics
01 / Every request

Open any call. See what was sent.

Request and response bodies, headers and who made the call.

Click an endpoint · sample data

502POST /v1/orders1,240 ms
User
u_8812 · acme-corp
Country
Germany
Browser
Chrome 141
Direction
Incoming
{
  "error": "payment_unavailable",
  "retry_after": 30
}
02 / Who calls

Know who uses your API.

Group traffic by customer, path, country or IP. Read any minute to see who sent it and how it went.

Requests per minute · group by

Move across the chart or use the arrow keys · sample data

14:046,866 rpm

Click a row to pin its band

03 / What gets captured

Bodies when you need them. Noise left out.

Choose when request and response bodies are kept, and skip the requests you never want to see.

Agent config
capture_body

Bodies only on requests that failed.

Skip rules · setAnalyticsSkip
# Java agent
-Datatus.analytics=true
-Datatus.capture_body=errors

// Node.js agent
atatus.setAnalyticsSkip((event) => {
  if (event.name === 'GET /health' ||
      event.name === 'POST /cron/report') return true;
  if (event.responseHeaders['content-type']
      .includes('text/html')) return true;
  return false;
});

Sensitive fields can be masked in the same way with setAnalyticsMask.

Sent to Atatus5 of 8 requests · 2 with bodies
  1. POST/v1/orders201
    headers only · application/json
  2. GET/health200skipped · not sent
  3. POST/v1/auth/token401
    { "error": "invalid_grant" }error event has the body
  4. GET/v1/products/219200
    headers only · application/json
  5. GET/docs200skipped · not sent
  6. POST/v1/orders502
    { "error": "payment_unavailable" }error event has the body
  7. POST/cron/report200skipped · not sent
  8. GET/v1/cart200
    headers only · application/json

Sample requests

04 / Setup

In your service. Or at the gateway.

Capturewhere requests are recorded
APM agent config
analytics=true
logBody=true

Basic API analytics is on by default. These two enable full capture.

05 / In the product

API Analytics, screen by screen.

Real screens from the Atatus app.

API AnalyticsRequests and failures
API Analytics: Requests and failures
FAQ

Questions engineers ask about API analytics

Pricing, deployment, data and the agent. If something is missing, a person will answer it on a demo call.

Talk to an engineer
  • API monitoring tells you whether an endpoint is up and fast. API analytics records every request so you can see why it is slow, which endpoints fail most, which customers, countries and IPs call them, and what the request and response looked like. Atatus does both: analytics alerts watch throughput, latency percentiles and 4xx or 5xx counts per endpoint, and the request view lets you open any single call.

  • API analytics comes with the Atatus APM agents for Node.js, Python, Java, PHP, Ruby and Go. Basic analytics is on by default, and setting analytics=true and logBody=true turns on full capture with request and response bodies. If you would rather capture at the edge, use the Atatus plugin for Kong Gateway or the Lua hooks for OpenResty.

  • Yes. Analytics alerts evaluate throughput, average, p75, p90 and p95 response time, and 4xx and 5xx failure counts. Group a rule by endpoint path, HTTP method, service or status code category, and every group that crosses the threshold opens its own incident, so one slow endpoint does not hide behind the average.

  • Every API request is linked to the APM transaction behind it. Open a slow or failed call to see its headers and bodies, then jump to its trace, where the time is split across application code, database queries and external calls. You see which span added the latency instead of searching logs for it.

  • Yes. Use setAnalyticsMask to change or remove headers, body fields or query parameters before they leave your server, for example to mask a password or a token. Use setAnalyticsSkip to drop requests you never want to see, such as health checks or HTML pages. In the Java agent, capture_body sets when bodies are kept: off, errors, transactions or all.

  • Yes. Atatus offers an on-premises setup for teams with strict data sovereignty, compliance or security requirements, so request and response data stays in your private network. You receive a Docker-based deployment package and point your Atatus agents at your own server.

  • If you already run an Atatus APM agent, basic API analytics is on by default. For full capture, set analytics=true and logBody=true in the agent configuration and restart your application. At the gateway, install the Atatus plugin for Kong or add the two OpenResty hooks. Requests then appear with their endpoint, status, duration and caller.

Get started

Know every API call. Fix the slow ones.

See who calls your APIs, which endpoints fail and how long each request takes, in your service or at the gateway.

  • SaaS
  • On-premises
  • Hybrid
  • BYOC
  • No per-user pricing

Compare Atatus with Datadog · Traceable