spb/zyquo-cloud Public MIT
Native macOS AI chat client for 12 cloud providers — your keys, every cloud model, one beautiful chat.
Swift 97.4%
Shell 1.7%
Makefile 1%
1<!--2 deepinfra.md3 Zyquo Cloud4 Author: Simon-Pierre Boucher5 Mail: contact@spboucher.ai6-->78# DeepInfra — Provider Research (Phase 0)910Researched 2026-07-30 against official docs (https://docs.deepinfra.com — note: `deepinfra.com/docs/*`11now 308-redirects there) and a live authenticated `GET /v1/openai/models` probe12(`/tmp/zyquo-probe/deepinfra.json`, 174 models, mixed modalities). Each entry embeds13`metadata.context_length`, `metadata.max_tokens`, and `metadata.pricing` (USD per 1M tokens) —14authoritative for existence, context, and pricing.1516---1718## 1. Base URL & Endpoints1920- **OpenAI-compatible base URL:** `https://api.deepinfra.com/v1/openai` (what Zyquo Cloud uses)21 - `POST /v1/openai/chat/completions`22 - `POST /v1/openai/completions`23 - `GET /v1/openai/models`24 - `POST /v1/openai/embeddings` (out of scope)25- **Native inference endpoints** also exist (`https://api.deepinfra.com/v1/inference/{model}`) with per-model schemas — documented for completeness only; Zyquo Cloud uses the OpenAI-compatible surface exclusively.2627Reference: https://docs.deepinfra.com/chat/overview2829## 2. Authentication3031`Authorization: Bearer <DEEPINFRA_TOKEN>` — standard Bearer. Confirmed by docs and live probe.3233## 3. Chat Model Catalog (curated main chat models)3435Notable: DeepInfra proxies **Anthropic Claude** and **Google Gemini** models under its own billing —36useful as a single-key fallback. Pricing/context below are from the live probe (`metadata`), USD per 1M37tokens. `metadata.max_tokens` equals `context_length` for every chat entry (listing does not expose a38distinct max-output figure — treat real max output as unverified per model). Caps legend: **V** vision,39**T** tools, **R** reasoning, **J** JSON mode. All stream. Flags marked * inferred from model family, not40individually verified on DeepInfra.4142### Proxied frontier models4344| Model ID (exact) | Context | $ In | $ Out | $ Cached | Caps |45|---|---|---|---|---|---|46| `anthropic/claude-fable-5` | 1,000,000 | 10.00 | 50.00 | — | V* T R J* |47| `anthropic/claude-opus-5` | 1,000,000 | 5.00 | 25.00 | — | V* T R J* |48| `anthropic/claude-opus-4-8` | 1,000,000 | 5.00 | 25.00 | — | V* T R J* |49| `anthropic/claude-opus-4-7` | 1,000,000 | 5.00 | 25.00 | — | V* T R J* |50| `anthropic/claude-sonnet-5` | 1,000,000 | 2.00 | 10.00 | — | V* T R J* |51| `anthropic/claude-sonnet-4-6` | 1,000,000 | 3.00 | 15.00 | — | V* T R J* |52| `anthropic/claude-haiku-4-5` | 200,000 | 1.00 | 5.00 | — | V* T R J* |53| `google/gemini-3.1-pro` | 1,000,000 | 2.00 | 12.00 | — | V* T R J* |54| `google/gemini-3.5-flash` | 1,000,000 | 1.50 | 9.00 | — | V* T R J* |55| `google/gemini-3.1-flash-lite` | 1,000,000 | 0.25 | 1.50 | — | V* T J* |56| `google/gemini-2.5-pro` | 1,000,000 | 1.25 | 10.00 | — | V* T R J* |57| `google/gemini-2.5-flash` | 1,000,000 | 0.30 | 2.50 | — | V* T R J* |5859### Open-weight chat models6061| Model ID (exact) | Context | $ In | $ Out | $ Cached | Caps |62|---|---|---|---|---|---|63| `deepseek-ai/DeepSeek-V4-Pro` | 1,048,576 | 1.30 | 2.60 | 0.10 | T J R* |64| `deepseek-ai/DeepSeek-V4-Flash` | 1,048,576 | 0.09 | 0.18 | 0.018 | T* J* |65| `deepseek-ai/DeepSeek-V3.2` | 163,840 | 0.26 | 0.38 | 0.13 | T* J* R* |66| `deepseek-ai/DeepSeek-V3.1-Terminus` | 163,840 | 0.27 | 0.95 | 0.13 | T* J* R (hybrid) |67| `deepseek-ai/DeepSeek-V3.1` | 163,840 | 0.25 | 0.95 | 0.13 | T* J* R (hybrid) |68| `deepseek-ai/DeepSeek-V3-0324` | 163,840 | 0.24 | 0.90 | 0.135 | T* J* |69| `deepseek-ai/DeepSeek-R1-0528` | 163,840 | 0.50 | 2.15 | 0.35 | R |70| `moonshotai/Kimi-K2.7-Code` | 262,144 | 0.74 | 3.50 | 0.15 | T J R* |71| `moonshotai/Kimi-K2.6` | 262,144 | 0.75 | 3.50 | 0.15 | T J R* |72| `moonshotai/Kimi-K2.5` | 262,144 | 0.45 | 2.25 | 0.07 | T J |73| `zai-org/GLM-5.2` | 1,048,576 | 0.75 | 2.40 | 0.14 | T J R* |74| `zai-org/GLM-5.1` | 202,752 | 1.05 | 3.50 | 0.205 | T* J* R* |75| `zai-org/GLM-5` | 202,752 | 0.60 | 2.08 | 0.12 | T* J* R* |76| `zai-org/GLM-4.7` | 202,752 | 0.40 | 1.75 | 0.08 | T* J* R* |77| `zai-org/GLM-4.7-Flash` | 202,752 | 0.06 | 0.40 | 0.01 | T* J* R* |78| `zai-org/GLM-4.6` | 202,752 | 0.50 | 2.00 | 0.10 | T* J* R* |79| `Qwen/Qwen3.7-Max` | 256,000 | 2.50 | 7.50 | 0.50 | T* J* R* |80| `Qwen/Qwen3.6-35B-A3B` | 262,144 | 0.10 | 0.95 | — | T* J* |81| `Qwen/Qwen3.6-27B` | 262,144 | 0.32 | 3.20 | — | T* J* |82| `Qwen/Qwen3.5-397B-A17B` | 262,144 | 0.45 | 3.00 | 0.22 | T* J* R* |83| `Qwen/Qwen3.5-122B-A10B` | 262,144 | 0.29 | 2.40 | — | T* J* R* |84| `Qwen/Qwen3.5-35B-A3B` | 262,144 | 0.14 | 1.00 | 0.05 | T* J* |85| `Qwen/Qwen3.5-9B` | 262,144 | 0.10 | 0.15 | — | T* J* |86| `Qwen/Qwen3-Max` | 256,000 | 1.20 | 6.00 | 0.24 | T* J* |87| `Qwen/Qwen3-Max-Thinking` | 256,000 | 1.20 | 6.00 | 0.24 | R T* J* |88| `Qwen/Qwen3-235B-A22B-Instruct-2507` | 262,144 | 0.09 | 0.55 | — | T* J* |89| `Qwen/Qwen3-235B-A22B-Thinking-2507` | 262,144 | 0.23 | 2.30 | 0.20 | R T* J* |90| `Qwen/Qwen3-Next-80B-A3B-Instruct` | 262,144 | 0.09 | 1.10 | — | T* J* |91| `Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo` | 262,144 | 0.30 | 1.00 | 0.10 | T J |92| `Qwen/Qwen3-VL-235B-A22B-Instruct` | 262,144 | 0.20 | 0.88 | 0.11 | V T* J* |93| `Qwen/Qwen3-VL-30B-A3B-Instruct` | 262,144 | 0.15 | 0.60 | — | V T* J* |94| `meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8` | 1,048,576 | 0.20 | 0.80 | — | V T J |95| `meta-llama/Llama-4-Scout-17B-16E-Instruct` | 327,680 | 0.10 | 0.30 | — | V T J |96| `meta-llama/Llama-3.3-70B-Instruct-Turbo` | 131,072 | 0.10 | 0.32 | — | T J |97| `meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo` | 131,072 | 0.02 | 0.04 | — | T J |98| `openai/gpt-oss-120b` | 131,072 | 0.037 | 0.17 | — | R T J (`reasoning_effort`) |99| `openai/gpt-oss-120b-Turbo` | 131,072 | 0.15 | 0.60 | — | R T J |100| `openai/gpt-oss-20b` | 131,072 | 0.03 | 0.14 | — | R T J |101| `MiniMaxAI/MiniMax-M3` | 524,288 | 0.30 | 1.20 | 0.06 | T* J* R* |102| `MiniMaxAI/MiniMax-M2.7` | 196,608 | 0.25 | 1.00 | 0.05 | T* J* R* |103| `nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B` | 262,144 | 0.50 | 2.20 | 0.10 | T* J* R* |104| `nvidia/NVIDIA-Nemotron-3-Super-120B-A12B` | 262,144 | 0.085 | 0.40 | — | T* J* R* |105| `nvidia/Nemotron-3-Nano-30B-A3B` | 262,144 | 0.05 | 0.20 | 0.025 | R* |106| `ByteDance/Seed-2.0-pro` | 256,000 | 0.50 | 3.00 | 0.10 | T* J* R* (unverified caps) |107| `ByteDance/Seed-2.0-mini` | 256,000 | 0.10 | 0.40 | 0.02 | T* J* (unverified caps) |108| `XiaomiMiMo/MiMo-V2.5` | 262,144 | 0.40 | 2.00 | 0.08 | R* (unverified caps) |109| `XiaomiMiMo/MiMo-V2.5-Pro` | 1,048,576 | 1.00 | 3.00 | 0.20 | R* (unverified caps) |110| `mistralai/Mistral-Small-3.2-24B-Instruct-2506` | 128,000 | 0.075 | 0.20 | — | V T* J* |111| `mistralai/Mistral-Nemo-Instruct-2407` | 131,072 | 0.019 | 0.03 | — | — |112| `google/gemma-4-31B-it` | 262,144 | 0.13 | 0.38 | — | V* T* J* |113| `google/gemma-3-27b-it` | 131,072 | 0.08 | 0.16 | — | V* |114| `tencent/Hy3` | 262,144 | 0.14 | 0.58 | 0.035 | (unverified caps) |115| `stepfun-ai/Step-3.7-Flash` | 262,144 | 0.20 | 1.15 | 0.04 | (unverified caps) |116| `thinkingmachines/Inkling` | 524,288 | 1.00 | 4.05 | 0.17 | T* J* R* |117| `microsoft/phi-4` | 16,384 | 0.07 | 0.14 | — | — |118119Also present (skip or list under "more"): Hermes-3 405B/70B, Llama-Guard-4 (moderation), MythoMax,120Sao10K roleplay models, gemma-4 turbo/ultra variants, `deepcogito`, `Qwen3-32B/30B-A3B/14B`, etc.121122## 4. Request/Response Format123124**OpenAI-compatible.** Point any OpenAI SDK at `base_url=https://api.deepinfra.com/v1/openai`. Standard125`choices[].message`, `usage`, `finish_reason`. Docs caveat: "We may not be 100% compatible with all126OpenAI parameters" — unknown params are generally ignored. DeepInfra also has native per-model inference127endpoints (`/v1/inference/{model}`) with different schemas — **not used by Zyquo Cloud**.128129Supported params include: `model`, `messages`, `max_tokens`, `temperature` (0–2), `top_p`, `stop`, `n`,130`presence_penalty`, `frequency_penalty`, `stream`, `response_format` (JSON mode), `tools`/`tool_choice`,131`reasoning_effort` (reasoning models). Reasoning models return chain-of-thought as132`message.reasoning_content` (DeepSeek convention; verify per model in Phase 7 — unverified field name for133non-DeepSeek models).134135## 5. Streaming136137(https://docs.deepinfra.com/chat/streaming)138139- `stream: true` → OpenAI-style SSE: `data: {chunk}` lines with `choices[].delta.content`, final `data: [DONE]`.140- **Usage is included automatically in the final chunk before `[DONE]`** (when `finish_reason` is populated; token counts match non-streaming). No `stream_options.include_usage` needed (parameter not documented; sending it is harmless).141- On completion the delta becomes `{}` and `finish_reason` is set.142143## 6. Special Parameters144145- `service_tier`: `"priority"` (faster TTFT/throughput, +50% price) or `"flex"` (−20% price, may queue up to ~10 min). Default tier if omitted.146- `fail_fast: true` — reject immediately with HTTP 429 (`"engine_overloaded"` code) instead of queueing when capacity is exceeded; rejected requests are not billed.147- Response continuation pattern: to continue a truncated answer, resend with the truncated assistant message appended (documented technique, not a parameter).148- `reasoning_effort` supported on reasoning-capable models (gpt-oss etc.).149- Prompt caching: automatic on supported models; discounted `cached_input_tokens` pricing appears in the model metadata (no request parameter required — unverified whether a cache-control knob exists).150151## 7. Rate Limits & Errors152153(https://deepinfra.com/docs/advanced/rate-limits)154155- **200 concurrent requests per account** (the primary limit; no published RPM/TPM). Increases via Dashboard → Account request.156- Exceeding it → HTTP 429 "Rate limited"; capacity overload with `fail_fast` → 429 `"engine_overloaded"`.157- Errors are OpenAI-shaped JSON; branch on HTTP status (400/401/404/429/5xx). Retry with backoff on 429/5xx.158159## 8. `/models` Listing160161`GET https://api.deepinfra.com/v1/openai/models` returns OpenAI shape `{"object":"list","data":[...]}` —162but each model carries a rich non-standard `metadata` object:163164```json165{166 "id": "deepseek-ai/DeepSeek-V4-Pro",167 "object": "model",168 "owned_by": "deepinfra",169 "metadata": {170 "description": "...",171 "context_length": 1048576,172 "max_tokens": 1048576,173 "pricing": { "input_tokens": 1.3, "output_tokens": 2.6, "cached_input_tokens": 0.1 }174 }175}176```177178Ideal for dynamic refresh: filter entries where `metadata.context_length` and `pricing.output_tokens`179are non-null (text-gen models); image/video/TTS/ASR entries have null context/pricing fields.180No capability flags (vision/tools) — keep those in the built-in catalog.181