# Compatibility matrix

> 103 chat models × 4 client protocols (OpenAI Chat / Anthropic Messages / OpenAI Responses / Gemini Native), marked per model as native / gateway-translated / upstream-converted / unsupported, generated from the live channel table

来源：https://zhonkemodel.dflop.top/en/docs/reference/compatibility-matrix

The platform exposes **four client protocol endpoints**, all reachable with the same `sk-gpushare-*` API key:

| Protocol | Endpoint | Typical clients |
|---|---|---|
| OpenAI Chat | `POST /v1/chat/completions` | the OpenAI SDK and most third-party clients |
| Anthropic Messages | `POST /v1/messages` | the Anthropic SDK, Claude Code |
| OpenAI Responses | `POST /v1/responses` | the OpenAI Responses SDK, Codex CLI |
| Gemini Native | `POST /v1beta/models/{model}:generateContent` / `:streamGenerateContent` | Google's `genai` SDK |

Not every model supports all four. **The matrix is determined by channel wiring** — which kind of upstream channel serves a model, and which protocols that channel declares — not by reasoning from "vendor × protocol". The table below is **generated per model from the live channel table**; see the legend for what each cell means.

## Legend

| Symbol | Meaning |
|---|---|
| **✅** | **Native pass-through** — the client protocol matches the upstream channel's, and the gateway forwards bytes verbatim |
| **🔄 T1** / **🔄 T2** | **Gateway-side translation** — the gateway converts; the response carries an `X-Protocol-Translation` header (see below) |
| **🔄 upstream** | **Upstream-side conversion** — the gateway forwards bytes verbatim and the relay converts internally, so there is **no** `X-Protocol-Translation` header |
| **—** | **No channel** — returns 503 `no_channel_available` (note: 503, not 404) |

The two kinds of 🔄 can be told apart from the response headers:

