An Azure service that provides access to OpenAI’s GPT-3 models with enterprise capabilities.
Hello @Eszeki Daniel
Your measurements are useful, and I agree this doesn’t look like normal token-generation latency.
The Global Standard uses shared global capacity, and high-volume workloads can experience greater latency variability. I recommend checking Time to Response for streaming workloads, since that metric represents first-response/first-token latency.
However, I would not yet conclude that the 155-second delay is a documented “admission gate.”
The important distinction is:
- 429 + Retry-After is the documented signal for throttling/rate-limit or temporary shared-capacity pressure.
- A request that returns no headers for 155 seconds and eventually ends in HTTP 400 does not match the normal documented throttling pattern.
Since your Date header indicates the service received the request promptly, and your NAT/DNS/client metrics look healthy, the delay appears to occur somewhere inside the Azure OpenAI request-processing path.
For streaming workloads, it is recommended to monitor the following:
- AzureOpenAITimeToResponse
- AzureOpenAINormalizedTBTInMS
- ProcessedPromptTokens
- AzureOpenAIRequests
If Time to Response spikes while prompt size remains flat, check deployment utilization/concurrent request volume and shared-capacity pressure.
Correlate your affected requests with those metrics at the same timestamps.
The most interesting part of your case is the delayed 400:
155 s before response headers
HTTP 400
no 429
no Retry-After
no streamed error event
Request validation errors would normally be expected much earlier, so ask Microsoft Support to inspect the backend trace for:
apim-request-id:
c0d1fdbb-7c97-44b8-b292-8327894f9708
and confirm:
- whether the request spent time waiting for model-processing capacity before execution;
- whether the delay occurred in the regional API front end, routing layer, model scheduler, or another service component;
- why the eventual outcome surfaced as 400 rather than a capacity/throttling response; and
- whether there is any internal queue/admission state that is not currently exposed through response headers.
I cannot find a documented response header or SSE event that lets a client distinguish “waiting for shared-capacity admission” from “the model is processing slowly” before the first byte arrives. From the client side, both effectively appear as high TTFT/Time-to-Response until the service returns something.
Because of that, in production, don't use the absence of 429 as proof that the request is processing normally. Instead, set a client-side first-byte/TTFT threshold appropriate for your application, cancel/retry when it's exceeded, and use exponential backoff for actual 429s.
For workloads where first-token latency variance is unacceptable, Microsoft’s current guidance points to Provisioned Throughput, which provides dedicated capacity and more predictable latency. Global Standard is optimized more for broad capacity/availability than consistent low latency.
Microsoft also now offers priority processing for supported models as another option for latency-sensitive pay-as-you-go workloads.
I’d definitely preserve and send Microsoft the following:
- all affected apim-request-id values;
- UTC timestamps;
- request payload sizes/token counts;
- AzureOpenAITimeToResponse;
- concurrent request count;
- deployment SKU/model/version;
- and whether the eventual 400 bodies are identical.
With 12 cases out of 1,257 requests and one delayed by 155 seconds, Microsoft should be able to correlate those requests against backend routing/capacity telemetry.
References:
Azure OpenAI performance and latency
Deployment types in Microsoft Foundry Models
Stay informed about service-health regressions
Help make this community better for everyone: If this answer helped or resolved your issue, please accept it or upvote it. If not, share more details in a comment so we can continue the discussion and find the right solution. Thank you.