> ## Documentation Index
> Fetch the complete documentation index at: https://docs.batchrelay.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Provider Routing

> Select one lab per quote and compare labs by event.

Each Batch Relay quote resolves exactly one provider. The precedence is:

1. `provider_id` on the quote request.
2. The selected event/cohort provider when `event_id` is supplied.
3. The API account's optional provider default.
4. Legacy WHCC fallback.

The quote returns the resolved provider and immutable capability/recipe
revisions. Submission uses that frozen route. It cannot switch providers, mix
providers per line, silently substitute a product, or split one order across
labs.

This permits concurrent event testing: one event can select WHCC while another
selects a comparable provider. Change an event's selection only affects future
compatibility checks and quotes; existing quotes, paid orders, and history stay
bound to their original provider.

The public `provider_id` values are `whcc`, `rpl`, and `millers`. This is a
routing contract, not a promise that each provider is enabled for every
product. A provider must have verified capability, credentials, an adapter,
and an enabled fulfillment executor before an order can reach it. WHCC is the
only enabled fulfillment executor today; preview or unavailable providers fail
before payment rather than silently falling back to WHCC.

Call `POST /v1/providers/compatibility` before changing an event. If any line
is unavailable, quote creation fails before payment with
`provider_product_unavailable` and line-specific results.
