Photo by Solen Feyissa from Pexels

You are about to cut production traffic over to a new OpenAI-powered feature. The model works, the prompts are tuned, and staging looks great. But staging is one region, one concurrency level, and one time of day. Production is none of those things. Before you flip the switch, you need a latency monitoring baseline that tells you what "normal" actually looks like, across regions, across hours, and across the specific endpoints your users will hit. This article walks through exactly how to build that baseline and what to watch once traffic starts flowing.

TL;DR

  • Establish a latency baseline from multiple regions before production cutover, not after the first incident.
  • Track Time to First Byte (TTFB) and Time to First Token (TTFT) separately, they reveal different failure modes.
  • Regional variance on OpenAI endpoints can exceed 300 ms between the fastest and slowest probe locations.
  • Synthetic probes running on a fixed schedule catch provider-side regressions that your application metrics will miss.
  • Observinio's daily probes from 21 regions, degradation alerts, and weekly summaries give you this coverage without building custom infrastructure.
Key takeaway: Always establish your latency baseline from real probe data across all user regions before production cutover — aggregate dashboards hide the regional pain points that drive user churn.
0+
Global probe regions
0 ms
Regional TTFT variance
0 days
Minimum baseline period

Why pre-cutover monitoring matters

Most teams add latency monitoring reactively. A customer in São Paulo reports that the chat feature "feels slow," an engineer checks the dashboard, sees an aggregate p50 of 420 ms, and concludes everything is fine. The problem is that the aggregate hides a p95 of 1,800 ms in South America while North American users enjoy 350 ms. By the time the support ticket arrives, the damage, churn, negative reviews, lost trust, is already done.

Pre-cutover monitoring flips the timeline. You collect latency data from every region your users occupy before a single real request is served. That data becomes your baseline. When production traffic begins, any deviation from the baseline triggers an alert, not a support ticket. The difference between "we detected a 40 % TTFT increase in ap-southeast-1 at 03:12 UTC" and "users in Singapore say the app is broken" is the difference between a five-minute remediation and a five-hour postmortem.

The metrics that matter: TTFB, TTFT, and end-to-end

world map global connectivity
Photo by Nataliya Vaitkevich from Pexels

Not all latency numbers are created equal. Here are the three you should track and what each one tells you:

  1. Time to First Byte (TTFB), the interval between sending the HTTP request and receiving the first byte of the response. This captures DNS resolution, TLS handshake, network transit, and the provider's initial processing overhead. A spike in TTFB with stable TTFT usually points to network or load-balancer issues on the provider side.
  2. Time to First Token (TTFT), the interval between sending the request and receiving the first generated token in a streaming response. TTFT includes everything in TTFB plus the model's prefill phase. A spike in TTFT with stable TTFB suggests the model itself is under load or the prompt is unusually large.
  3. End-to-end (E2E) latency, the total time from request sent to last byte received. For streaming completions, this is dominated by the number of output tokens and the model's decode speed. E2E is important for user-perceived performance but is less useful for diagnosing provider issues because it conflates generation length with infrastructure speed.
"Intuition: Prompt tokens add very little latency to completion calls."
>, Production best practices

This means that if your TTFT suddenly jumps by hundreds of milliseconds, the cause is almost certainly infrastructure, not your prompt getting longer. Tracking TTFT separately from E2E lets you isolate that signal cleanly.

Building your pre-cutover baseline

server room data center
Photo by Brett Sayles from Pexels

A baseline is only useful if it reflects the conditions your production traffic will face. Here is a step-by-step process to build one that holds up under real load.

Step 1: Identify user regions
0%

Step 1: Identify your user regions

Pull your analytics data and list every region where at least 5 % of your user base is located. For a typical SaaS product shipping an AI chat feature in 2026, that list often includes US East, US West, Western Europe, and at least one APAC region. Do not skip regions with smaller user counts, those users are often the first to experience degradation and the last to be noticed.

Step 2: Choose probe endpoints
0%

Step 2: Choose your probe endpoints

Your baseline probes should mirror your production calls as closely as possible. If your application calls POST /v1/chat/completions with gpt-4o and streaming enabled, your probe should do the same. Use a fixed prompt and a fixed max_tokens value so that variance in the results comes from infrastructure, not from generation randomness. A short system prompt plus a one-sentence user message with max_tokens: 50 is a good starting point.

Step 3: Run probes on a schedule
0%

Step 3: Run probes on a schedule

Monitoring OpenAI API latency in production (2026) (before production cutover) process
Figure 1: Monitoring OpenAI API latency in production (2026) (before production cutover) at a glance.

Run probes at least every hour from each region for a minimum of seven days. Seven days captures weekday/weekend patterns and at least one provider maintenance window. Record TTFB, TTFT, E2E, HTTP status code, and the x-request-id header from OpenAI (invaluable for support escalations). Store results in a time-series database or, more simply, let Observinio handle it, its daily probes from 21 regions already follow this pattern and store historical data for baseline comparison.

Step 4: Compute baseline thresholds
0%

Step 4: Compute baseline thresholds

For each region, calculate p50, p90, p95, and p99 for TTFB and TTFT. Your alert thresholds should be based on the p95 values, not the p50. A common starting point:

  • Warning: current p50 exceeds baseline p95 for two consecutive probe cycles.
  • Critical: current p50 exceeds baseline p99, or any single probe returns an HTTP 5xx.
