The failures that pass every health check
Five modes across two axes. The severe ones return HTTP 200 and corrupt state.
Case studyOne OpenAI-compatible endpoint for every model. Metriqual routes each call, fails over when a provider stalls, and logs all of it.
Change the base URL and the API key. Your OpenAI SDK code works exactly as it did.
-base_url="https://api.openai.com/v1"+base_url="https://api.metriqual.com/v1"-api_key=OPENAI_API_KEY+api_key=METRIQUAL_API_KEY
Text, voice, video, image, music, image-to-video. One endpoint, one bill, one log.
Priced live, per request. Routing costs under 10ms.
The bad ones return 200 OK. They pass every health check and corrupt state quietly.
99.2% of the conversation survives a mid-request failover. A stateless gateway keeps none of it.
744 of 750 injected failures · +59ms mean added latency · arXiv:2607.15899 · ContinuityBench
Every request logged and attributable. Cost, latency, model, agent.
The same diff you saw at the start, unchanged.
-base_url="https://api.openai.com/v1"+base_url="https://api.metriqual.com/v1"-api_key=OPENAI_API_KEY+api_key=METRIQUAL_API_KEY
One flag and your agent reads the live web before it replies, then cites what it read. Works on OpenAI and Claude through the same endpoint.
GPT-5.1 input pricing dropped ~20% this week[1]; output stayed flat[2].
Upload what your team already wrote. It is chunked, embedded and retrieved per request, and none of it leaves your gateway on the way there.
Set a cap per key. Spend is attributed in real time across every request, provider and modality, so the month never ends in a surprise.
Emails, cards and phone numbers are detected and masked in the request body before it is ever forwarded to an external provider.
refund for jane@acme.io on card 4242 4242 4242 4242, phoned from +1 415 555 0132
Version prompts, see which one is live, and point any version at any provider. Changing a system prompt stops being a deploy.
GPT-5.1 input pricing dropped ~20% this week[1]; output stayed flat[2].
One flag and your agent reads the live web before it replies, then cites what it read. Works on OpenAI and Claude through the same endpoint.
Upload what your team already wrote. It is chunked, embedded and retrieved per request, and none of it leaves your gateway on the way there.
Set a cap per key. Spend is attributed in real time across every request, provider and modality, so the month never ends in a surprise.
refund for jane@acme.io on card 4242 4242 4242 4242, phoned from +1 415 555 0132
Emails, cards and phone numbers are detected and masked in the request body before it is ever forwarded to an external provider.
Version prompts, see which one is live, and point any version at any provider. Changing a system prompt stops being a deploy.
Swap your API key and base URL for Metriqual's. Everything else in your codebase, from prompts to parameters, stays exactly as it is.
YOUR ENTIRE MIGRATION
- api_key = "OPENAI_API_KEY" + api_key = "MQ_KEY" - base_url = "https://api.openai.com/v1" + base_url = "https://api.metriqual.com/v1"
WHAT HAPPENS WHEN A PROVIDER FAILS
Metriqual | Direct provider | Other gateways | |
|---|---|---|---|
| Automatic failover across providers | |||
| 2-line integration (no SDK rewrite) | |||
| Conversation history carried on failover | |||
| Prompt versioning & hub | |||
| Per-agent spend controls | |||
| Multi-modal (voice, video, image, music) | |||
| Fully managed, nothing to host | |||
| Unified observability |
Metriqual | Direct provider | Other gateways | |
|---|---|---|---|
| Automatic failover across providers | |||
| 2-line integration (no SDK rewrite) | |||
| Conversation history carried on failover | |||
| Prompt versioning & hub | |||
| Per-agent spend controls | |||
| Multi-modal (voice, video, image, music) | |||
| Fully managed, nothing to host | |||
| Unified observability |
partial / limited
Failover reroutes every request to a healthy provider in milliseconds. A single-provider setup goes down with the provider.
The request is replayed against the next provider in the chain, carrying its conversation history. Your user sees a slower answer, never an error.
While the provider is down your users get an error page, not an answer. Retries hit the same endpoint, so the outage lasts as long as theirs does.
Failover that keeps the request alive but loses the conversation isn't failover. We built the benchmark for it and ran it on our own gateway.
Five modes across two axes. The severe ones return HTTP 200 and corrupt state.
Everything developers need to know before building production-ready AI agents.
Pick a provider and a model. That is the whole configuration.
Add a second provider. If the first one stalls, traffic moves there automatically.
base_url = "api.metriqual.com/v1" api_key = MQ_KEY
Swap your base URL. Every request now routes through the chain you just built.
Thirty minutes with an engineer. We kill a provider mid-conversation and you see exactly what your users would have seen.