APIMODELHUB docs

API Reference

Sinh tự động từ đặc tả OpenAPI của dịch vụ đang chạy — model và giá trong tài liệu là model và giá thật. Base URL: https://api.apimodelhub.com

Đặc tả máy đọc được: /openapi.json

Đọc trước

Ba điều dưới đây quyết định request có tới đúng nhà cung cấp hay không — chúng không suy ra được từ đặc tả, nên ghi ngay đây.

1. Gửi key

HeaderDùng cho
Authorization: Bearer sk-spk-…OpenAI SDK, client HTTP thường
x-api-key: sk-spk-…Anthropic SDK, Claude Code
x-goog-api-key: sk-spk-…google-genai SDK (tự gửi)

2. Giao thức phải khớp họ model

Gateway chuyển path nguyên văn lên nhà cung cấp của model — không có lớp dịch giao thức. Gọi sai đường thì chính nhà cung cấp trả 404, không phải lỗi key.

ModelEndpointBase URL cho SDK
claude-*POST /v1/messageshttps://api.apimodelhub.com
gpt-*POST /v1/chat/completions · /v1/responseshttps://api.apimodelhub.com/v1
grok-*, deepseek-*POST /v1/chat/completionshttps://api.apimodelhub.com/v1
gemini-*POST /v1beta/models/{model}:generateContenthttps://api.apimodelhub.com

3. Lỗi và giới hạn

Mọi lỗi cùng hình dạng {"type":"error","error":{"type","message"}}, nên một hàm xử lý dùng được cho cả ba giao thức. Mã: 401 key thiếu/sai · 402 hạn mức không đủ cho chi phí xấu nhất · 403 key bị tắt hoặc model ngoài danh sách · 404 model/endpoint không tồn tại · 405 sai method · 413 body > 32 MB · 429 vượt 600 request/phút, 500 request đồng thời, hoặc upstream đang rate limit (đọc retry-after) · 502 nhà cung cấp lỗi hoặc không còn kênh khoẻ.

Models

Model đang bán và giá hiện tại.

GET /v1/models

Liệt kê model và giá

Trả mọi model mà KEY của bạn gọi được VÀ đang có kênh khoẻ (khác với toàn bộ bảng giá). Model có giá nhưng nhà cung cấp hết kênh sẽ không xuất hiện — đúng như hành vi của /v1/models: không quảng cáo một lựa chọn chắc chắn trả 502. Giá trong pricing_usd_per_1m là giá BÁN, đơn vị credit-$ (xem credit_vnd_per_usd).

Responses

200Danh sách model
401Unauthorized

Anthropic

Anthropic Messages API — dùng bởi Anthropic SDK và Claude Code.

POST /v1/messages

Tạo message (Anthropic Messages API)

Chỉ cần đổi ANTHROPIC_BASE_URL sang endpoint này — request/response giữ nguyên hình dạng của Anthropic, kể cả stream: true (SSE được chuyển byte-exact). Đây là đường Claude Code dùng.

Body

FieldTypeGhi chú
model * string Model id (xem GET /v1/models). · Một trong: claude-sonnet-5-5, claude-opus-5-5, claude-haiku-4-5, claude-haiku-4-5-20251001, claude-haiku-5-5, claude-sonnet-5…
max_tokens * integer Bắt buộc — Anthropic yêu cầu.
messages * array Lịch sử hội thoại, cùng hình dạng của Anthropic.
system string|array System prompt.
stream boolean Bật SSE streaming.
temperature number
top_p number
stop_sequences array
tools array Tool definition, giữ nguyên hình dạng Anthropic.
tool_choice object|string
metadata object

Responses

200Message (hoặc luồng SSE nếu `stream: true`)
400BadRequest
401Unauthorized
402PaymentRequired
403Forbidden
404ModelNotFound
429RateLimited
Ví dụ
curl -X POST https://api.apimodelhub.com/v1/messages \
  -H "x-api-key: $API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model":"claude-sonnet-5-5","max_tokens":256,"messages":[{"role":"user","content":"Hello"}]}'
POST /v1/messages/count_tokens

Đếm token (không tính tiền)

Chuyển tiếp nguyên văn tới nhà cung cấp. Không bị tính tiền và không trừ credit — dùng để chặn prompt quá lớn trước khi trả tiền cho model.

Body

FieldTypeGhi chú
model * string Một trong: claude-sonnet-5-5, claude-opus-5-5, claude-haiku-4-5, claude-haiku-4-5-20251001, claude-haiku-5-5, claude-sonnet-5…
messages * array
system string|array
tools array

Responses

