APIMODELHUB docs

Docs / Công cụ & SDK

OpenCode (terminal)

OpenCode: hai provider trong opencode.json — openai-compatible và anthropic.

Khai provider

OpenCode đọc ~/.config/opencode/opencode.json (hoặc .jsonc), và cũng nhận opencode.json đặt trong thư mục dự án nếu bạn muốn cấu hình riêng cho từng repo. Một provider tuỳ biến cần npm (gói AI SDK làm cầu nối) và options.baseURL.

Cần HAI provider vì OpenCode cũng không dịch giao thức: @ai-sdk/openai-compatible nói /v1/chat/completions (GPT, Grok, DeepSeek), @ai-sdk/anthropic nói /v1/messages (Claude). Dùng cùng một key cho cả hai.

~/.config/opencode/opencode.json
{
  "provider": {
    "apimodelhub": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Apimodelhub",
      "options": {
        "baseURL": "https://api.apimodelhub.com/v1",
        "apiKey": "sk-spk-..."
      },
      "models": {
        "gpt-5.4": { "name": "GPT-5.4" },
        "grok-4.7": { "name": "Grok 4.7" }
      }
    },
    "apimodelhub-claude": {
      "npm": "@ai-sdk/anthropic",
      "name": "Apimodelhub (Claude)",
      "options": {
        "baseURL": "https://api.apimodelhub.com",
        "apiKey": "sk-spk-..."
      },
      "models": {
        "claude-sonnet-5-5": { "name": "Claude Sonnet 5.5" }
      }
    }
  }
}
baseURL của hai provider KHÁC nhau@ai-sdk/openai-compatible tự nối /chat/completions ⇒ baseURL phải có /v1. @ai-sdk/anthropic tự nối /v1/messages ⇒ baseURL KHÔNG có /v1. Đặt claude-* vào provider openai-compatible là 404 của Anthropic — không phải lỗi key.
Model id phải nằm trong "models"OpenCode chỉ hiện những model bạn liệt kê trong models — thêm id mới thì import từ GET /v1/models rồi khai vào đây. Model gemini-* không dùng được trong OpenCode (cần giao thức Google).
Không muốn dán key vào file?OpenCode hỗ trợ đọc từ file: "apiKey": "{file:~/.secrets/apimodelhub-key}". Dùng cách này thì opencode.json commit vào repo được mà không lộ key.

Chạy thử

kiểm tra key trước khi mở OpenCode
curl https://api.apimodelhub.com/v1/models \
  -H "Authorization: Bearer sk-spk-..."

Danh sách trả về chỉ gồm model đang gọi được, nên nếu id bạn muốn dùng không có trong đó thì đừng khai nó — request sẽ 404.