// TÀI LIỆU API · v1

AI API, một endpoint
cho mọi model.

MộtAPI là gateway tương thích OpenAI và Anthropic. Dùng một API key, truy cập 57 model và chỉ trả tiền cho số token thực tế.

// 01 · QUICKSTART

Bắt đầu nhanh

Gửi request đầu tiên tới endpoint tương thích OpenAI bằng API key được tạo trong dashboard.

curl https://motapis.com/v1/chat/completions \
  -H "Authorization: Bearer sk-mot-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-opus-4-8",
    "messages": [
      {"role": "user", "content": "Xin chào, MộtAPI!"}
    ]
  }'

Response trả về theo format Chat Completions: nội dung nằm trong choices[0].message.content, cùng thông tin model và usage.

{
  "id": "chatcmpl-mot-...",
  "object": "chat.completion",
  "model": "claude-opus-4-8",
  "choices": [{
    "index": 0,
    "message": {"role": "assistant", "content": "Xin chào!"},
    "finish_reason": "stop"
  }],
  "usage": {"prompt_tokens": 12, "completion_tokens": 8, "total_tokens": 20}
}
// 02 · AUTHENTICATION

Xác thực

Mọi request cần header Bearer với khoá có định dạng sk-mot-.... Khoá được tạo trong dashboard tại /dashboard.html, mục Khoá API.

Authorization: Bearer sk-mot-...
Bảo mật: Không chia sẻ API key, không commit key vào Git và không đưa key vào mã frontend chạy trên trình duyệt. Dùng biến môi trường ở phía server.
// 03 · ENDPOINTS

Endpoints

POST/v1/chat/completions

API kiểu OpenAI cho hội thoại. Hỗ trợ response thường và streaming SSE với "stream": true.

POST https://motapis.com/v1/chat/completions
Content-Type: application/json
Authorization: Bearer sk-mot-...

{
  "model": "claude-opus-4-8",
  "messages": [
    {"role": "system", "content": "Bạn là trợ lý hữu ích."},
    {"role": "user", "content": "Tóm tắt nội dung này."}
  ],
  "temperature": 0.7,
  "stream": false
}
{
  "id": "chatcmpl-mot-...",
  "object": "chat.completion",
  "choices": [{
    "message": {"role": "assistant", "content": "Nội dung tóm tắt..."},
    "finish_reason": "stop"
  }],
  "usage": {"prompt_tokens": 42, "completion_tokens": 18, "total_tokens": 60}
}

POST/v1/messages

API kiểu Anthropic Messages, phù hợp với Anthropic SDK và các công cụ dùng giao thức Anthropic.

POST https://motapis.com/v1/messages
Content-Type: application/json
x-api-key: sk-mot-...
anthropic-version: 2023-06-01

{
  "model": "claude-opus-4-8",
  "max_tokens": 1024,
  "messages": [
    {"role": "user", "content": "Viết một câu chào bằng tiếng Việt."}
  ]
}

GET/v1/models

Liệt kê các model khả dụng cùng thông tin định danh.

curl https://motapis.com/v1/models \
  -H "Authorization: Bearer sk-mot-..."
// 04 · SDK

SDK & thư viện

Python · OpenAI SDK

from openai import OpenAI

client = OpenAI(
    base_url="https://motapis.com/v1",
    api_key="sk-mot-..."
)

response = client.chat.completions.create(
    model="claude-opus-4-8",
    messages=[
        {"role": "user", "content": "Xin chào, MộtAPI!"}
    ]
)

print(response.choices[0].message.content)

Node.js · OpenAI SDK

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://motapis.com/v1",
  apiKey: "sk-mot-..."
});

const response = await client.chat.completions.create({
  model: "claude-opus-4-8",
  messages: [{ role: "user", content: "Xin chào, MộtAPI!" }]
});

console.log(response.choices[0].message.content);

Anthropic Python SDK

from anthropic import Anthropic

client = Anthropic(
    base_url="https://motapis.com",
    api_key="sk-mot-..."
)

