MenuTham khảo API

Tham khảo API

API theo định dạng OpenAI tại https://ai.geraikita.com/v1 và định dạng Anthropic tại https://ai.geraikita.com. Mọi body request và phản hồi đều là JSON (UTF-8).

EndpointChức năng
POST /v1/chat/completionsChat định dạng OpenAI (stream & non-stream)
POST /v1/messagesMessages định dạng Anthropic (stream & non-stream)
POST /v1/messages/count_tokensĐếm token prompt định dạng Anthropic — miễn phí
GET /v1/modelsDanh sách model có thể dùng
POST /v1/images/generationsTạo ảnh từ prompt văn bản, tính phí theo ảnh — xem Tạo hình ảnh
Hiện chỉ có các endpoint ở trên. Các endpoint khác của OpenAI (ví dụ /v1/responses, /v1/embeddings) chưa được hỗ trợ.

Chat completions (OpenAI)

POSThttps://ai.geraikita.com/v1/chat/completions

Tạo câu trả lời từ danh sách tin nhắn. Header: Authorization: Bearer gk-… và Content-Type: application/json.

Body request

Tham sốKiểuMô tả
modelstringBắt buộc. Id model đúng như trong danh sách model, không có prefix.
messagesarrayBắt buộc. Mảng tin nhắn theo thứ tự; mỗi tin nhắn gồm role và content. Tối thiểu một tin nhắn.
streambooleantrue để nhận câu trả lời từng phần qua Server-Sent Events.
max_tokensintegerSố token tối đa của câu trả lời. Nếu số dư không đủ cho giá trị yêu cầu, máy chủ có thể tự động giảm xuống.
temperature, top_p, stop—Chuyển nguyên trạng tới model. Mức hỗ trợ và khoảng giá trị tùy theo model.
tools, tool_choicearray / objectGọi hàm (tool calling) định dạng OpenAI, chuyển tới các model có hỗ trợ.

Ví dụ request

curl https://ai.geraikita.com/v1/chat/completions \
  -H "Authorization: Bearer gk-xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-5",
    "messages": [{"role": "user", "content": "Xin chào!"}]
  }'

Ví dụ phản hồi

200 OK · application/json
{
  "id": "chatcmpl-…",
  "object": "chat.completion",
  "model": "claude-sonnet-5",
  "choices": [
    {
      "index": 0,
      "message": { "role": "assistant", "content": "…" },
      "finish_reason": "stop"
    }
  ],
  "usage": { "prompt_tokens": 12, "completion_tokens": 9, "total_tokens": 21 }
}

Đối tượng usage chứa số token làm cơ sở tính phí — xem Giá & thanh toán.

Messages (Anthropic)

POSThttps://ai.geraikita.com/v1/messages

Endpoint Anthropic gốc cho SDK Anthropic và Claude Code CLI. Base URL trong client = https://ai.geraikita.com (không có /v1).

Header

HeaderGiá trịMô tả
x-api-keygk-…API key gk- của bạn (Authorization: Bearer cũng được chấp nhận).
anthropic-version2023-06-01Phiên bản API Anthropic; SDK tự động gửi.
content-typeapplication/json—

Body request

Tham sốKiểuMô tả
modelstringBắt buộc. Id model đúng như trong danh sách model, không có prefix.
messagesarrayBắt buộc. Mảng tin nhắn định dạng Anthropic, tối thiểu một tin nhắn.
max_tokensintegerSố token tối đa của câu trả lời (bắt buộc ở định dạng Anthropic).
systemstring / arrayChỉ dẫn hệ thống (tùy chọn).
streambooleantrue để nhận câu trả lời từng phần qua Server-Sent Events.

Ví dụ request

curl https://ai.geraikita.com/v1/messages \
  -H "x-api-key: gk-xxxxxxxx" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-sonnet-5",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "Xin chào!"}]
  }'

Cần đếm token trước khi gửi? POST https://ai.geraikita.com/v1/messages/count_tokens nhận cùng body và không tính phí.

Danh sách model

GEThttps://ai.geraikita.com/v1/models

Trả về danh sách id model có thể gửi trong trường model. Khi gọi bằng key bị giới hạn bởi allowlist, chỉ các model được phép mới hiển thị. Với header x-api-key hoặc anthropic-version, phản hồi theo định dạng Anthropic.

curl https://ai.geraikita.com/v1/models \
  -H "Authorization: Bearer gk-xxxxxxxx"

Streaming (SSE)

Với "stream": true, câu trả lời được gửi dưới dạng text/event-stream. Máy chủ gửi header ngay, sau đó gửi dòng chú thích keepalive : ka mỗi 10 giây trong lúc chờ, để kết nối không bị coi là đã chết. Đặt timeout tổng của ứng dụng tối thiểu 300 giây.

text/event-stream
data: {"choices":[{"index":0,"delta":{"content":"Ha"}}]}

: ka

data: {"choices":[{"index":0,"delta":{"content":"lo!"}}]}

data: [DONE]
  • Định dạng OpenAI: mỗi phần là một dòng data: chứa JSON có choices[].delta, kết thúc bằng data: [DONE].
  • Định dạng Anthropic: các event message_start, content_block_delta, …, message_stop giống API Anthropic.
  • Bỏ qua các dòng bắt đầu bằng dấu hai chấm (:) — đó là keepalive, không phải dữ liệu. Hướng dẫn cho từng công cụ có ở Cài đặt công cụ agentic.