APIMODELHUB docs

Docs / Giao thức

OpenAI Chat Completions

Dùng OpenAI SDK: đổi base_url, mọi thứ còn lại giữ nguyên.

Cấu hình

Python (openai)
from openai import OpenAI

client = OpenAI(base_url="https://api.apimodelhub.com/v1", api_key="sk-spk-...")

res = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "Hello"}],
)
print(res.choices[0].message.content)
TypeScript (openai)
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.apimodelhub.com/v1",
  apiKey: process.env.OPENAI_API_KEY,
});

const res = await client.chat.completions.create({
  model: "gpt-4o-mini",
  messages: [{ role: "user", content: "Hello" }],
});

Endpoint là POST https://api.apimodelhub.com/v1/chat/completions. Nếu tool của bạn hỏi "base URL" thì điền https://api.apimodelhub.com/v1 (SDK tự nối /chat/completions); nếu tool hỏi "full endpoint" thì điền cả đường dẫn đầy đủ.

Đường này chỉ dành cho model họ OpenAI (gpt-*, grok-*, deepseek-*)Gateway chuyển path nguyên văn lên nhà cung cấp của model, không dịch giao thức. claude-* gọi qua /v1/chat/completions sẽ tới Anthropic bằng đường không tồn tại và nhận 404 của họ; gemini-* cũng vậy với Google. Model Claude dùng /v1/messages, xem trang Anthropic Messages.
curl — không cần SDK
curl https://api.apimodelhub.com/v1/chat/completions \
  -H "Authorization: Bearer sk-spk-..." \
  -H "content-type: application/json" \
  -d '{"model":"gpt-4o-mini","messages":[{"role":"user","content":"Hello"}]}'
Có cả /v1/responsesResponses API cũng được hỗ trợ nguyên văn. Nếu code của bạn đã chuyển sang client.responses.create(...) thì không phải đổi gì. Lưu ý: đây là đường PASSTHROUGH — nó chỉ chạy với model có vendor thật sự hỗ trợ Responses API (hiện là OpenAI); vendor khác thì dùng /v1/chat/completions.

Streaming và function calling

stream: true trả SSE như bình thường. Chúng tôi tự thêm stream_options.include_usage để biết số token thật của lượt gọi (và bỏ nó khỏi phần trả về của bạn) — nếu không, hoá đơn sẽ phải ước lượng, và ước lượng là cách chắc chắn nhất để thu sai.

stream = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "Count to 5"}],
    stream=True,
)
for chunk in stream:
    print(chunk.choices[0].delta.content or "", end="")

Function calling / tool use giữ nguyên hình dạng OpenAI — tools, tool_choice, tool_calls trong response đều được chuyển nguyên văn.