200Số token
401Unauthorized
Ví dụ
curl -X POST https://api.apimodelhub.com/v1/messages/count_tokens \
  -H "x-api-key: $API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model":"claude-sonnet-5-5","messages":[{"role":"user","content":"Hello"}]}'

OpenAI

OpenAI Chat Completions và Responses API — dùng bởi OpenAI SDK.

POST /v1/chat/completions

Chat completion (OpenAI-compatible)

Dùng được với mọi SDK OpenAI: chỉ đổi base_url. stream: true trả SSE; chúng tôi tự thêm stream_options.include_usage để ghi nhận token chính xác (và bỏ nó khỏi phần trả về của bạn).

Body

FieldTypeGhi chú
model * string Một trong: claude-sonnet-5-5, claude-opus-5-5, claude-haiku-4-5, claude-haiku-4-5-20251001, claude-haiku-5-5, claude-sonnet-5…
messages * array
stream boolean
max_tokens integer
max_completion_tokens integer
temperature number
top_p number
tools array
tool_choice object|string
response_format object

Responses

200Chat completion (hoặc SSE nếu `stream: true`)
400BadRequest
401Unauthorized
402PaymentRequired
403Forbidden
404ModelNotFound
429RateLimited
Ví dụ
curl -X POST https://api.apimodelhub.com/v1/chat/completions \
  -H "authorization: Bearer $API_KEY" \
  -H "content-type: application/json" \
  -d '{"model":"claude-sonnet-5-5","messages":[{"role":"user","content":"Hello"}],"max_tokens":256}'
POST /v1/responses

Responses API (OpenAI)

Endpoint mới của OpenAI. Hình dạng request/response giữ nguyên.

Body

FieldTypeGhi chú
model * string Một trong: claude-sonnet-5-5, claude-opus-5-5, claude-haiku-4-5, claude-haiku-4-5-20251001, claude-haiku-5-5, claude-sonnet-5…
input * string|array
stream boolean
max_output_tokens integer

Responses

200Response object (hoặc SSE nếu `stream: true`)
400BadRequest
401Unauthorized
402PaymentRequired
403Forbidden
404ModelNotFound
429RateLimited
Ví dụ
curl -X POST https://api.apimodelhub.com/v1/responses \
  -H "authorization: Bearer $API_KEY" \
  -H "content-type: application/json" \
  -d '{"model":"claude-sonnet-5-5","input":"Hello"}'

Google

Gemini generateContent — dùng bởi google-genai SDK.

POST /v1beta/models/{model}:generateContent

Gemini generateContent

Hình dạng của google-genai SDK. Đổi base_url sang endpoint này; header auth là x-goog-api-key (SDK tự gửi). Chỉ model gemini-* đi được đường này: model Claude/OpenAI/grok gọi vào đây sẽ nhận 404 từ chính Google. Với :streamGenerateContent thêm ?alt=sse (gateway tự thêm nếu thiếu).

Path parameters

model path string Model id, vd. `gemini-3.8-flash`.

Body

FieldTypeGhi chú
contents array
systemInstruction object
generationConfig object

Responses

200GenerateContentResponse
400BadRequest
401Unauthorized
402PaymentRequired
404ModelNotFound
429RateLimited
Ví dụ
curl -X POST https://api.apimodelhub.com/v1beta/models/MODEL:generateContent \
  -H "x-goog-api-key: $API_KEY" \
  -H "content-type: application/json" \
  -d '{"contents":[{"role":"user","parts":[{"text":"Hello"}]}]}'
POST /v1beta/models/{model}:countTokens

Gemini countTokens (không tính tiền)

Đếm token của một request trước khi gửi, để chặn prompt quá lớn. Chuyển nguyên văn tới Google và KHÔNG bị tính tiền, không trừ hạn mức — giống POST /v1/messages/count_tokens của Anthropic.

Path parameters

model path string Model id, vd. `gemini-3.8-flash`.

Body

FieldTypeGhi chú
contents array
systemInstruction object

Responses

200Số token
400BadRequest
401Unauthorized
404ModelNotFound
429RateLimited
Ví dụ
curl -X POST https://api.apimodelhub.com/v1beta/models/MODEL:countTokens \
  -H "x-goog-api-key: $API_KEY" \
  -H "content-type: application/json" \
  -d '{"contents":[{"role":"user","parts":[{"text":"Hello"}]}]}'
POST /v1beta/models/{model}:streamGenerateContent

Gemini streamGenerateContent

Như generateContent nhưng trả SSE. Chúng tôi tự thêm alt=sse nếu request thiếu — thiếu nó thì Gemini trả JSON array và không stream được.

Path parameters

model path string

Responses

200Luồng SSE
400BadRequest
401Unauthorized
402PaymentRequired
404ModelNotFound
429RateLimited