all platform products

Pick the best model. Route around the broken one.

A quality aware router that watches every call. When your primary degrades, by error, latency, or output quality, traffic spills to a backup in <120ms. Set it once; never page on call again.

  • WHATAn auto failover layer between your code and every model provider.
  • WHYQuality, latency and errors are watched live. Failover fires before pagerduty.
  • HOWAdd router.fallback to any API call. The trace shows what fired.
ROUTER · LIVE
all healthy
primaryseedance-2.0-i2v640msserving
f.b 1wan-2.7580msok
f.b 2veo-3720msok
watching · latency · errors · quality drift
failover
idle
pages fired
0
user delay
0ms
primary degrades · router spills in <120ms · users never see it
<120ms
failover latency
97×
fewer user-visible errors
99.99%
effective uptime
every
call routed

Quality aware. Latency aware. Live.

The router doesn’t just retry on 5xx. It watches output quality, latency, and provider health, and reroutes traffic the moment any signal degrades. Set fallbacks once; we handle the chaos.

mechanism01
routing: "quality aware"

Quality aware fallback

Most routers retry on 5xx. Ours measures output drift in real time, perceptual hashing on images, audio fingerprinting on TTS, and reroutes the moment the signal degrades. The check lives on the call path; no separate ML pipeline.

mechanism02
threshold_p95: 800 // ms

Latency thresholds

Set a p95 threshold per provider. When one breaches, the router shifts traffic until it recovers, globally, per-tier, or per-experiment. Every failover lands in the trace with a reason.

mechanism03
cohort: user.id

Sticky cohorts

Variant assignment is sticky-by-user. The same user always lands on the same provider until the router has a reason to switch, keeping cohort data clean for A/B tests and tier-based pricing.

seedance-2.0 just degraded. wan-2.7 took over.

A real failover at 03:14 AM. User latency unchanged, no on call paged, traced end to end.

47reqs / sec
▸ live logs
$each("seedance-2.0-i2v", input, { fallback: ["wan-2.7"] })
[03:14:22] seedance-2.0 · 200 · 892ms · trace_8f2a
[03:14:24] seedance-2.0 · 503 · upstream timeout · trace_8f2c
[03:14:24] failover armed → wan-2.7
[03:14:24] wan-2.7 · 200 · 124ms · trace_8f2c · ✓ recovered
[03:14:25] seedance-2.0 · 200 · 901ms · trace_8f2d
#no pages fired · uptime preserved · 99.99%
$
▸ what happens
POST /v1/run · request flow
primaryseedance-2.0-i2v200503503200
↳ failover
fallbackwan-2.7--200-
recovered in 124ms · user latency unchanged
region: us-east-1 · eu-west-1 · apac-1

Three signals. One decision. Zero pages.

The router doesn’t just retry on 5xx. It watches latency, error rate, and output quality on every call, and reroutes the moment any of them slips, before pagerduty notices.

01TRIGGER

Three signals, watched live.

Latency p95 breach. 5xx error spike. Output quality drift. Any one pulls the trigger.

latency p95
th: 800ms640ms1.42s
error rate
th: 2%0.3%4.7%
quality drift
th: -3σ-0.2σ-4.1σ
02DECISION

Score every candidate. Pick the best.

The router scores each fallback by recent health, latency, and quality. Highest score wins. Decision in <40ms.

scoring 3 candidatesdecision · 38ms
seedance-2.0
0.31
wan-2.7
0.94
veo-3
0.78
winner: wan-2.7 · routing to it
03OUTCOME

Trace logs the swap. Users see nothing.

The decision and reason land in the trace. Sticky cohorts keep the user on the new provider until conditions change.

trace · req_8f2a✓ served
primaryseedance-2.0-i2v1422ms
routerscoring38ms
fallbackwan-2.71180ms

Reach for router when…

01

It's 3:14 AM and seedance-2.0 just died

Your on call hasn't slept in two days. The dashboard is red. Users are seeing broken videos. Router catches this 124ms in, before your pager fires, before users notice, before the team reaches Slack.

incident.caught = true
02

Your bill jumped 40% this week

Cost shifts when fallbacks fire, wan-2.7 might be 2× the cost of seedance-2.0, and you have no idea which calls switched. Router writes the served-provider on every trace; finance gets the answer in two clicks.

trace.served_by · per call
03

p95 tripled overnight, no one knows why

A provider degraded silently, same status codes, slower outputs. Without router you'd be hunting in logs at 11 PM. With it, the failover already fired and the trace tells you which provider went bad and when.

p95: 540ms → 1.42s → spilled
04

You're shipping to 3 regions on day 30

Single-provider capacity has a ceiling, region throttles, daily limits, model deprecations land at the worst time. Router lets you shop across providers without rewriting a single call site.

regions: us, eu, apac

Other products you’ll use alongside this.

* FAQ

FAQ

01 / 06

What is the each::labs router?

The each::labs router is a quality-aware AI model router that monitors every call and reroutes traffic to a backup model in under 120ms when the primary degrades on error rate, latency, or output quality, keeping production apps online during upstream incidents.

Stop writing retry loops. Start routing.

Router is included on every plan. Quality aware mode + custom fallback chains on Pro and up.