Step 5: Validate with shadow traffic
0%

Step 5: Validate with a shadow traffic test

Before full cutover, route a small percentage of production traffic (5–10 %) through the new path while continuing to probe synthetically. Compare real-user latency distributions against your synthetic baseline. If they diverge significantly, investigate whether prompt length, concurrency, or authentication differences explain the gap.

Pre-cutover monitoring checklist

Use this checklist to confirm readiness before flipping the production switch:

Your progress is saved automatically in your browser.

What regional variance actually looks like

latency performance analytics
Photo by RDNE Stock project from Pexels

Regional variance is not a theoretical concern. Observinio probes from 21 global regions consistently show that TTFT for the same model and prompt can differ by hundreds of milliseconds depending on the source region. Regions geographically closer to OpenAI's inference clusters (primarily US-based) tend to see lower TTFB, which directly reduces TTFT. APAC and South American regions often carry an additional 150–350 ms of network transit time that no amount of prompt optimization can eliminate.

This variance has practical consequences for production cutover planning:

  • Timeout configuration: A 3-second timeout that works perfectly from us-east-1 may cause intermittent failures from ap-southeast-1 where the p95 TTFT is already 2.6 seconds.
  • Retry budgets: If your retry policy allows two retries with a 5-second total budget, users in high-latency regions may exhaust that budget on a single slow-but-successful request.
  • User experience thresholds: Research consistently shows that users perceive delays above 1 second as "slow." If your baseline TTFT from a given region already sits at 900 ms, you have almost no headroom before users notice degradation.
Knowing these numbers before cutover lets you make informed decisions: adjust timeouts per region, pre-warm connections, or even route specific regions through a closer proxy.
Example regional TTFT baseline (gpt-4o, short prompt, p50 values)
Region TTFB (ms) TTFT (ms) E2E (ms)
us-east-1953401 120
eu-west-11605101 380
ap-southeast-12406901 620
sa-east-12807801 810
Key takeaway: Always establish your latency baseline from real probe data across all user regions before production cutover — aggregate dashboards hide the regional pain points that drive user churn.

Practical probe script example

Below is a minimal Python snippet that measures TTFB and TTFT for an OpenAI streaming completion. Use it as a starting point for custom probes or rely on Observinio to handle this automatically.

import time
import openai

client = openai.OpenAI()

start = time.perf_counter()
ttfb = None
ttft = None

stream = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": "Reply concisely."},
{"role": "user", "content": "What is latency monitoring?"},
],
max_tokens=50,
stream=True,
)

for chunk in stream:
now = time.perf_counter()
if ttfb is None:
ttfb = now - start
if chunk.choices and chunk.choices[0].delta.content:
if ttft is None:
ttft = now - start

end = time.perf_counter()
e2e = end - start

print(f"TTFB: {ttfb1000:.0f} ms | TTFT: {ttft1000:.0f} ms | E2E: {e2e*1000:.0f} ms")

Run this from each target region on a cron schedule, log the results, and you have the raw data for your baseline. Alternatively, skip the infrastructure work and let Observinio's 21-region probe network collect the same data points automatically, with degradation alerts and weekly summaries delivered to your inbox.

Frequently Asked Questions

A minimum of seven days is recommended. Seven days captures daily traffic patterns on the provider side (OpenAI endpoints tend to be slower during US business hours when demand peaks) and usually includes at least one minor provider maintenance event. If your launch is tied to a specific date, start probes as early as possible, even three days of data is far better than none.
Existing APM tools like Datadog or New Relic are excellent for monitoring your own infrastructure, but they typically measure latency from your server to the provider, not from your users' regions. Synthetic probes from geographically distributed locations fill that gap. You can, and should, use both: APM for your stack, synthetic probes for the provider. Observinio focuses specifically on the provider side from 21 regions, complementing your existing APM setup.
"Normal" depends heavily on the model, prompt length, and region. As a rough guide, TTFT for gpt-4o with a short prompt typically falls between 300 ms and 900 ms depending on the probe region and current provider load. Rather than relying on published benchmarks, build your own baseline with probes from your specific regions, that is the only number that matters for your SLOs. Check the Observinio status page for current multi-region data.
If your production stack uses OpenRouter, monitor OpenRouter. If it calls OpenAI directly, monitor OpenAI directly. The routing layer adds its own latency and has its own failure modes, so your probes should match your production path exactly. Observinio monitors both OpenRouter and OpenAI direct endpoints, so you can compare them side by side and make data-driven routing decisions before cutover.
Start with conservative thresholds based on your first few days of probe data. Set the warning threshold at 1.5× your observed p50 TTFT and the critical threshold at 2× your observed p50. After a full week of data, tighten the thresholds to baseline p95 (warning) and p99 (critical). Observinio's degradation alerts use baseline comparison automatically, so thresholds adjust as your historical data grows.

Start monitoring before you need to

The best time to set up latency monitoring is before your first production user hits the endpoint. Observinio probes OpenAI and OpenRouter endpoints from 21 global regions every day, compares results against historical baselines, and sends you an email alert when latency degrades, no custom infrastructure required. Visit the status page to see current latency data, or get in touch to start building your pre-cutover baseline today.

Additional Resources