At a glance
This card plots how many requests per second PostgREST is serving over time. PostgREST is the auto-generated REST layer that fronts your Supabase database, so this is the throughput of the API your application actually calls. It is the load axis for every latency and error card in the connector: a latency spike means something very different depending on whether request rate spiked with it. For a platform or SRE team this line chart is the context everything else is read against. It tells you when your busy windows are, whether a slowdown is “more traffic” or “a regression”, and when capacity planning is overdue. It carries no fixed alert by design, throughput is neither good nor bad in isolation; it is the denominator that makes the other cards interpretable.
Calculation
The card counts PostgREST requests per fixed interval and divides by the interval length to produce a rate:- It is the denominator for everything else. A rise in p95 latency with a matching rise in request rate is a capacity story (more load, slower responses). The same latency rise with a flat request rate is a regression story (the same load got slower, so something changed). You cannot tell the two apart without this card, which is why it sits in the same category as the latency gauges.
- Shape matters more than the absolute number. What is “normal” varies hugely by project. The value of the time series is its pattern: the daily peaks and troughs, the weekly rhythm, the step changes after a launch. A sudden cliff to near zero (an outage or a broken deploy) and a sudden vertical wall (a traffic surge, a runaway client, a retry storm) are both far more informative than any single instantaneous reading.
Worked example
A platform team runs a Supabase project behind a consumer mobile app. PostgREST request rate normally peaks around 180 req/sec in the evening. Snapshot taken on 02 May 26 over an afternoon when on-call noticed the rate climbing oddly.
The request-rate line shows a steep, sustained climb to roughly 10x baseline, well outside the normal daily peak. There is no alert on this card, but the shape is the lead signal. The team reads it together with the gauges:
- The load is real and abnormal. 980 req/sec at 15:10 is more than five times the usual evening peak, in the early afternoon. This is not a normal busy window; something is driving traffic far above pattern.
- Latency and errors are now following the load. p95 has climbed from 72ms to 240ms and the 5xx rate has crossed 1%. Cross-referencing Supavisor Pool Saturation %, the pool is at 94%: the surge is exhausting connections, which is why latency and errors are rising together. This is a capacity story, not a code regression.
- The cause is a client retry storm. The shape (a vertical wall rather than organic growth) plus the early-afternoon timing points at a misbehaving client. A recent mobile release shipped an aggressive retry loop that re-fires failed requests without backoff, so as latency rose the clients retried harder, driving the rate up further, the classic self-reinforcing storm.
- Request rate is the lens, not the verdict. It has no alert because throughput alone is neither good nor bad. Its job is to tell you which story a latency or error spike belongs to: more load, or the same load gone wrong.
- Watch the shape. Organic growth ramps; a retry storm or runaway client makes a near-vertical wall; an outage makes a cliff. The shape of the line usually names the cause before any other card does.
- A flat request rate during a latency spike is a smoking gun. It means traffic did not change but responses got slower, so the cause is inside your system (a slow query, a missing index, a pool problem), not your users.
Sibling cards
Reconciling against the source
Where to look in Supabase’s own tooling:In the Supabase dashboard, open Reports → API for the request-count and request-rate charts PostgREST records per route. The dashboard throughput chart and this card draw from the same request-log stream. Count requests yourself in the project’s log explorer: theWhy our number may legitimately differ from Supabase’s own view:api_logs/ edge request logs hold one row per request, so a count over a fixed window divided by the window length reproduces the rate. To see how API throughput translates into database work, compare against Database Queries per Second (live) andpg_stat_statementscalls; a single PostgREST request can fan out into several queries. The managed-service console exposes equivalent request-rate charts under the project’s observability section; confirm the chart’s interval matches the card’s before comparing instantaneous values.