Tới nội dung

Tài liệu APIVN

Gọi API trực tiếp

Địa chỉ, cách xác thực và mã mẫu cho cURL, Python, Node.js.

Địa chỉ API

KiểuBase URLEndpoint
OpenAI-compatiblehttps://apivn.vn/v1GET /models
POST /chat/completions
POST /responses
Anthropic-compatiblehttps://apivn.vnPOST /v1/messages

Xác thực qua header Authorization: Bearer sk-.... Endpoint kiểu Anthropic nhận cả header x-api-key. Mô hình phải thuộc nhóm của khoá, tra ở Mô hình.

cURL

Xem khoá của bạn gọi được những mô hình nào:

curl https://apivn.vn/v1/models \
  -H "Authorization: Bearer $APIVN_API_KEY"

Gửi một tin nhắn qua Chat Completions:

curl https://apivn.vn/v1/chat/completions \
  -H "Authorization: Bearer $APIVN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-5",
    "messages": [{"role": "user", "content": "Xin chào APIVN"}]
  }'

Responses API

Cần khoá nhóm GPT. Codex CLI gọi endpoint này.

curl https://apivn.vn/v1/responses \
  -H "Authorization: Bearer $APIVN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "gpt-5.6-sol", "input": "Xin chào APIVN"}'

Messages API (Anthropic)

Cần khoá nhóm Claude.

curl https://apivn.vn/v1/messages \
  -H "x-api-key: $APIVN_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-5",
    "max_tokens": 512,
    "messages": [{"role": "user", "content": "Xin chào APIVN"}]
  }'

Tạo ảnh

Cần khoá nhóm GPT, mô hình gpt-image-2 hoặc gpt-image-2.5, tính tiền theo từng ảnh (xem Mô hình). Một ảnh mất chừng 20 đến 35 giây.

curl https://apivn.vn/v1/images/generations \
  -H "Authorization: Bearer $APIVN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "Ly cà phê sữa đá trên bàn gỗ, ánh nắng buổi sáng",
    "size": "1024x1024"
  }'

Ảnh PNG nằm ở data[0].url. Tải về và tự lưu ngay, vì đường dẫn này có thể hết hạn sau một thời gian.

Bằng SDK Python:

result = client.images.generate(
    model="gpt-image-2",
    prompt="Ly cà phê sữa đá trên bàn gỗ",
    size="1024x1024",
)
print(result.data[0].url)

Streaming

Thêm "stream": true để nhận câu trả lời theo từng đoạn. Với cURL, thêm -N để in ra ngay khi có:

curl -N https://apivn.vn/v1/chat/completions \
  -H "Authorization: Bearer $APIVN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-5",
    "stream": true,
    "messages": [{"role": "user", "content": "Xin chào"}]
  }'

Phản hồi mang Content-Type: text/event-stream; mỗi đoạn là một dòng data: ..., và Chat Completions kết thúc bằng data: [DONE].

Python

Cài SDK: pip install openai.

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["APIVN_API_KEY"],
    base_url="https://apivn.vn/v1",
)

reply = client.chat.completions.create(
    model="claude-sonnet-5",
    messages=[{"role": "user", "content": "Xin chào APIVN"}],
)
print(reply.choices[0].message.content)

Node.js

Cài SDK: npm install openai.

import OpenAI from 'openai'

const client = new OpenAI({
  apiKey: process.env.APIVN_API_KEY,
  baseURL: 'https://apivn.vn/v1',
})

const reply = await client.chat.completions.create({
  model: 'claude-sonnet-5',
  messages: [{ role: 'user', content: 'Xin chào APIVN' }],
})
console.log(reply.choices[0].message.content)

Chỉ gọi API từ phía máy chủ. Đừng đưa khoá vào mã chạy trên trình duyệt hay biến môi trường public của framework.

Postman

Tạo request GET https://apivn.vn/v1/models với header Authorization: Bearer {{APIVN_API_KEY}}. Cất khoá trong biến loại secret của Environment và đừng đồng bộ giá trị thật lên workspace dùng chung.

Dùng APIVN làm nguồn cho hệ thống relay

Nếu hệ thống của bạn tự nối thêm /v1/..., điền https://apivn.vn; nếu ô nhập đòi Base URL OpenAI đầy đủ, điền https://apivn.vn/v1. Gọi /models trước để chắc đường dẫn không bị lặp thành /v1/v1. Dùng một khoá riêng có hạn mức cho relay, tách khỏi khoá cá nhân.