Live API probes — 2026-07-30 (real keys, ground truth)
All 12 providers were probed live today. Every key authenticated and every provider returned a
successful streamed chat completion (HTTP 200). Raw captures in /tmp/zyquo-probe/ (models JSON
sse/*.txt).
/models listing results
| Provider | Endpoint | Result |
|---|---|---|
| OpenAI | GET https://api.openai.com/v1/models (Bearer) |
200 — 132 models |
| Anthropic | GET https://api.anthropic.com/v1/models?limit=100 (x-api-key + anthropic-version) |
200 — 11 models |
| xAI | GET https://api.x.ai/v1/models (Bearer) |
200 — 10 models |
| Mistral | GET https://api.mistral.ai/v1/models (Bearer) |
200 — 60 models |
| Gemini | GET https://generativelanguage.googleapis.com/v1beta/models?key=… |
200 — 41 generateContent-capable |
| Qwen/DashScope | GET https://dashscope-intl.aliyuncs.com/compatible-mode/v1/models (Bearer) |
200 — 151 models |
| DeepSeek | GET https://api.deepseek.com/models (Bearer) |
200 — 2 models: deepseek-v4-flash, deepseek-v4-pro |
| Kimi/Moonshot | GET https://api.moonshot.ai/v1/models (Bearer) |
200 — 12 models (kimi-k2.5/k2.6/k2.7-code[-highspeed]/k3, moonshot-v1 family) |
| Perplexity | GET https://api.perplexity.ai/models |
404 — no models endpoint (catalog must be built-in from docs) |
| Together | GET https://api.together.xyz/v1/models (Bearer) |
200 — large catalog (~400KB JSON, embeds context_length + pricing) |
| DeepInfra | GET https://api.deepinfra.com/v1/openai/models (Bearer) |
200 — 174 models |
| Cerebras | GET https://api.cerebras.ai/v1/models (Bearer) |
200 — 3 models: gemma-4-31b, gpt-oss-120b, zai-glm-4.7 |
Streaming chat completion smoke test (all HTTP 200)
Model used per provider: OpenAI gpt-4o-mini, Anthropic claude-haiku-4-5-20251001, xAI grok-4.3,
Mistral mistral-small-latest, Gemini-compat gemini-flash-latest, Qwen qwen-flash,
DeepSeek deepseek-v4-flash, Kimi kimi-k2.5, Perplexity sonar,
Together meta-llama/Llama-3.3-70B-Instruct-Turbo, DeepInfra deepseek-ai/DeepSeek-V4-Flash,
Cerebras gpt-oss-120b.
SSE shape observations (captured live)
- OpenAI:
chat.completion.chunkdeltas; withstream_options:{include_usage:true}the final pre-[DONE]chunk has emptychoicesand a fullusageobject (incl.completion_tokens_details.reasoning_tokens). Chunks carry anobfuscationpadding field — ignore unknown fields when decoding. - Anthropic: named SSE events observed:
message_start,content_block_start,content_block_delta,content_block_stop,message_delta,message_stop, pluspingevents. - DeepSeek:
deepseek-v4-flashemitsdelta.reasoning_contentstring deltas by default (22 reasoning deltas before the answer in a trivial prompt), thendelta.content. Both fields present on every delta (one is null). - Perplexity: chunks include
citations(array of URLs) andsearch_resultsalongsidechoicesandusage; each chunk also duplicates a cumulativemessagenext todelta. - Gemini (OpenAI-compat endpoint): works with Bearer auth; deltas can include
extra_content.google.thought_signature(opaque base64) — must be tolerated/ignored;finish_reason:"length"seen when max_tokens hit mid-thought. - Qwen (compat-mode intl): standard OpenAI chunk shape;
usagenull until final chunk. - Kimi, Mistral, xAI, Together, DeepInfra, Cerebras: standard OpenAI-style chunks,
data: [DONE]terminator.
Consequences for the app
deepseek-v4-flash/v4-proreplace the olddeepseek-chat/deepseek-reasoneraliases in the catalog (verify alias behavior in Phase 7 — the old aliases may still route).- Perplexity requires a fully built-in catalog (no dynamic refresh).
- Cerebras
/modelsreturns fewer models than docs may list — treat docs as the catalog source,/modelsas availability check. - JSON decoders must ignore unknown fields everywhere (OpenAI
obfuscation, Geminiextra_content, Perplexity extras). - Reasoning-delta handling needed for: DeepSeek (
reasoning_content), Qwen thinking models, Anthropic (thinking_delta), Gemini (thought signatures).