/v1/chat/completions
Dùng với OpenAI SDK, Cherry Studio, Cline, Open WebUI và hầu hết ứng dụng khách công cụ.
ChinaAPI cung cấp cho ứng dụng của bạn một điểm cuối duy nhất tương thích OpenAI cho DeepSeek, Qwen, GLM, Kimi, Doubao, cùng các mô hình ảnh, video, embedding và rerank. Giữ nguyên SDK, thay điểm cuối và quản lý mức sử dụng từ một bảng điều khiển.
Kết nối
https://api.chinaapi.ai
https://api.chinaapi.ai/v1 và dùng token ChinaAPI làm khóa bearer.
Mọi yêu cầu API đều dùng xác thực bearer token. Tạo token trong bảng điều khiển, sau đó gửi token trong tiêu đề Authorization.
Authorization: Bearer $CHINAAPI_KEY
Content-Type: application/json
Hầu hết ứng dụng khách OpenAI hoạt động sau khi thay đổi baseURL. Hãy dùng tên mô hình được công bố trong bảng điều khiển ChinaAPI.
curl https://api.chinaapi.ai/v1/chat/completions \
-H "Authorization: Bearer $CHINAAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-chat",
"messages": [
{ "role": "user", "content": "Hello" }
]
}'
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.CHINAAPI_KEY,
baseURL: "https://api.chinaapi.ai/v1",
});
const result = await client.chat.completions.create({
model: "deepseek-chat",
messages: [{ role: "user", content: "Hello" }],
});
ChinaAPI có thể chuyển tiếp lưu lượng kiểu OpenAI và lưu lượng riêng của nhà cung cấp. Hãy giữ các tuyến riêng cho ứng dụng khách cần Claude Messages API hoặc payload tương thích Gemini.
Dùng với OpenAI SDK, Cherry Studio, Cline, Open WebUI và hầu hết ứng dụng khách công cụ.
Định tuyến payload tin nhắn kiểu Claude trong khi vẫn dùng cùng khóa cổng và cơ chế kiểm soát hạn mức.
Dùng ứng dụng khách tương thích Gemini khi ứng dụng của bạn phụ thuộc vào cấu trúc yêu cầu Gemini.
Các mô hình video trả lời dưới dạng tác vụ chứ không phải một phản hồi duy nhất. POST /v1/videos trả về mã tác vụ kèm "status": "queued", còn GET /v1/videos/{task_id} báo tiến độ cho đến khi tác vụ chuyển sang completed hoặc failed. Khi hoàn tất, tệp kết quả là URL đã ký nằm trong metadata.url; URL này mang tham số Expires, vì vậy hãy tải tệp về thay vì lưu lại liên kết. Tác vụ thất bại mang mã lỗi và thông báo của nhà cung cấp trong error.code và error.message, thường là đủ để biết yêu cầu thiếu trường nào. POST /v1/video/generations đi tới cùng một handler, dành cho ứng dụng khách đã viết theo đường dẫn đó.
curl https://api.chinaapi.ai/v1/videos \
-H "Authorization: Bearer $CHINAAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "wan2.7-i2v",
"prompt": "the cat turns and walks toward the camera",
"input_reference": "https://example.com/first-frame.jpg",
"size": "1280*720",
"duration": 5
}'
# {"id":"task_9f2c...","task_id":"task_9f2c...","object":"video",
# "model":"wan2.7-i2v","status":"queued","progress":0}
curl https://api.chinaapi.ai/v1/videos/task_9f2c... \
-H "Authorization: Bearer $CHINAAPI_KEY"
# {"id":"task_9f2c...","object":"video","model":"wan2.7-i2v",
# "status":"completed","progress":100,
# "metadata":{"url":"https://.../output.mp4?Expires=..."}}
Chỉ model và prompt là bắt buộc. Nếu thiếu size và duration, cổng sẽ gửi 1280*720 trong năm giây.
Làm ảnh tĩnh chuyển động. input_reference nhận URL ảnh công khai và trở thành khung hình đầu tiên; hãy gửi kèm size và duration.
Tạo video từ tư liệu tham chiếu. input_reference nhận một ảnh tham chiếu; muốn gửi nhiều ảnh thì dùng images, và video_url thêm một video tham chiếu — các tham chiếu được tính chung, tối đa năm. Đừng gửi input_reference cùng images, vì cổng chỉ giữ lại input_reference.
Chỉnh sửa một video có sẵn theo prompt. video_url nhận video nguồn, dài từ 2 đến 10 giây ở định dạng MP4 hoặc MOV, và size quyết định đầu ra.
Ảnh tham chiếu đặt trong images, vì họ mô hình này bỏ qua input_reference. Độ dài đặt trong seconds, còn tham số của nhà cung cấp đặt trong metadata, nơi resolution chỉ nhận 480p hoặc 720p.
size là chiều rộng và chiều cao nối bằng dấu hoa thị, ví dụ 1280*720. Chữ x không được nhận: 832x480 trả về invalid size: 832x480, example: 1920*1080. duration là số giây nguyên. Với wan2.7-i2v, wan2.7-r2v và wan2.7-videoedit, cổng gộp size thành một bậc phân giải và phía trên chỉ có hai bậc, nên hãy gửi 1280*720 cho 720P hoặc 1920*1080 cho 1080P; kích thước 480P như 832*480 sẽ bị từ chối. wan2.7-t2v nhận giá trị đúng như bạn viết.
curl https://api.chinaapi.ai/v1/videos \
-H "Authorization: Bearer $CHINAAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seedance-2-5-260628",
"prompt": "the subject slowly turns toward the camera",
"images": ["https://example.com/first-frame.jpg"],
"seconds": "5",
"metadata": {"resolution": "480p"}
}'
curl https://api.chinaapi.ai/v1/videos \
-H "Authorization: Bearer $CHINAAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seedance-2-5-260628",
"prompt": "keep the subject from the reference image",
"seconds": "5",
"metadata": {
"resolution": "480p",
"ratio": "16:9",
"content": [
{
"type": "image_url",
"image_url": {"url": "https://example.com/reference.jpg"},
"role": "reference_image"
}
]
}
}'
role được đọc là khung đầu chứ không phải tham chiếu: đầu ra theo tỉ lệ khung của ảnh đó, gửi kèm ratio sẽ bị từ chối với InvalidParameter.TaskTypeConstraint, và seconds bằng 2 cũng bị từ chối ở chế độ này, còn 5 thì được. generate_audio mặc định là true ở phía trên, nên tệp trả về có kèm âm thanh trừ khi bạn đặt false trong metadata. Gắn role cho từng phần tử của metadata.content để dùng đầy đủ chế độ tham chiếu — tối đa 30 ảnh, 10 video và 10 đoạn âm thanh, cho phép chỉ nhập âm thanh, và 30 giây liền mạch — nơi ratio được chấp nhận.
Công bố các bí danh mô hình mà nhóm của bạn cần dùng, sau đó ánh xạ chúng tới các kênh thượng nguồn, nhóm dự phòng, giá và nhóm người dùng trong bảng điều khiển.
ChinaAPI không chỉ là một điểm cuối chuyển tiếp. Nó bao gồm khóa, người dùng, nhóm, tình trạng kênh, nhật ký, hạn mức và kiểm soát thanh toán cho lưu lượng sản xuất.
Tạo và luân chuyển token, gán nhóm và cô lập lưu lượng người dùng.
Cấu hình nhiều kênh thượng nguồn để một bí danh mô hình vẫn hoạt động khi nhà cung cấp gặp sự cố.
Theo dõi trạng thái yêu cầu, mức sử dụng token, hạn mức đã dùng và chi tiết lỗi tại một nơi.