Skip to main content
POST /v1/chat/compare runs one prompt across multiple models concurrently. See Compare for the full guide.

Some models are missing from the result (partial: true)

Model calls are isolated — if one fails or hits the 120s hard timeout, the others continue and the response carries partial: true. Check each result’s error / error_code; a partial response is expected behavior, not a failure of the whole call.

The whole request failed with 502 all_models_failed

If every model fails, the request fails with 502 and code all_models_failed. This error uses a different shape from the standard envelope: it is nested under detail and has no request_id.
Each entry in detail.error.details gives one model’s error and error_code. Fix those (a model ID, a policy restriction, a provider outage) and retry.

comparison is null

The synthesis only runs when at least two models succeed. It is also null when you set skip_comparison: true, when every judge in the chain failed, or when you didn’t name a comparison_model and your key’s model policy permits none of the default judges.

Too many / duplicate models

models accepts 1–10 entries. Duplicates are removed automatically, so listing the same model twice won’t run it twice.

Billing is higher than expected

Compare bills N+1 usage events: one per fan-out model plus the synthesis/comparison call. If the comparison model fails and a fallback judge takes over, each judge attempt is recorded as its own usage event, but only the judge that produced the synthesis is charged. (For rate limits, though, the whole comparison counts as a single request against RPM/RPD.) Set skip_comparison: true to drop the comparison call if you only need raw outputs.

Streaming behaves differently than chat

There are two modes:
  • With comparison (default) — fan-out models are non-streaming; only the final comparison text streams token-by-token (comparison_chunk).
  • skip_comparison: true — each model streams concurrently, tagged by model name (model_chunk / model_stream_done).
Watch for comparison_fallback_used in the done event if the comparison model had to fall back.

Still stuck?

See the Mesh API error reference or email contact@meshapi.ai.