Find slow API routes by customer and plan

Rank API endpoints by p95 latency, error rate, customer, and plan so engineering can fix performance where it affects revenue.

Published

difficulty intermediate · time to value 5 minutes

Start from this

Show p95 and p99 API latency by route for the last 24 hours, segmented by customer_id and plan. Rank the routes hurting paid customers first.

Why this matters

Average latency hides pain. One route can be fine for free users and brutal for enterprise accounts with larger payloads. This playbook tells engineering where performance work maps to customer value.

What you get

  • p50, p95, and p99 latency by route
  • Error rate and request volume beside latency
  • Segments by customer and plan
  • A ranked fix list weighted toward paid usage

Walk through it

You

Show slow API routes for paid customers.

Agent

I’ll verify the api_request shape and rank routes by p95 latency for paid plans.

Endpoint: GET /v1/projects/:project_id/event-property-keys
Exact shape: /v1/openapi.json?path=%2Fv1%2Fprojects%2F%7Bproject_id%7D%2Fevent-property-keys&method=get
Use query parameters, not a JSON body.
Query/filter concept:
  events: ["api_request"]
Endpoint: POST /v1/projects/:project_id/analytics/query
Exact shape: /v1/openapi.json?path=%2Fv1%2Fprojects%2F%7Bproject_id%7D%2Fanalytics%2Fquery&method=post
Custom HogQL goes in the OpenAPI-defined `query` field.
Concept fields:
  query: "SELECT properties.route AS route, properties.plan AS plan, count() AS requests, quantile(0.95)(toFloat(properties.duration_ms)) AS p95_ms, quantile(0.99)(toFloat(properties.duration_ms)) AS p99_ms, avg(toInt(properties.status) >= 500) AS error_rate FROM events WHERE event = 'api_request' AND timestamp > now() - INTERVAL 24 HOUR GROUP BY route, plan ORDER BY p95_ms DESC LIMIT 30"

The output

The agent returns a table of routes with p95/p99, request volume, error rate, and which customers are affected. It should avoid recommending a route with 3 requests over one with 30,000 unless the affected customer is high value.

Setting it up

Emit one api_request event from middleware. Keep route templates stable (/v1/users/:id, not raw IDs) so aggregation works.

Variations

  • “Only show enterprise customers.”
  • “Compare p95 this week vs last week.”
  • “Find routes where retries increased after the last deploy.”

Adapt this playbook in your own agent.

Ask your agent to map the starter prompt to your saved signal map, live events, and the current HTTP API before answering.

Set up Agentry in this repo by following https://agentry.sh/install.md. I authorize you to: run its device-code login and save the key to ~/.agentry/credentials.json, read this repo, propose an instrumentation plan for my approval, and edit code after I approve it.

+ Full access
5.5 Extra High
  1. 1. Open your repo in Codex, Claude Code, Cursor etc.
  2. 2. Paste the install prompt.
  3. 3. Your agent reads the install doc and shows you an implementation plan for approval.