Syntax
model accepts a string (1 model) or an array (1 to 8 ordered candidates):
When fallback triggers
Pre-flight skip
If a candidate doesn’t support a required capability (zdr: true, response_format) or is blocked by the org’s ZDR config, it gets skipped rather than failing. Reasons appear in skipped:
zdr_not_verified— no verified ZDR policyzdr_org_required— org requires ZDR and candidate isn’t verifiedstructured_outputs_not_supported— no structured outputs supportmodel_not_found,no_adapter— catalog or configuration
Successful response
When all fail
Pricing
Charges go againstgeekhub.final_model. Failed attempts do not generate token charges to the user but appear in /dashboard/usage with statusCode ≠ 200.
Streaming
Withstream: true, fallback only works if failure occurs before the first chunk. Once your client starts receiving tokens, switching models isn’t possible; errors are emitted as SSE events and the stream aborts.
Auto routing by cost or latency
Instead of ordering candidates yourself, let the gateway order them by strategy:cheapest— sorts by input+output price ascending. Predictable, no history required.fastest— uses p50 latency over the last hour (min 10 requests per model). Falls back tocheapestif there isn’t enough data.balanced— 60% cost + 40% latency, both normalized 0-1.
model list. Response includes the applied order: