The providers page already covers openai_legacy for Chat Completions hosts. Three details are easy to get wrong:
type must be openai_legacy. openai_responses is the wrong wire for a Chat Completions-first host. /login only covers Kimi Code / Moonshot platforms; it will not set a custom host.
base_url is the /v1 root, not /v1/chat/completions.
- Shell
export OPENAI_API_KEY=... is not read. The key goes in ~/.kimi/config.toml.
PZERO is a live OpenAI-compatible host. Catalog: GET https://api.pzero.studio/v1/models. Default text id: deepseek-v4-flash. Prepaid Bearer key (pzero_…). POST /v1/responses exists (401 without a key, not 404) but Chat Completions is the working path for agent tools.
# ~/.kimi/config.toml
default_model = "pzero"
[providers.pzero]
type = "openai_legacy"
base_url = "https://api.pzero.studio/v1"
api_key = "pzero_…"
[models.pzero]
provider = "pzero"
model = "deepseek-v4-flash"
Do not set type = "openai_responses". Do not run /login after this file is in place. Do not prefix model with openai/ (that prefix is for OpenRouter / LiteLLM).
No first-party plugin asked. If a named vendor subsection is too much, the gotchas above are the docs gap; the block is a worked example for searchers.
The providers page already covers
openai_legacyfor Chat Completions hosts. Three details are easy to get wrong:typemust beopenai_legacy.openai_responsesis the wrong wire for a Chat Completions-first host./loginonly covers Kimi Code / Moonshot platforms; it will not set a custom host.base_urlis the/v1root, not/v1/chat/completions.export OPENAI_API_KEY=...is not read. The key goes in~/.kimi/config.toml.PZERO is a live OpenAI-compatible host. Catalog:
GET https://api.pzero.studio/v1/models. Default text id:deepseek-v4-flash. Prepaid Bearer key (pzero_…).POST /v1/responsesexists (401 without a key, not 404) but Chat Completions is the working path for agent tools.Do not set
type = "openai_responses". Do not run/loginafter this file is in place. Do not prefixmodelwithopenai/(that prefix is for OpenRouter / LiteLLM).No first-party plugin asked. If a named vendor subsection is too much, the gotchas above are the docs gap; the block is a worked example for searchers.