provider_id, availability, and portable fulfillment
constraints. It never exposes a lab SKU, UID, recipe, account, or raw provider
payload.
Availability and exact costs
Anavailable WHCC offer carries a verified exact USD unit_cost_cents and a
pricing_revision. That is discovery data, not a locked price or shipping
quote. The response also includes fulfillment_constraints: a fulfillment
group and, where applicable, eligible shipping services and requirements.
unknown and unavailable are intentionally unpriced. Richmond Pro Lab
(rpl) is currently an unknown canonical offer: it has no currency,
unit_cost_cents, or pricing_revision. Do not manufacture a zero price or
use an unknown offer as a fallback. An unavailable or unknown offer is not
chargeable.
Runtime readiness can omit a verified WHCC offer when that provider lane is
not configured. Treat the returned list as current discovery state, not a
guarantee that a later checkout will submit.
Create a quote
UsePOST /v1/print-orders/quote with an order and routing object. Quotes
are server-calculated, expire after 15 minutes, and freeze the selected
provider’s public offer evidence.
provider, provider_offer_lines,
expires_at, and price. Every quoted offer line is available and has the
selected provider, configuration, exact unit cost, quantity, line subtotal,
and pricing revision. Those subtotals reconcile to
price.merchandise_cents. price contains server-calculated merchandise,
shipping, tax, and Batch Relay API access-fee fields.
No provider-offer warning or multi-provider fulfillment-group field is exposed
by this HTTP quote contract. Do not depend on domain-model-only warnings in an
API client.
Routing remains one provider
studio_default and single_provider require one provider to fulfill every
line; neither silently substitutes another lab. If the selected provider cannot
fulfill the order, the API returns 422 preferred_provider_incomplete with the
unsupported lines and any whole-order alternatives.
best_available is represented so clients can handle the intent, but it
currently returns 422 split_fulfillment_unavailable. Split-provider HTTP
submission is not enabled. It remains blocked until durable order storage can
represent fulfillment groups, their independent shipping charges, submission
states, and recovery safely.
Preserve offer identity and units
Matchproduct.id, product.revision, configuration and provider_id
exactly. Preserve pricing_revision as approved pricebook evidence. An approved
zero is a valid amount; missing numeric data must stay unknown.
unit_cost_cents applies to one ordered quantity. Use the product’s
units_per_quantity for physical output. Quantity 2 of a 12-card pack produces
24 cards and consumes two pack costs. Do not apply the amount per individual
card. Quote observations cannot approve a new rate. Public offers use the
deployment’s environment and do not authorize a different credential lane or
replace protected account-specific costs.