message = client.messages.create(
    model="claude-opus-4-8",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "Xin chào, MộtAPI!"}
    ]
)

print(message.content[0].text)

curl · streaming

curl https://motapis.com/v1/chat/completions \
  -H "Authorization: Bearer sk-mot-..." \
  -H "Content-Type: application/json" \
  -d '{"model":"claude-opus-4-8","messages":[{"role":"user","content":"Hello"}],"stream":true}'
// 05 · TOOL CONFIGURATION

Cài đặt cho công cụ

Cursor

Chọn provider OpenAI-compatible trong phần cài đặt model.

Override Base URL:
https://motapis.com/v1

API Key:
sk-mot-...

Model:
claude-opus-4-8
# hoặc gpt-5.6, glm-5.2…

Claude Code (CLI)

Đặt biến môi trường trước khi chạy CLI.

export ANTHROPIC_BASE_URL=https://motapis.com
export ANTHROPIC_AUTH_TOKEN=sk-mot-...
export ANTHROPIC_MODEL=claude-opus-4-8

claude

Cline / Roo Code

Trong VS Code, chọn API provider OpenAI Compatible.

API Provider:
OpenAI Compatible

Base URL:
https://motapis.com/v1

API Key:
sk-mot-...

Model ID:
claude-opus-4-8

Continue.dev

Thêm model vào file cấu hình Continue.

models:
  - name: claude-opus-4-8
    provider: openai
    apiBase: https://motapis.com/v1
    apiKey: sk-mot-...
    model: claude-opus-4-8
// 06 · STREAMING

Streaming

Đặt "stream": true để nhận dữ liệu theo thời gian thực qua SSE. Mỗi phần nội dung nằm trong một dòng data:; kết thúc bằng data: [DONE].

curl https://motapis.com/v1/chat/completions \
  -H "Authorization: Bearer sk-mot-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-opus-4-8",
    "messages": [{"role": "user", "content": "Kể một câu chuyện ngắn."}],
    "stream": true
  }'
from openai import OpenAI

client = OpenAI(
    base_url="https://motapis.com/v1",
    api_key="sk-mot-..."
)

stream = client.chat.completions.create(
    model="claude-opus-4-8",
    messages=[{"role": "user", "content": "Kể một câu chuyện ngắn."}],
    stream=True
)

for chunk in stream:
    text = chunk.choices[0].delta.content
    if text:
        print(text, end="", flush=True)
// 07 · MODEL CATALOG

Bảng model & giá

Giá tính trên 1 triệu token. Với model hình ảnh, giá hiển thị theo ảnh. Ví USD credit được trừ theo token thực tế của từng request.

Model Nhà cung cấp Hạng Giá vào ($/1M token) Giá ra ($/1M token)
Đang tải danh sách model...
// 08 · BILLING

Giá & thanh toán

Thanh toán theo token thực tế của mỗi request qua ví USD credit. Đây là mô hình trả theo mức sử dụng, không thuê bao và số dư không hết hạn.

Nạp tiền: VietQR, USDT-TRC20 hoặc PayPal trong dashboard tại /dashboard.html.

Số dư được trừ dần theo giá của model và số token input/output thực tế. Kiểm tra bảng model để xem đơn giá hiện tại trước khi triển khai.

// 09 · ERROR HANDLING

Xử lý lỗi

Mã / lỗi Nguyên nhân Cách xử lý
401 Sai hoặc thiếu API key Kiểm tra header Authorization: Bearer và tạo key mới trong dashboard.
402 Hết số dư Nạp thêm tiền vào ví USD credit bằng VietQR, USDT-TRC20 hoặc PayPal.
insufficient balance Số dư không đủ cho request Nạp thêm số dư rồi gửi lại request.
429 Quá nhiều request Chờ một lúc, giảm tốc độ gửi và thêm retry với exponential backoff.
5xx Lỗi tạm thời phía dịch vụ hoặc upstream Thử lại request sau một khoảng thời gian; không lặp vô hạn.