API Response Time: Standards, Benchmarks and What Is Good
July 2026 · Uptimehub
Checked from regions with auto-retry. No single-location false alarms.
All systems operational. Steady pulse across every region.
api.example.com returned no response from all 6 regions. Auto-retry confirmed the outage, then we alerted your team.
api.example.com is back up. The incident is logged to your status page history automatically.
90-day uptime · branded · your domain
Live demo · drive it, no signup needed
A good API response time is under 300 milliseconds for a user-facing request, under 100 milliseconds for an internal service-to-service call, and under 1 second for anything a person is actively waiting on. There is no formal industry standard, so the working benchmark most teams use comes from Jakob Nielsen's response time limits: 0.1 seconds feels instant, 1 second keeps a user's train of thought, and 10 seconds is the limit before attention is lost. Measure your API at the 95th and 99th percentile rather than the average, because the average hides exactly the requests your customers complain about.
Response time is the metric teams argue about most and define least. Two engineers can quote wildly different numbers for the same endpoint because one is measuring time to first byte from inside the data center and the other is measuring the full round trip from a laptop on hotel wifi. Before you set a threshold, agree on what you are timing and from where. What follows is the set of benchmarks, definitions and measurement rules that hold up in practice.
What is a good API response time?
A good API response time depends on who is waiting. For an endpoint that renders something on a screen, aim for under 300 milliseconds at the 95th percentile, which feels immediate once you add network latency and rendering on the client. For internal service-to-service calls, aim for under 100 milliseconds, because those calls stack: five sequential internal hops at 100 milliseconds each is half a second before your own API has done any work. For a report, an export or a heavy search, up to a few seconds is acceptable if you show progress, and beyond about 10 seconds you should return a job ID and let the client poll.
| API type | Target (p95) | Acceptable ceiling | What breaks past it |
|---|---|---|---|
| Internal service-to-service | Under 100 ms | 250 ms | Latency compounds across every downstream hop |
| User-facing read (list, detail, autocomplete) | Under 300 ms | 800 ms | The interface feels laggy and users retry, doubling load |
| User-facing write (create, update, checkout) | Under 500 ms | 1.5 s | Duplicate submissions and abandoned forms |
| Search and filtered queries | Under 500 ms | 2 s | Users refine before the first result lands |
| Third-party integrations calling you | Under 1 s | Their timeout, usually 5 to 30 s | Their client retries, or marks you down |
| Reports, exports, bulk operations | Under 3 s | 10 s, then move to async | Gateway and load balancer timeouts fire first |
| Webhook delivery endpoints | Under 200 ms to acknowledge | Sender timeout, often 3 to 10 s | The sender retries or disables your endpoint |
Those are working targets, not a law. The honest way to use them is as a starting point you then replace with your own measured baseline, because an endpoint that has always taken 700 milliseconds and has never generated a complaint does not need a rewrite, it needs an alert threshold set slightly above where it normally sits.
What is the industry standard for API response time?
There is no official standard body number for API response time. The closest thing to a reference point is the human perception research Jakob Nielsen published on response time limits, which has held up for decades: about 0.1 seconds feels like a direct manipulation with no delay, about 1 second keeps the user's flow of thought unbroken though they notice the wait, and about 10 seconds is the outer limit of holding attention before people switch tasks. Those three numbers explain why the practical targets above cluster where they do.
What genuinely is standardized is how you should describe the measurement. If you commit to a response time in a contract, specify four things: the percentile, the measurement window, the origin of the measurement, and what counts as a failed request. A promise of "sub second response times" with none of those defined cannot be enforced or disputed, which usually means it gets quietly ignored until an angry customer reads it back to you.
Why the average response time is the wrong number
Averages are the most common measurement mistake in this whole area. If 95 out of 100 requests take 80 milliseconds and 5 take 4 seconds, the average is 276 milliseconds and everything looks fine. Meanwhile one in twenty of your users just waited four seconds, and if that user makes twenty calls to render a page, they almost certainly hit at least one of them.
Use percentiles instead:
- p50 (median) tells you what a typical request feels like. Useful for capacity planning, useless for finding pain.
- p95 is the number to set targets against. It captures the experience of your slowest one in twenty requests, which is where complaints originate.
- p99 is where you find the real defects: lock contention, cold caches, a query that only goes bad for accounts with a lot of data, garbage collection pauses.
- Max is worth watching only as a tripwire for timeouts, since a single pathological request will dominate it.
A practical rule that has served plenty of teams well: alert on p95 crossing your target for a sustained window, investigate p99 during working hours, and ignore max unless it is hitting a timeout ceiling.
What is actually included in an API response time?
The number your monitoring reports is a sum of several stages, and knowing which one is growing tells you where to look. A full external measurement of an HTTPS request breaks down roughly like this.
| Stage | What happens | Typical share | What a spike here means |
|---|---|---|---|
| DNS lookup | Resolving your hostname to an IP | 0 to 50 ms, cached after first call | DNS provider trouble or a TTL set too low |
| TCP connect | Opening the socket | One round trip, distance bound | Network path change, or a saturated load balancer |
| TLS handshake | Negotiating the encrypted session | One to two round trips | Certificate chain issues or an expiring certificate |
| Time to first byte | Your server doing the actual work | The part you control | Slow queries, downstream calls, cold starts |
| Content transfer | Streaming the response body | Payload size divided by bandwidth | An endpoint returning far more data than the client needs |
Time to first byte is where almost all fixable latency lives, but the stages around it explain a surprising number of mystery incidents. An API that suddenly got 400 milliseconds slower for European customers and nobody else is rarely a code problem. It is usually DNS, routing, or a certificate renewal that changed the chain length. This is one reason checks from a single location mislead you: they measure one network path and quietly assume it represents everyone.
How do you measure API response time correctly?
Measure from outside your infrastructure. Application metrics collected inside the process are excellent for finding slow queries and terrible for telling you what a client experiences, because they exclude everything from the load balancer outward and they stop existing the moment the service is fully down.
Four rules that make external measurement trustworthy:
- Check from several regions. One probe measures one network path. Uptimehub runs checks from six regions, which is enough to separate "the API is slow" from "the API is slow from Frankfurt".
- Check on a fixed schedule. Real traffic is bursty and quiet at night, so a metric derived from it is not comparable across days. A check every minute produces a clean, evenly spaced series you can actually trend.
- Measure a request that does real work. A health endpoint returning a hard coded OK reports the latency of your web server, not your API. Time an authenticated read that touches the database, and time the specific call your busiest integration makes.
- Assert on content as well as timing. A fast response can still be wrong, and a wrong response is often fast precisely because it skipped the work. Pairing a latency threshold with a body assertion is the whole point of API monitoring rather than a simple ping.
What should you alert on?
Set two separate thresholds and treat them differently. A hard failure, meaning a timeout or a wrong status code, should page someone immediately after confirmation from a second region. A latency breach should be a slower signal: p95 above your target for five to ten consecutive minutes, not a single slow check. Response times are naturally noisy, and an alert that fires on one 900 millisecond sample will be muted within a week, which costs you the alert entirely.
The threshold itself should come from your own baseline plus headroom, not from a round number someone liked. Watch the endpoint for a week, take the p95, and set the alert somewhere around 1.5 to 2 times that value. You want to be told when behavior changes, and a static 500 millisecond rule on an endpoint that normally runs at 480 milliseconds is a pager that goes off every time traffic breathes.
Do AI and LLM endpoints change the rules?
They change the target, not the method. An endpoint that calls a language model has a floor set by generation time, so a 300 millisecond target is meaningless and holding a request open for 20 seconds is normal. The useful measurement shifts to time to first token, because a streamed response that starts in 400 milliseconds feels responsive even if it runs for 15 seconds in total, whereas one that returns everything at the end after 8 seconds of silence feels broken. If you run something like the API behind an on-site AI chatbot, monitor the time to first byte and set the total timeout generously, then alert on the first byte metric rather than the completed request.
The same logic applies to any endpoint with a legitimately long tail: exports, PDF generation, video processing. Monitor the acknowledgement, not the completion, and monitor the job queue separately with a heartbeat check so a stalled worker cannot hide behind a fast API.
How response time connects to your uptime number
An API that answers in 30 seconds is down as far as its clients are concerned, because their HTTP client gave up long before that. That is why a latency threshold belongs inside your availability definition rather than beside it. If your monitoring counts a 25 second response as a success while every real caller timed out at 10 seconds, your reported uptime is higher than your actual uptime and the gap will show up as support tickets you cannot correlate with anything.
Decide the number that means failure, usually your clients' timeout, write it into the check, and let anything slower count against availability. Then the availability figure on your SLA reporting matches what customers experienced, which is the only version of the number worth publishing. If you are still deciding what to commit to, our guide to a good uptime percentage covers the tradeoffs.
Getting response time monitoring in place
The practical setup takes about ten minutes. Pick three to five endpoints that represent real functionality, including at least one authenticated call and the one your largest integration depends on. Add each as an API check with the status code you expect, a body assertion on a field that only appears on success, and a latency threshold set from your measured baseline. Run them every minute from multiple regions and route alerts where your team already looks.
If you are still choosing a tool for it, our comparison of API monitoring tools covers thirteen options with verified pricing and is explicit about which ones can assert on the response body rather than only the status line. The step by step version of the setup itself is in how to monitor an API, and if slow responses are already turning into hard failures for you, the breakdowns of the 504 gateway timeout and 502 bad gateway error cover what those specific failures usually mean.
Know your site is down before your customers do
Start monitoring your sites, APIs and services from six regions, with alerts by Slack, email, SMS and webhook and a branded status page. Transparent, flat pricing per monitor.