Chat completions
POST /v1/chat/completions is the main product. It accepts the OpenAI Chat Completions body.
Minimum body
{
"model": "deepseek-ai/DeepSeek-V4-Flash-0731",
"messages": [{"role": "user", "content": "Hello"}]
}Parameters we honor
| Field | Notes |
|---|---|
model | Must be a live /v1/models id |
messages | Standard roles: system, user, assistant, tool |
stream | See Streaming |
temperature, top_p, max_tokens | Forwarded when the host accepts them |
tools / tool_choice | See Tool calling |
web_search | Proxy-side search; see Web search |
deep_research | Multi-search report. stream: true sends the loop, then the report. Keep a timeout of at least 5 minutes; see Deep research |
mcp / tools: [{type:"mcp"}] | See MCP |
reasoning_effort / thinking | DeepSeek only if reasoning compat is on |
Content may be a string or a multimodal array (text, image_url, file) when file ingestion is enabled.
What we do not claim
This is not a full OpenAI clone. Assistants API, image generation, embeddings, audio, and batch jobs are not exposed. If a field is ignored, the host still runs the completion.
Python
from openai import OpenAI
client = OpenAI(
base_url="https://api.proxy.gonka.gg/v1",
api_key="sk-your-api-key-here",
)
response = client.chat.completions.create(
model="deepseek-ai/DeepSeek-V4-Flash-0731",
messages=[{"role": "user", "content": "Hello!"}],
)
print(response.choices[0].message.content)Unknown proxy fields (web_search, deep_research, mcp, MCP tool types) belong in extra_body so the official SDK does not strip them.
TypeScript
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.proxy.gonka.gg/v1",
apiKey: "sk-your-api-key-here",
});
const response = await client.chat.completions.create({
model: "deepseek-ai/DeepSeek-V4-Flash-0731",
messages: [{ role: "user", content: "Hello!" }],
});