- **Gateway-side translation** (T1 / T2 below): the gateway converts the request body into the upstream protocol and converts the response back, and the response carries an `X-Protocol-Translation` header.
- **Upstream-side conversion** (marked `🔄 upstream` in the table): the gateway forwards bytes verbatim and the conversion happens inside the upstream service, so there is **no** `X-Protocol-Translation` header. The protocol shape is complete for the client, but features unique to the other protocol (Anthropic's `cache_control`, thinking blocks) aren't guaranteed to survive semantically.

## Gateway-side translation paths

| Path | Direction (client → upstream) | `X-Protocol-Translation` value | Currently exercised? |
|---|---|---|---|
| T1 | OpenAI Chat → Anthropic upstream | `openai_chat_to_anthropic_messages` | ✅ in production (`/v1/chat/completions` traffic on the Claude and trial pools) |
| T2 | OpenAI Chat → Gemini upstream | `openai_chat_to_gemini_native` | ✅ in production (`/v1/chat/completions` traffic on the Gemini pool) |
| T3 | Anthropic Messages → OpenAI upstream | `anthropic_messages_to_openai_chat` | implemented, no channel combination currently triggers it |
| T4 | Gemini Native → OpenAI upstream | `gemini_native_to_openai_chat` | implemented, no channel combination currently triggers it |
| T6 | Gemini Native → Anthropic upstream | `anthropic_messages_to_gemini_native` | implemented, no channel combination currently triggers it |

T3, T4 and T6 are reserved for future wiring: today all cross-protocol Anthropic Messages and Gemini Native traffic is absorbed by upstream-side conversion, so routing never reaches those three gateway translators.

## Matrix (per model)

The Source column uses opaque codes: **x1** = in-house account pool, **x2** = third-party relay, **x3** = Tencent. Several codes on one model means it has several channels for failover (the column is the union over all of them).

### Anthropic (11)

| Model | OpenAI Chat | Anthropic Messages | OpenAI Responses | Gemini Native | Source |
|---|---|---|---|---|---|
| `claude-fable-5` | 🔄 T1 | ✅ | — | — | x2 |
| `claude-haiku-4-5-20251001` | 🔄 T1 | ✅ | 🔄 upstream | — | x1 x2 |
| `claude-opus-4-5-thinking` | 🔄 T1 | ✅ | — | — | x2 |
| `claude-opus-4-6` | 🔄 T1 | ✅ | 🔄 upstream | — | x1 x2 |
| `claude-opus-4-6-thinking` | ✅ | ✅ | — | — | x1 x2 |
| `claude-opus-4-7` | 🔄 T1 | ✅ | 🔄 upstream | — | x1 x2 |
| `claude-opus-4-8` | 🔄 T1 | ✅ | 🔄 upstream | — | x1 x2 |
| `claude-opus-5` | 🔄 T1 | ✅ | — | — | x2 |
| `claude-sonnet-4-5-20250929` | 🔄 T1 | ✅ | — | — | x2 |
| `claude-sonnet-4-6` | 🔄 T1 | ✅ | 🔄 upstream | — | x1 x2 |
| `claude-sonnet-5` | 🔄 T1 | ✅ | 🔄 upstream | — | x1 x2 |

### OpenAI (7)

| Model | OpenAI Chat | Anthropic Messages | OpenAI Responses | Gemini Native | Source |
|---|---|---|---|---|---|
| `gpt-5.5` | ✅ | 🔄 upstream | 🔄 upstream | — | x1 x2 |
| `gpt-5.6-luna` | ✅ | 🔄 upstream | 🔄 upstream | — | x1 |
| `gpt-5.6-sol` | ✅ | 🔄 upstream | 🔄 upstream | — | x1 |
| `gpt-5.6-terra` | ✅ | 🔄 upstream | 🔄 upstream | — | x1 |
| `gpt-6` | ✅ | 🔄 upstream | 🔄 upstream | — | x1 |
| `gpt-6-astra` | ✅ | 🔄 upstream | 🔄 upstream | — | x1 |
| `gpt-oss-120b-medium` | ✅ | — | — | — | x1 |

### Google (9)

| Model | OpenAI Chat | Anthropic Messages | OpenAI Responses | Gemini Native | Source |
|---|---|---|---|---|---|
| `gemini-3-flash` | ✅ | ✅ | — | ✅ | x1 x2 |
| `gemini-3-flash-agent` | ✅ | — | — | ✅ | x1 |
| `gemini-3-pro` | ✅ | — | — | ✅ | x2 |
| `gemini-3.1-flash-lite` | ✅ | — | — | ✅ | x1 |
| `gemini-3.1-pro-low` | ✅ | ✅ | — | ✅ | x1 x2 |
| `gemini-3.5-flash-low` | ✅ | — | — | ✅ | x1 x2 |
| `gemini-3.6-flash` | ✅ | — | — | ✅ | x1 x2 |
| `gemini-3.7-flash` | ✅ | — | — | ✅ | x1 |
| `gemini-pro-agent` | ✅ | — | — | ✅ | x1 |

### xAI (10)

| Model | OpenAI Chat | Anthropic Messages | OpenAI Responses | Gemini Native | Source |
|---|---|---|---|---|---|
| `grok-3-mini` | ✅ | — | 🔄 upstream | — | x1 |
| `grok-3-mini-fast` | ✅ | — | 🔄 upstream | — | x1 |
| `grok-4.20-0309-non-reasoning` | ✅ | — | 🔄 upstream | — | x1 |
| `grok-4.20-0309-reasoning` | ✅ | — | 🔄 upstream | — | x1 |
| `grok-4.20-multi-agent-0309` | ✅ | — | 🔄 upstream | — | x1 |
| `grok-4.3` | ✅ | — | 🔄 upstream | — | x1 |
| `grok-4.5` | ✅ | — | 🔄 upstream | — | x1 |
| `grok-4.6` | ✅ | — | 🔄 upstream | — | x1 |
| `grok-build-0.1` | ✅ | — | 🔄 upstream | — | x1 |
| `grok-composer-2.5-fast` | ✅ | — | 🔄 upstream | — | x1 |

### Zhipu GLM (8)

| Model | OpenAI Chat | Anthropic Messages | OpenAI Responses | Gemini Native | Source |
|---|---|---|---|---|---|
| `glm-4.7` | ✅ | 🔄 upstream | — | 🔄 upstream | x2 |
| `glm-5` | ✅ | 🔄 upstream | — | 🔄 upstream | x2 x3 |
| `glm-5-turbo` | ✅ | 🔄 upstream | — | 🔄 upstream | x2 |
| `glm-5.1` | ✅ | 🔄 upstream | — | 🔄 upstream | x2 x3 |
| `glm-5.2` | ✅ | 🔄 upstream | — | 🔄 upstream | x2 |
| `glm-5.3` | ✅ | — | — | — | x2 |
| `glm-5.3-flash` | ✅ | — | — | — | x2 |
| `glm-5v-turbo` | ✅ | — | — | — | x2 |

### DeepSeek (6)

| Model | OpenAI Chat | Anthropic Messages | OpenAI Responses | Gemini Native | Source |
|---|---|---|---|---|---|
| `deepseek-v3-0324` | ✅ | — | — | — | x3 |
| `deepseek-v3.1` | ✅ | — | — | — | x2 |
| `deepseek-v3.1-terminus` | ✅ | — | — | — | x3 |
| `deepseek-v3.2` | ✅ | — | — | — | x3 |
| `deepseek-v4-flash` | ✅ | — | — | — | x2 x3 |
| `deepseek-v4-pro` | ✅ | — | — | — | x2 x3 |

### ByteDance Doubao (14)

| Model | OpenAI Chat | Anthropic Messages | OpenAI Responses | Gemini Native | Source |
|---|---|---|---|---|---|
| `doubao-1-5-lite-32k-250115` | ✅ | — | — | — | x2 |
| `doubao-1-5-pro-32k-250115` | ✅ | — | — | — | x2 |
| `doubao-seed-1-6-250615` | ✅ | — | — | — | x2 |
| `doubao-seed-1-6-flash-250828` | ✅ | — | — | — | x2 |
| `doubao-seed-1-6-vision` | ✅ | — | — | — | x2 |
| `doubao-seed-1-8-251228` | ✅ | — | — | — | x2 |
| `doubao-seed-2-0-code-preview-260215` | ✅ | — | — | — | x2 |
| `doubao-seed-2-0-lite-260215` | ✅ | — | — | — | x2 |
| `doubao-seed-2-0-lite-260428` | ✅ | — | — | — | x2 |
| `doubao-seed-2-0-mini-260215` | ✅ | — | — | — | x2 |
| `doubao-seed-2-0-mini-260428` | ✅ | — | — | — | x2 |
| `doubao-seed-2-0-pro-260215` | ✅ | — | — | — | x2 |
| `doubao-seed-2-1-pro-260628` | ✅ | — | — | — | x2 |
| `doubao-seed-2-1-turbo-260628` | ✅ | — | — | — | x2 |

### Tencent Hunyuan (4)

| Model | OpenAI Chat | Anthropic Messages | OpenAI Responses | Gemini Native | Source |
|---|---|---|---|---|---|
| `hunyuan-2.0-instruct-20251111` | ✅ | — | — | — | x3 |
| `hunyuan-2.0-thinking-20251109` | ✅ | — | — | — | x3 |
| `hunyuan-role-latest` | ✅ | — | — | — | x3 |
| `hy3` | ✅ | — | — | — | x2 |

### Moonshot Kimi (4)

| Model | OpenAI Chat | Anthropic Messages | OpenAI Responses | Gemini Native | Source |
|---|---|---|---|---|---|
| `kimi-k2.5` | ✅ | — | — | — | x2 x3 |
| `kimi-k2.6` | ✅ | — | — | — | x2 x3 |
| `kimi-k2.7-code` | ✅ | — | — | — | x2 |
| `kimi-k3` | ✅ | — | — | — | x2 |

### MiniMax (3)

| Model | OpenAI Chat | Anthropic Messages | OpenAI Responses | Gemini Native | Source |
|---|---|---|---|---|---|
| `MiniMax-M2.5` | ✅ | — | — | — | x3 |
| `MiniMax-M2.7` | ✅ | — | — | — | x3 |
| `MiniMax-M3` | ✅ | — | — | — | x2 |

### Alibaba Qwen (25)

| Model | OpenAI Chat | Anthropic Messages | OpenAI Responses | Gemini Native | Source |
|---|---|---|---|---|---|
| `qwen-flash` | ✅ | — | — | — | x2 |
| `qwen-long` | ✅ | — | — | — | x2 |
| `qwen-mt-turbo` | ✅ | — | — | — | x2 |
| `qwen-plus` | ✅ | — | — | — | x2 |
| `qwen3-coder-plus` | ✅ | — | — | — | x2 |
| `qwen3-max` | ✅ | — | — | — | x2 |
| `qwen3-max-preview` | ✅ | — | — | — | x2 |
| `qwen3-omni-flash` | ✅ | — | — | — | x2 |
| `qwen3-vl-flash` | ✅ | — | — | — | x2 |
| `qwen3-vl-plus` | ✅ | — | — | — | x2 |
| `qwen3.5-122b-a10b` | ✅ | — | — | — | x2 |
| `qwen3.5-27b` | ✅ | — | — | — | x2 |
| `qwen3.5-35b-a3b` | ✅ | — | — | — | x2 |
| `qwen3.5-397b-a17b` | ✅ | — | — | — | x2 |
| `qwen3.5-flash` | ✅ | — | — | — | x2 |
| `qwen3.5-plus` | ✅ | — | — | — | x2 |
| `qwen3.6-27b` | ✅ | — | — | — | x2 |
| `qwen3.6-35b-a3b` | ✅ | — | — | — | x2 |
| `qwen3.6-flash` | ✅ | — | — | — | x2 |
| `qwen3.6-max-preview` | ✅ | — | — | — | x2 |
| `qwen3.6-plus` | ✅ | — | — | — | x2 |
| `qwen3.7-flash` | ✅ | — | — | — | x2 |
| `qwen3.7-max` | ✅ | — | — | — | x2 |
| `qwen3.7-plus` | ✅ | — | — | — | x2 |
| `qwen3.8-27b` | ✅ | — | — | — | x2 |
| `qwen3.8-max` | ✅ | — | — | — | x2 |

### Xiaomi MiMo (1)

| Model | OpenAI Chat | Anthropic Messages | OpenAI Responses | Gemini Native | Source |
|---|---|---|---|---|---|
| `mimo-v2.5-pro` | ✅ | — | — | — | x2 |

> Image / video / music / voice SKUs use their own endpoint families and are outside this 4-protocol matrix — see [Image / video APIs](./media-apis.md) and [Full model list](./models.md).

## Side effects of a translated path

On a **gateway-side translation** (T1 / T2) the response carries diagnostic headers:

```http
X-Protocol-Translation: openai_chat_to_anthropic_messages
X-Protocol-Warning: response_format=json_object dropped (Anthropic has no equivalent); n=2 dropped (Anthropic returns one completion)
```

- The `X-Protocol-Translation` value is `{client protocol}_to_{upstream protocol}` (see the table above).
- `X-Protocol-Warning` is generated from the fields **actually dropped** on this request, joined with `; `. The header is absent when nothing was dropped. Common drops:
  - OpenAI Chat → Anthropic (T1): `response_format`, `n`, `tools.image_generation` and other fields Anthropic has no concept of
  - Anthropic → OpenAI (T3, reserved): `cache_control` markers
  - Gemini → Anthropic (T6, reserved): `safetySettings` / `cachedContent` / `codeExecution`

If your request depends heavily on those fields, pick a protocol endpoint that carries them natively (the ✅ columns). **Upstream-side conversion** (the "upstream conversion" cells) carries neither header — the gateway only sees a byte stream, and what gets dropped is up to the upstream.

## Checking a combination yourself

```bash
# send a request with your key and look at the HTTP status and response headers
curl -i https://zhonkezhonkeapi.dflop.top/v1/chat/completions \
  -H "Authorization: Bearer sk-gpushare-xxx" \
  -H "Content-Type: application/json" \
  -d '{"model":"<model-id>","messages":[{"role":"user","content":"hi"}]}'
```

- **200** — the combination works. An `X-Protocol-Translation` header means a gateway-side translation path; its absence means native pass-through or upstream-side conversion.
- **400 `model_not_found`** — the model id isn't in the registry at all (typo, or retired). Identical **on every protocol**, with a message like `` model `xxx` is not available ``.
- **503 `no_channel_available`** — the model exists but has no channel **on the protocol you used**. Try an endpoint marked ✅ or 🔄 in the matrix (`/v1/messages`, `/v1/responses` or `/v1beta/models/{id}:generateContent`).

If a — cell returns 200 in practice, trust the response — channel wiring changes ahead of the docs. Note that the three protocols return differently shaped error bodies (each follows its own official schema) — see [Error codes](./errors.md).

## How current is this?

The tables on this page are generated from the live channel table (last generated 2026-08-18); they need regenerating whenever channel wiring changes. For the latest model list:

- Public catalog: [`GET /api/v1/models/public`](https://zhonkezhonkeapi.dflop.top/api/v1/models/public) (no auth; includes `callable=false` placeholder SKUs and non-chat SKUs, so filter on `callable` and `endpoint_type` when consuming it from a script)
- Model plaza: [zhonkemodel.dflop.top/models](https://zhonkezhonkemodel.dflop.top/models)
