Automatically route to the fastest available model
Latency-Based Routing automatically selects the fastest model for each request based on real-time performance data. Requesty continuously monitors response times and routes to the lowest-latency option.
Every request is scored against live performance data, and the fastest available provider wins.
Requesty continuously measures how every model in your policy is performing right now, across all traffic flowing through the router. Recent requests count more than older ones, so the picture reflects current conditions rather than yesterday’s averages.
2
Score each candidate
When a request arrives, the router scores every model in your policy. The score accounts for how fast each one starts responding, how quickly it generates the rest of the output, and how much of each it has actually observed recently. Models with little recent data are scored optimistically so they still get tried.
3
Route to the fastest, then fall back
The router orders candidates fastest-first and sends your request to the top one. If it fails, the request automatically falls through to the next-fastest, and so on down the list.
The result: traffic continuously shifts toward whatever is fastest at the moment, with no manual tuning, and it adapts within minutes when a provider slows down or recovers.
Benefits
Fastest Responses
Always use the quickest model available.
Automatic Adaptation
Router adjusts when model performance changes.
No Manual Tuning
Latency optimization happens automatically.
Regional Optimization
Automatically prefer nearby endpoints.
Creating a Latency-Based Policy
1
Create the Policy
Go to Routing Policies, click Create Policy, and select the Latency strategy card. The fastest model wins, so the order of models is ignored.
2
Select Models
Add models from the catalog below the form. For example:
Model
Description
anthropic/claude-sonnet-5-5
Direct API access
bedrock/claude-sonnet-5-5@eu-central-1
Regional endpoint
The router will automatically choose whichever is faster at request time.
Requesty measures both time-to-first-token (how fast a model starts responding) and generation speed (how fast it produces the rest of the output), so a model that starts quickly but generates slowly does not get an unfair advantage.
Metric
Description
Time-to-first-token
Time from request sent to first token received
Generation speed
How quickly tokens are produced after the first one
Request size
Performance is tracked separately for small and large requests, since they behave differently
Scope
Measured across all traffic on the router, so even your first request benefits from data others have already generated
Window
A rolling window of recent requests (about the last hour), weighting newer requests more heavily
Reliability
Models returning rate limits or server errors are penalized, so routing favors models that are both fast and reliable
Models with little recent latency data are still tried from time to time so the router can learn how they perform. After a handful of requests, it has enough signal to route them accurately.
Key Selection Strategies
For each model, you can configure which API key to try first:
Strategy
Description
Requesty provided key
Use Requesty’s managed keys only (default)
My own key
Use your BYOK credentials only
Requesty first, then BYOK
Try Requesty’s key first, fall back to BYOK
BYOK first, then Requesty
Try your key first, fall back to Requesty
Use Cases
Regional Optimization
Route to the fastest regional endpoint:
Model
Region
anthropic/claude-opus-5-5
Global
vertex/claude-opus-5-5@us
US
bedrock/claude-opus-5-5@eu-central-1
Europe
bedrock/claude-opus-5-5@ap-northeast-1
Asia Pacific
Users in Europe automatically get eu-central-1, users in Asia get ap-northeast-1.
Provider Performance
Let the router pick the fastest provider:
Model
openai/gpt-6.1-sol
anthropic/claude-sonnet-5-5
google/gemini-3.1-pro-preview
If OpenAI is experiencing slowdowns, traffic shifts to Anthropic or Google automatically.
Cost + Speed Optimization
Combine similar-priced models and route to fastest:
Model
openai/gpt-6-luna
anthropic/claude-haiku-5-5
google/gemini-3.1-flash-lite
All three are low-cost. Requesty picks whichever responds fastest.
Combining with Other Policies
Latency routing works great with load balancing and fallback.
Combination
How It Works
Latency + Load Balancing
Each sub-policy uses latency routing, parent policy does A/B testing
Latency + Fallback
Try latency-optimized policy first, fall back to known-good model if all fail
Monitoring Latency
Every policy page includes a Live Performance panel showing real traffic across the models in the policy. Switch between Latency, Success, and Speed over the last 24 hours or 7 days to see where your requests are going and how fast each model responds.For deeper analysis:
View time-to-first-token and total latency by model. See how latency routing distributes traffic.
FAQ
What if a model has no latency data?
Models without recent data are scored optimistically, so they get tried from time to time to gather performance signal. Once they have measurements, they compete fairly against everything else in the policy.
Does latency routing consider cost?
No. Latency routing only considers speed. If you want cost optimization, use load balancing to prefer cheaper models, or manually order a fallback chain by price.
Can I force a specific model for some requests?
Yes. Instead of using the latency policy, pass a direct model name (e.g., openai/gpt-6.1-sol) for requests where you need a specific model.
How often does latency data update?
Continuously. Latency metrics are updated after every request. The router uses a rolling average of recent requests to smooth out spikes.
What happens if the fastest model fails?
Latency routing tries models in speed order. If the fastest model fails, it tries the second-fastest, and so on.
Can I see which model was selected?
Yes. Check the response headers or request logs in Analytics. You will see which model handled each request.
Unlike load balancing, latency routing does not pin a user to one model. If you want the same conversation to keep hitting the same provider (for prompt cache reuse), pass a trace_id: the router keeps its ordering stable for requests that share a trace, while still adapting across new conversations.
Last modified on October 12, 2026
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Requesty Docs","description":"Documentation for Requesty, a unified LLM gateway and OpenAI-compatible API for 600+ AI models.","colors":{"primary":"#C8956A","light":"#D4A574","dark":"#E0B88A"},"logo":{"light":"https://mintcdn.com/requesty/o8v2COiz3OtlSbqG/logo/light.svg?fit=max\u0026auto=format\u0026n=o8v2COiz3OtlSbqG\u0026q=85\u0026s=33d22576c8ec4d1e68f24969181684df","dark":"https://mintcdn.com/requesty/o8v2COiz3OtlSbqG/logo/dark.svg?fit=max\u0026auto=format\u0026n=o8v2COiz3OtlSbqG\u0026q=85\u0026s=c21a835e0692187f8c47df7ab6528af9","href":"https://docs.requesty.ai"},"favicon":"https://mintcdn.com/requesty/MM5cSf0NbVkrpoDF/favicon.svg?fit=max\u0026auto=format\u0026n=MM5cSf0NbVkrpoDF\u0026q=85\u0026s=706185ad27099920b149c4ad2f15a5ca","api":{"openapi":["api-reference/requesty_inference-openapi.json","api-reference/requesty_management-openapi.json"],"playground":{}},"appearance":{"default":"dark"},"navbar":{"links":[{"href":"https://docs.requesty.ai/changelog","label":"Changelog"},{"href":"https://docs.requesty.ai/api-reference/requesty_openapi.json","label":"OpenAPI"},{"href":"https://discord.com/invite/Td3rwAHgt4","label":"Discord"}],"primary":{"type":"button","label":"Get Started","href":"https://app.requesty.ai/sign-up"}},"footer":{"socials":{"x":"https://x.com/requestyAI","linkedin":"https://linkedin.com/company/requesty"}},"search":{"prompt":"Search..."},"seo":{"metatags":{"og:site_name":"Requesty Docs"},"indexing":"navigable"},"fonts":{"heading":{"family":"Inter","weight":600},"body":{"family":"Inter"}},"styling":{"eyebrows":"breadcrumbs","codeblocks":"dark","latex":true},"integrations":{"amplitude":{"apiKey":"ce02ec2dce31d2745bd8a3ffaedd53cc"}},"contextual":{"options":["copy","chatgpt","claude","perplexity"],"display":"header"},"metadata":{"timestamp":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"requesty","hasAudioNarration":false,"actualSubdomain":"requesty","customDomains":["docs.requesty.ai"],"gitSource":{"type":"github","owner":"requestyai","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af5db23c7a2465f2886ec89","clientVersion":"0.0.4128","searchFilterCounts":[{"language":"default","tag":"Gateway","count":59},{"language":"default","tag":"Management API","count":37},{"language":"default","tag":"Integrations","count":27},{"language":"default","tag":"Inference API","count":21},{"language":"default","tag":"Inference APIs","count":21},{"language":"default","tag":"Organization","count":16},{"language":"default","tag":"LLM Gateway","count":14},{"language":"default","tag":"Analytics \u0026 Monitoring","count":12},{"language":"default","tag":"Coding Assistants","count":11},{"language":"default","tag":"API Keys","count":9}]},"assistantConfig":{"enableStarterQuestions":false,"deflection":{"enabled":true,"email":"[email protected]","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"styles/custom.css","content":":root{--requesty-gold: #C8956A;--requesty-gold-light: #E0B88A;--requesty-gold-muted: rgba(200, 149, 106, 0.15)}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:rgba(128, 128, 128, 0.15);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:rgba(128, 128, 128, 0.3)}#navbar{backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}img.nav-logo{height:2.25rem!important;max-width:18rem!important;max-height:2.25rem!important}#sidebar{font-size:13.5px!important}#sidebar-content{padding-top:0.5rem}sidebar-group-header{font-weight:600!important;letter-spacing:0.01em;text-transform:none!important}#content-area{max-width:100%}#page-title{font-size:2rem!important;font-weight:600!important;letter-spacing:-0.025em!important;line-height:1.2!important}mdx-content{font-size:15px!important;line-height:1.65!important}mdx-content h2{font-size:1.35rem!important;font-weight:600!important;letter-spacing:-0.015em!important;margin-top:2rem!important;margin-bottom:0.75rem!important}mdx-content h3{font-size:1.1rem!important;font-weight:600!important;margin-top:1.5rem!important;margin-bottom:0.4rem!important}mdx-content p{margin-top:0.6em!important;margin-bottom:0.6em!important}mdx-content li{margin-top:0.2rem!important;margin-bottom:0.2rem!important}code-block{border-radius:12px!important;overflow:hidden}mdx-content code:not(pre code){border:none!important;border-radius:5px!important;padding:2px 6px!important;font-size:0.9em!important}:root:not(.dark) mdx-content code:not(pre code){background:rgba(0, 0, 0, 0.05)!important}:root.dark mdx-content code:not(pre code){background:rgba(255, 255, 255, 0.08)!important}card{border-radius:12px!important;transition:border-color 0.2s ease, background-color 0.2s ease}:root:not(.dark) card{border:1px solid rgba(0, 0, 0, 0.08)!important}:root:not(.dark) card:hover{border-color:rgba(0, 0, 0, 0.15)!important;background:rgba(0, 0, 0, 0.01)!important}:root.dark card{border:1px solid rgba(255, 255, 255, 0.06)!important}:root.dark card:hover{border-color:rgba(255, 255, 255, 0.12)!important;background:rgba(255, 255, 255, 0.02)!important}callout{border-radius:10px!important;border-left-width:3px!important}mdx-content table{border-radius:10px!important;overflow:hidden}mdx-content table th{font-weight:600!important;font-size:0.85rem!important;letter-spacing:0.02em;text-transform:uppercase}mdx-content img{border-radius:10px!important}#request-example,#response-example{border-radius:12px!important;overflow:hidden}api-section{padding-bottom:2rem}:root:not(.dark) api-section{border-bottom:1px solid rgba(0, 0, 0, 0.06)}:root.dark api-section{border-bottom:1px solid rgba(255, 255, 255, 0.05)}api-section-heading-title{font-size:1.75rem!important;font-weight:600!important;letter-spacing:-0.02em!important}#table-of-contents{font-size:13px!important}toc-item{transition:color 0.15s ease}breadcrumb-list{font-size:13px!important;opacity:0.7}nav-tabs-item{font-weight:500!important;letter-spacing:0.01em}#pagination{margin-top:2rem!important;padding-top:1rem!important}:root:not(.dark) #pagination{border-top:1px solid rgba(0, 0, 0, 0.06)!important}:root.dark #pagination{border-top:1px solid rgba(255, 255, 255, 0.05)!important}accordion{border-radius:10px!important}steps{border-left-color:rgba(200, 149, 106, 0.3)!important}step-content{padding-bottom:0.75rem!important}expandable{border-radius:8px!important}#search-bar-entry{border-radius:8px!important}nav-tag-pill{font-size:11px!important;font-weight:600!important;letter-spacing:0.03em;border-radius:4px!important}[data-component-part=\"update-tag\"]{padding:2px 8px!important;border-radius:6px!important;font-size:12px!important}:root:not(.dark) [data-component-part=\"update-tag\"]{background:rgba(0, 0, 0, 0.06)!important;color:rgb(55, 65, 81)!important}:root.dark [data-component-part=\"update-tag\"]{background:rgba(255, 255, 255, 0.1)!important;color:rgb(209, 213, 219)!important}:root:not(.dark) #footer{border-top:1px solid rgba(0, 0, 0, 0.06)!important}:root.dark #footer{border-top:1px solid rgba(255, 255, 255, 0.05)!important}"}],"page":{"pagePath":"features/latency-routing","slug":"/features/latency-routing","pageMetadata":{"title":"Latency-Based Routing","description":"Automatically route to the fastest available model","icon":"gauge-high","href":"/features/latency-routing"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Automatically route to the fastest available model\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,Card,CardGroup,CodeBlock,CodeGroup,Frame,Heading,Info,Note,OptimizedImage,Step,Steps,Table}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!CodeGroup)_missingMdxReference(`CodeGroup`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Note)_missingMdxReference(`Note`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Latency-Based Routing automatically selects the `,_jsx(_components.strong,{children:`fastest model`}),` for each request based on real-time performance data. Requesty continuously monitors response times and routes to the lowest-latency option.`]}),`\n`,_jsx(Frame,{caption:`Every request is scored against live performance data, and the fastest available provider wins.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/requesty/qjPoKXyN196jjWse/images/latency_based_routing.png?fit=max\u0026auto=format\u0026n=qjPoKXyN196jjWse\u0026q=85\u0026s=2924823388a8da2463c0d4088c8a8277`,alt:`Latency-based routing: a user request reaches the Requesty router, which evaluates real-time performance across providers and delivers the response via the fastest path.`,\"data-og-width\":`1536`,width:`1536`,\"data-og-height\":`1024`,height:`1024`,\"data-path\":`images/latency_based_routing.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/requesty/qjPoKXyN196jjWse/images/latency_based_routing.png?w=280\u0026fit=max\u0026auto=format\u0026n=qjPoKXyN196jjWse\u0026q=85\u0026s=ce1f2d7fc5bdaebf8a771accb103c06d 280w, https://mintcdn.com/requesty/qjPoKXyN196jjWse/images/latency_based_routing.png?w=560\u0026fit=max\u0026auto=format\u0026n=qjPoKXyN196jjWse\u0026q=85\u0026s=e1c3508c5ec9e2fefa1a4deeb6d31494 560w, https://mintcdn.com/requesty/qjPoKXyN196jjWse/images/latency_based_routing.png?w=840\u0026fit=max\u0026auto=format\u0026n=qjPoKXyN196jjWse\u0026q=85\u0026s=5829762997fbd78c134c58ffe3f843b0 840w, https://mintcdn.com/requesty/qjPoKXyN196jjWse/images/latency_based_routing.png?w=1100\u0026fit=max\u0026auto=format\u0026n=qjPoKXyN196jjWse\u0026q=85\u0026s=1d7f7e356c3470f6aeea68a32104c5e5 1100w, https://mintcdn.com/requesty/qjPoKXyN196jjWse/images/latency_based_routing.png?w=1650\u0026fit=max\u0026auto=format\u0026n=qjPoKXyN196jjWse\u0026q=85\u0026s=470e81e905e69722b76d0b0a17cb75fc 1650w, https://mintcdn.com/requesty/qjPoKXyN196jjWse/images/latency_based_routing.png?w=2500\u0026fit=max\u0026auto=format\u0026n=qjPoKXyN196jjWse\u0026q=85\u0026s=09554aa9ca9b596438329069a66a49be 2500w`})}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:_jsx(_components.a,{href:`https://app.requesty.ai/routing-policies`,children:`Enable latency routing`})}),` in the Requesty Console. Prefer zero setup? Try a `,_jsx(_components.a,{href:`/features/managed-policies`,children:`managed policy`}),` maintained by Requesty.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`how-it-works`,children:`How It Works`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Measure live performance`,children:_jsx(_components.p,{children:`Requesty continuously measures how every model in your policy is performing right now, across all traffic flowing through the router. Recent requests count more than older ones, so the picture reflects current conditions rather than yesterday’s averages.`})}),_jsx(Step,{title:`Score each candidate`,children:_jsx(_components.p,{children:`When a request arrives, the router scores every model in your policy. The score accounts for how fast each one starts responding, how quickly it generates the rest of the output, and how much of each it has actually observed recently. Models with little recent data are scored optimistically so they still get tried.`})}),_jsx(Step,{title:`Route to the fastest, then fall back`,children:_jsx(_components.p,{children:`The router orders candidates fastest-first and sends your request to the top one. If it fails, the request automatically falls through to the next-fastest, and so on down the list.`})})]}),`\n`,_jsx(_components.p,{children:`The result: traffic continuously shifts toward whatever is fastest at the moment, with no manual tuning, and it adapts within minutes when a provider slows down or recovers.`}),`\n`,_jsx(Heading,{level:`2`,id:`benefits`,children:`Benefits`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Fastest Responses`,icon:`bolt`,children:_jsx(_components.p,{children:`Always use the quickest model available.`})}),_jsx(Card,{title:`Automatic Adaptation`,icon:`rotate`,children:_jsx(_components.p,{children:`Router adjusts when model performance changes.`})}),_jsx(Card,{title:`No Manual Tuning`,icon:`wand-magic-sparkles`,children:_jsx(_components.p,{children:`Latency optimization happens automatically.`})}),_jsx(Card,{title:`Regional Optimization`,icon:`globe`,children:_jsx(_components.p,{children:`Automatically prefer nearby endpoints.`})})]}),`\n`,_jsx(Heading,{level:`2`,id:`creating-a-latency-based-policy`,children:`Creating a Latency-Based Policy`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Create the Policy`,children:[_jsxs(_components.p,{children:[`Go to `,_jsx(_components.a,{href:`https://app.requesty.ai/routing-policies`,children:`Routing Policies`}),`, click `,_jsx(_components.strong,{children:`Create Policy`}),`, and select the `,_jsx(_components.strong,{children:`Latency`}),` strategy card. The fastest model wins, so the order of models is ignored.`]}),_jsx(OptimizedImage,{src:`https://mintcdn.com/requesty/TlHWMQ2xwwK_DKt5/images/routing-policy-editor.png?fit=max\u0026auto=format\u0026n=TlHWMQ2xwwK_DKt5\u0026q=85\u0026s=fe659370d487574f2dc7463a25d7cb4d`,alt:`Policy editor with strategy cards and Live Performance panel`,\"data-og-width\":`1609`,width:`1609`,\"data-og-height\":`755`,height:`755`,\"data-path\":`images/routing-policy-editor.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/requesty/TlHWMQ2xwwK_DKt5/images/routing-policy-editor.png?w=280\u0026fit=max\u0026auto=format\u0026n=TlHWMQ2xwwK_DKt5\u0026q=85\u0026s=bcae21de85a665217418f40e4aa1a61e 280w, https://mintcdn.com/requesty/TlHWMQ2xwwK_DKt5/images/routing-policy-editor.png?w=560\u0026fit=max\u0026auto=format\u0026n=TlHWMQ2xwwK_DKt5\u0026q=85\u0026s=c1b14cc10c4340f0005f14dc338f12b0 560w, https://mintcdn.com/requesty/TlHWMQ2xwwK_DKt5/images/routing-policy-editor.png?w=840\u0026fit=max\u0026auto=format\u0026n=TlHWMQ2xwwK_DKt5\u0026q=85\u0026s=640ea5492a1d91b4157dcf15319a516e 840w, https://mintcdn.com/requesty/TlHWMQ2xwwK_DKt5/images/routing-policy-editor.png?w=1100\u0026fit=max\u0026auto=format\u0026n=TlHWMQ2xwwK_DKt5\u0026q=85\u0026s=e91c3631428b09f7f41289e85b397f61 1100w, https://mintcdn.com/requesty/TlHWMQ2xwwK_DKt5/images/routing-policy-editor.png?w=1650\u0026fit=max\u0026auto=format\u0026n=TlHWMQ2xwwK_DKt5\u0026q=85\u0026s=008ed6678ff81936365deb5c3806e9c3 1650w, https://mintcdn.com/requesty/TlHWMQ2xwwK_DKt5/images/routing-policy-editor.png?w=2500\u0026fit=max\u0026auto=format\u0026n=TlHWMQ2xwwK_DKt5\u0026q=85\u0026s=eda79e9faedcb9ca6e35365566852cbf 2500w`})]}),_jsxs(Step,{title:`Select Models`,children:[_jsx(_components.p,{children:`Add models from the catalog below the form. For example:`}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Model`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`anthropic/claude-sonnet-5-5`})}),_jsx(_components.td,{children:`Direct API access`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`bedrock/claude-sonnet-5-5@eu-central-1`})}),_jsx(_components.td,{children:`Regional endpoint`})]})]})]}),_jsx(_components.p,{children:`The router will automatically choose whichever is faster at request time.`})]}),_jsxs(Step,{title:`Use the Policy in Your Code`,children:[_jsx(_components.p,{children:`Reference the policy in your model parameter:`}),_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`Python`,numberOfLines:`11`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`11`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` openai `}),_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` OpenAI`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`client = OpenAI(`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` base_url`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"https://router.requesty.ai/v1\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` api_key`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"your-requesty-api-key\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`response = client.chat.completions.create(`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` model`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"policy/fastest-sonnet\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` messages`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`=[{`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"role\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"user\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"content\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"Hello!\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`}]`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`TypeScript`,numberOfLines:`11`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`11`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` OpenAI`}),_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:` from`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` 'openai'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#4FC1FF`,\"--shiki-dark\":`#4FC1FF`},children:` client`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`new`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:` OpenAI`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`({`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` baseURL:`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` 'https://router.requesty.ai/v1'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` apiKey:`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` 'your-requesty-api-key'`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`});`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#4FC1FF`,\"--shiki-dark\":`#4FC1FF`},children:` response`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` client`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`chat`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`completions`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`create`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`({`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` model:`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` 'policy/fastest-sonnet'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` messages:`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` [{ `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`role:`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` 'user'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`content:`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` 'Hello!'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` }]`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`});`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`cURL`,numberOfLines:`7`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`7`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` https://router.requesty.ai/v1/chat/completions`}),_jsx(_components.span,{style:{color:`#D7BA7D`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` \"Content-Type: application/json\"`}),_jsx(_components.span,{style:{color:`#D7BA7D`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer your-requesty-api-key\"`}),_jsx(_components.span,{style:{color:`#D7BA7D`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` '{`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` \"model\": \"policy/fastest-sonnet\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` \"messages\": [{\"role\": \"user\", \"content\": \"Hello!\"}]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` }'`})}),`\n`]})})})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`how-latency-tracking-works`,children:`How Latency Tracking Works`}),`\n`,_jsxs(_components.p,{children:[`Requesty measures both `,_jsx(_components.strong,{children:`time-to-first-token`}),` (how fast a model starts responding) and `,_jsx(_components.strong,{children:`generation speed`}),` (how fast it produces the rest of the output), so a model that starts quickly but generates slowly does not get an unfair advantage.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Metric`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Time-to-first-token`})}),_jsx(_components.td,{children:`Time from request sent to first token received`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Generation speed`})}),_jsx(_components.td,{children:`How quickly tokens are produced after the first one`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Request size`})}),_jsx(_components.td,{children:`Performance is tracked separately for small and large requests, since they behave differently`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Scope`})}),_jsx(_components.td,{children:`Measured across all traffic on the router, so even your first request benefits from data others have already generated`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Window`})}),_jsx(_components.td,{children:`A rolling window of recent requests (about the last hour), weighting newer requests more heavily`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Reliability`})}),_jsx(_components.td,{children:`Models returning rate limits or server errors are penalized, so routing favors models that are both fast and reliable`})]})]})]}),`\n`,_jsx(Info,{children:_jsx(_components.p,{children:`Models with little recent latency data are still tried from time to time so the router can learn how they perform. After a handful of requests, it has enough signal to route them accurately.`})}),`\n`,_jsx(Heading,{level:`2`,id:`key-selection-strategies`,children:`Key Selection Strategies`}),`\n`,_jsx(_components.p,{children:`For each model, you can configure which API key to try first:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Strategy`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Requesty provided key`})}),_jsx(_components.td,{children:`Use Requesty’s managed keys only (default)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`My own key`})}),_jsx(_components.td,{children:`Use your BYOK credentials only`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Requesty first, then BYOK`})}),_jsx(_components.td,{children:`Try Requesty’s key first, fall back to BYOK`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`BYOK first, then Requesty`})}),_jsx(_components.td,{children:`Try your key first, fall back to Requesty`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`use-cases`,children:`Use Cases`}),`\n`,_jsxs(AccordionGroup,{children:[_jsxs(Accordion,{title:`Regional Optimization`,id:`regional-optimization`,children:[_jsx(_components.p,{children:`Route to the fastest regional endpoint:`}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Model`}),_jsx(_components.th,{children:`Region`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`anthropic/claude-opus-5-5`})}),_jsx(_components.td,{children:`Global`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`vertex/claude-opus-5-5@us`})}),_jsx(_components.td,{children:`US`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`bedrock/claude-opus-5-5@eu-central-1`})}),_jsx(_components.td,{children:`Europe`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`bedrock/claude-opus-5-5@ap-northeast-1`})}),_jsx(_components.td,{children:`Asia Pacific`})]})]})]}),_jsxs(_components.p,{children:[`Users in Europe automatically get `,_jsx(_components.code,{children:`eu-central-1`}),`, users in Asia get `,_jsx(_components.code,{children:`ap-northeast-1`}),`.`]})]}),_jsxs(Accordion,{title:`Provider Performance`,id:`provider-performance`,children:[_jsx(_components.p,{children:`Let the router pick the fastest provider:`}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsx(_components.tr,{children:_jsx(_components.th,{children:`Model`})})}),_jsxs(_components.tbody,{children:[_jsx(_components.tr,{children:_jsx(_components.td,{children:_jsx(_components.code,{children:`openai/gpt-6.1-sol`})})}),_jsx(_components.tr,{children:_jsx(_components.td,{children:_jsx(_components.code,{children:`anthropic/claude-sonnet-5-5`})})}),_jsx(_components.tr,{children:_jsx(_components.td,{children:_jsx(_components.code,{children:`google/gemini-3.1-pro-preview`})})})]})]}),_jsx(_components.p,{children:`If OpenAI is experiencing slowdowns, traffic shifts to Anthropic or Google automatically.`})]}),_jsxs(Accordion,{title:`Cost + Speed Optimization`,id:`cost-speed-optimization`,children:[_jsx(_components.p,{children:`Combine similar-priced models and route to fastest:`}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsx(_components.tr,{children:_jsx(_components.th,{children:`Model`})})}),_jsxs(_components.tbody,{children:[_jsx(_components.tr,{children:_jsx(_components.td,{children:_jsx(_components.code,{children:`openai/gpt-6-luna`})})}),_jsx(_components.tr,{children:_jsx(_components.td,{children:_jsx(_components.code,{children:`anthropic/claude-haiku-5-5`})})}),_jsx(_components.tr,{children:_jsx(_components.td,{children:_jsx(_components.code,{children:`google/gemini-3.1-flash-lite`})})})]})]}),_jsx(_components.p,{children:`All three are low-cost. Requesty picks whichever responds fastest.`})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`combining-with-other-policies`,children:`Combining with Other Policies`}),`\n`,_jsxs(_components.p,{children:[`Latency routing works great with `,_jsx(_components.strong,{children:`load balancing`}),` and `,_jsx(_components.strong,{children:`fallback`}),`.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Combination`}),_jsx(_components.th,{children:`How It Works`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Latency + Load Balancing`})}),_jsx(_components.td,{children:`Each sub-policy uses latency routing, parent policy does A/B testing`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Latency + Fallback`})}),_jsx(_components.td,{children:`Try latency-optimized policy first, fall back to known-good model if all fail`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`monitoring-latency`,children:`Monitoring Latency`}),`\n`,_jsxs(_components.p,{children:[`Every policy page includes a `,_jsx(_components.strong,{children:`Live Performance`}),` panel showing real traffic across the models in the policy. Switch between `,_jsx(_components.strong,{children:`Latency`}),`, `,_jsx(_components.strong,{children:`Success`}),`, and `,_jsx(_components.strong,{children:`Speed`}),` over the last 24 hours or 7 days to see where your requests are going and how fast each model responds.`]}),`\n`,_jsx(_components.p,{children:`For deeper analysis:`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Open Performance Monitoring`,children:_jsxs(_components.p,{children:[`Go to `,_jsx(_components.a,{href:`https://app.requesty.ai/analytics`,children:`Performance Monitoring`}),`.`]})}),_jsx(Step,{title:`Review metrics`,children:_jsxs(_components.p,{children:[`View `,_jsx(_components.strong,{children:`time-to-first-token`}),` and `,_jsx(_components.strong,{children:`total latency`}),` by model. See how latency routing distributes traffic.`]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`faq`,children:`FAQ`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`What if a model has no latency data?`,id:`what-if-a-model-has-no-latency-data`,children:_jsx(_components.p,{children:`Models without recent data are scored optimistically, so they get tried from time to time to gather performance signal. Once they have measurements, they compete fairly against everything else in the policy.`})}),_jsx(Accordion,{title:`Does latency routing consider cost?`,id:`does-latency-routing-consider-cost`,children:_jsxs(_components.p,{children:[`No. Latency routing only considers speed. If you want cost optimization, use `,_jsx(_components.strong,{children:`load balancing`}),` to prefer cheaper models, or manually order a fallback chain by price.`]})}),_jsx(Accordion,{title:`Can I force a specific model for some requests?`,id:`can-i-force-a-specific-model-for-some-requests`,children:_jsxs(_components.p,{children:[`Yes. Instead of using the latency policy, pass a direct model name (e.g., `,_jsx(_components.code,{children:`openai/gpt-6.1-sol`}),`) for requests where you need a specific model.`]})}),_jsx(Accordion,{title:`How often does latency data update?`,id:`how-often-does-latency-data-update`,children:_jsx(_components.p,{children:`Continuously. Latency metrics are updated after every request. The router uses a rolling average of recent requests to smooth out spikes.`})}),_jsx(Accordion,{title:`What happens if the fastest model fails?`,id:`what-happens-if-the-fastest-model-fails`,children:_jsx(_components.p,{children:`Latency routing tries models in speed order. If the fastest model fails, it tries the second-fastest, and so on.`})}),_jsx(Accordion,{title:`Can I see which model was selected?`,id:`can-i-see-which-model-was-selected`,children:_jsxs(_components.p,{children:[`Yes. Check the response headers or request logs in `,_jsx(_components.a,{href:`https://app.requesty.ai/analytics`,children:`Analytics`}),`. You will see which model handled each request.`]})})]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`Unlike load balancing, latency routing does not pin a user to one model. If you want the same conversation to keep hitting the same provider (for prompt cache reuse), pass a `,_jsx(_components.code,{children:`trace_id`}),`: the router keeps its ordering stable for requests that share a trace, while still adapting across new conversations.`]})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":"dark","config":{},"pageMetadata":{"title":"Latency-Based Routing","description":"Automatically route to the fastest available model","icon":"gauge-high","href":"/features/latency-routing"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"How It Works","slug":"how-it-works","depth":2,"children":[]},{"title":"Benefits","slug":"benefits","depth":2,"children":[]},{"title":"Creating a Latency-Based Policy","slug":"creating-a-latency-based-policy","depth":2,"children":[]},{"title":"How Latency Tracking Works","slug":"how-latency-tracking-works","depth":2,"children":[]},{"title":"Key Selection Strategies","slug":"key-selection-strategies","depth":2,"children":[]},{"title":"Use Cases","slug":"use-cases","depth":2,"children":[]},{"title":"Combining with Other Policies","slug":"combining-with-other-policies","depth":2,"children":[]},{"title":"Monitoring Latency","slug":"monitoring-latency","depth":2,"children":[]},{"title":"FAQ","slug":"faq","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"requesty","siteName":"Requesty Docs","title":"Latency-Based Routing - Requesty Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-12T15:29:17.321Z","gitLastModified":"2026-10-12T13:59:50.000Z","originalFileLocation":"features/latency-routing.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Automatically route to the fastest available model\">\u003cmeta data-mint-head name=\"application-name\" content=\"Requesty Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/requesty/bWQG6e3TK2khNMP8/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/requesty/bWQG6e3TK2khNMP8/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/requesty/bWQG6e3TK2khNMP8/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/requesty/bWQG6e3TK2khNMP8/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/requesty/bWQG6e3TK2khNMP8/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/requesty/bWQG6e3TK2khNMP8/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/requesty/bWQG6e3TK2khNMP8/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/requesty/bWQG6e3TK2khNMP8/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/requesty/bWQG6e3TK2khNMP8/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Latency-Based Routing - Requesty Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Automatically route to the fastest available model\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Requesty Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.requesty.ai/features/latency-routing\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://requesty.mintlify.site/_mintlify/api/og/v2?division=LLM+Gateway\u0026amp;title=Latency-Based+Routing\u0026amp;description=Automatically+route+to+the+fastest+available+model\u0026amp;theme=a48e85110015de94690ebb47\u0026amp;signature=ec2318185451ceba21918fa98412afec8fe51b82865bee68d77473058398fcd0\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Latency-Based Routing - Requesty Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Automatically route to the fastest available model\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://requesty.mintlify.site/_mintlify/api/og/v2?division=LLM+Gateway\u0026amp;title=Latency-Based+Routing\u0026amp;description=Automatically+route+to+the+fastest+available+model\u0026amp;theme=a48e85110015de94690ebb47\u0026amp;signature=ec2318185451ceba21918fa98412afec8fe51b82865bee68d77473058398fcd0\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/requesty/bWQG6e3TK2khNMP8/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Requesty Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#C8956A\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.requesty.ai/features/latency-routing\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/features/latency-routing.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.requesty.ai/#organization\",\"name\":\"Requesty Docs\",\"url\":\"https://docs.requesty.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/requesty/o8v2COiz3OtlSbqG/logo/light.svg?fit=max\u0026auto=format\u0026n=o8v2COiz3OtlSbqG\u0026q=85\u0026s=33d22576c8ec4d1e68f24969181684df\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.requesty.ai#website\",\"name\":\"Requesty Docs\",\"url\":\"https://docs.requesty.ai\",\"publisher\":{\"@id\":\"https://docs.requesty.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.requesty.ai/features/latency-routing#webpage\",\"url\":\"https://docs.requesty.ai/features/latency-routing\",\"name\":\"Latency-Based Routing\",\"description\":\"Automatically route to the fastest available model\",\"dateModified\":\"2026-10-12T13:59:50.000Z\",\"isPartOf\":{\"@id\":\"https://docs.requesty.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.requesty.ai/features/latency-routing#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.requesty.ai/features/latency-routing#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"LLM Gateway\",\"item\":\"https://docs.requesty.ai/features/eu-routing\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Latency-Based Routing\",\"item\":\"https://docs.requesty.ai/features/latency-routing\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.requesty.ai/features/latency-routing#article\",\"headline\":\"Latency-Based Routing\",\"name\":\"Latency-Based Routing\",\"description\":\"Automatically route to the fastest available model\",\"url\":\"https://docs.requesty.ai/features/latency-routing\",\"mainEntityOfPage\":{\"@id\":\"https://docs.requesty.ai/features/latency-routing#webpage\"},\"dateModified\":\"2026-10-12T13:59:50.000Z\",\"publisher\":{\"@id\":\"https://docs.requesty.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.requesty.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Requesty Docs\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Requesty Docs\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/features/latency-routing.md","siteName":"Requesty Docs","nav":{"global":null,"tabs":[{"tab":"Gateway","groups":[{"group":"Getting Started","pages":[{"title":"Quickstart","icon":"rocket","href":"/quickstart"},{"title":"Supported Models","icon":"microchip","href":"/features/supported-models"},{"title":"Free Models","icon":"gift","href":"/features/free-models"},{"title":"Changelog","icon":"clock-rotate-left","href":"/changelog"},{"title":"Error Codes","icon":"triangle-exclamation","href":"/features/error-codes"}]},{"group":"LLM Gateway","pages":[{"title":"EU Routing","icon":"globe-europe","href":"/features/eu-routing"},{"title":"Fallback Policies","icon":"forward-step","href":"/features/fallback-policies"},{"title":"Load Balancing Policies","description":"Distribute traffic across models with weighted routing","icon":"scale-balanced","href":"/features/load-balancing-policies"},{"title":"Latency-Based Routing","icon":"gauge-high","href":"/features/latency-routing"},{"title":"Auto Routing","description":"Send every conversation to the right model automatically. A decision model reads the first message and picks the route.","icon":"route","href":"/features/auto-routing"},{"title":"Managed Policies","icon":"wand-magic-sparkles","href":"/features/managed-policies"},{"title":"Auto Caching","icon":"toggle-on","href":"/features/auto-caching"},{"title":"Manual Caching for Anthropic Models","icon":"code","href":"/features/manual-caching"},{"title":"Messages API Caching","icon":"layer-group","href":"/features/messages-api-caching"},{"title":"Spend Limits \u0026 Rate Limits","icon":"gauge-max","href":"/features/api-limits"},{"title":"In-Flight Rate Limits","icon":"arrows-left-right-to-line","href":"/features/in-flight-rate-limits"},{"title":"Bring Your Own Keys","icon":"key","href":"/features/bring-your-own-keys"},{"title":"Service Accounts","icon":"robot","href":"/features/service-accounts"},{"title":"Prompt Library","icon":"book","href":"/features/prompt-library"}]},{"group":"Model Capabilities","pages":[{"title":"Streaming Responses","icon":"stream","href":"/features/streaming"},{"title":"Structured Outputs","icon":"brackets-curly","href":"/features/structured-outputs"},{"title":"Decisions","icon":"scale-balanced","href":"/features/decisions"},{"title":"Reasoning","icon":"brain","href":"/features/reasoning"},{"title":"Image Understanding","icon":"camera","href":"/features/image-understanding"},{"title":"Image Generation","icon":"image","href":"/features/image-generation"},{"title":"PDF Support","icon":"file-pdf","href":"/features/pdf-support"},{"title":"Video Input","icon":"video","href":"/features/video-input"},{"title":"Web Search","icon":"globe","href":"/features/web-search"}]},{"group":"Analytics \u0026 Monitoring","pages":[{"title":"Overview","icon":"gauge-high","href":"/features/overview"},{"title":"Logs \u0026 Traces","icon":"list","href":"/features/logs"},{"title":"Usage Analytics","icon":"chart-line","href":"/features/usage-analytics"},{"title":"Analytics Exports","icon":"file-export","href":"/features/analytics-exports"},{"title":"Cost Tracking","icon":"dollar-sign","href":"/features/cost-tracking"},{"title":"Performance Monitoring","icon":"gauge-high","href":"/features/performance-monitoring"},{"title":"Tool Call Analytics","icon":"screwdriver-wrench","href":"/features/tool-call-analytics"},{"title":"Analytics Headers","icon":"tags","href":"/features/analytics-headers"},{"title":"Request Metadata","icon":"chart-line","href":"/features/request-metadata"},{"title":"Request Feedback","icon":"comment-pen","href":"/features/request-feedback"},{"title":"Session Reconstruction","icon":"wrench","href":"/features/session-reconstruction"},{"title":"Key Management API","icon":"key","href":"/features/key-management-api"}]},{"group":"Access Control","pages":[{"title":"Approved Models","href":"/features/approved-models"},{"title":"Access Lists","href":"/features/access-lists"}]},{"group":"Organization","pages":[{"title":"User Management","href":"/features/users"},{"title":"Groups Management","href":"/features/groups"},{"title":"Platform Integrations","href":"/features/platform-integrations"},{"title":"Single Sign-On (SSO)","href":"/features/sso"},{"title":"Billing","icon":"credit-card","href":"/features/billing"},{"title":"Spending Alerts","href":"/features/alerts"},{"title":"Webhook Signatures","icon":"signature","href":"/features/webhook-signatures"},{"title":"Static Egress IPs","icon":"network-wired","href":"/features/static-ips"},{"title":"Guardrails","href":"/features/guardrails"},{"title":"RBAC (Role-Based Access Control)","href":"/features/rbac"},{"title":"Data Privacy \u0026 Zero Data Retention","icon":"lock","href":"/features/data-privacy"},{"title":"Compliance","icon":"shield-check","href":"/features/compliance-report"}]},{"group":"MCP Gateway","pages":[{"title":"Overview","icon":"plug","href":"/features/mcp-gateway"},{"title":"MCP Server Management","icon":"server","href":"/features/mcp-server-management"},{"title":"User Key Management","icon":"key","href":"/features/mcp-user-keys"},{"title":"MCP Analytics","icon":"chart-line","href":"/features/mcp-analytics"},{"title":"AI Tool Integration","icon":"plug-circle-plus","href":"/features/mcp-integration"}]}]},{"tab":"Integrations","pages":[{"title":"Integrations","href":"/integrations/requesty-cli"}]},{"tab":"Inference API","pages":[{"title":"Inference API","href":"/api-reference/inference-apis"}]},{"tab":"Management API","pages":[{"title":"Management API","href":"/api-reference/management-apis"}]}]},"basePath":"","title":"Latency-Based Routing - Requesty Docs","buildId":"dpl_5tKr6cUUeuVJdEZ9JAEY3h4soMJ8","deploymentId":"dpl_5tKr6cUUeuVJdEZ9JAEY3h4soMJ8","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-B90Qhg8r.js","DynamicMarkdown-DpAS3GCb.js","zoom-image-lightbox-9bQKnClW.js","lightbox-handle-r17bVUz3.js"]}