/v1/chat/completions
Úselo con los SDK de OpenAI, Cherry Studio, Cline, Open WebUI y la mayoría de los clientes de herramientas.
ChinaAPI ofrece a su aplicación un único endpoint compatible con OpenAI para los modelos DeepSeek, Qwen, GLM, Kimi, Doubao, además de modelos de imagen, vídeo, embedding y rerank. Conserve sus SDK, cambie solo el endpoint y gestione el uso desde un único panel.
Conexión
https://api.chinaapi.ai
https://api.chinaapi.ai/v1 y use su token de ChinaAPI como clave bearer.
Todas las solicitudes de la API usan autenticación mediante bearer token. Cree un token en el panel y envíelo en el encabezado Authorization.
Authorization: Bearer $CHINAAPI_KEY
Content-Type: application/json
La mayoría de los clientes de OpenAI funcionan tras cambiar baseURL. Use el nombre de modelo publicado en su panel de 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 puede reenviar tráfico al estilo OpenAI y tráfico específico de cada proveedor. Mantenga rutas separadas para los clientes que necesiten la Claude Messages API o payloads compatibles con Gemini.
Úselo con los SDK de OpenAI, Cherry Studio, Cline, Open WebUI y la mayoría de los clientes de herramientas.
Enrute payloads de mensajes en formato Claude conservando la misma clave de gateway y los mismos controles de cuota.
Use clientes compatibles con Gemini cuando su aplicación dependa de la estructura de solicitud de Gemini.
Los modelos de vídeo responden como tareas, no con una única respuesta. POST /v1/videos devuelve un id de tarea con "status": "queued", y GET /v1/videos/{task_id} informa del progreso hasta que la tarea llega a completed o failed. Al completarse, el archivo resultante es la URL firmada de metadata.url; incluye un parámetro Expires, así que descargue el archivo en lugar de guardar el enlace. Una tarea fallida trae el código y el mensaje del proveedor en error.code y error.message, lo que suele bastar para ver qué campo faltaba en la solicitud. POST /v1/video/generations llega al mismo handler, para los clientes ya escritos con esa ruta.
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=..."}}
Solo model y prompt son obligatorios. Sin size ni duration, la pasarela envía 1280*720 con cinco segundos.
Anime una imagen fija. input_reference recibe la URL de una imagen accesible públicamente y se convierte en el primer fotograma; envíe size y duration con ella.
Construye un vídeo a partir de material de referencia. input_reference acepta una imagen de referencia; para enviar varias usa images, y video_url añade un vídeo de referencia — las referencias se cuentan juntas, hasta cinco. No envíes input_reference e images a la vez, porque la pasarela conserva solo input_reference.
Edite un clip existente a partir de un prompt. video_url recibe el vídeo de origen, que debe tener entre 2 y 10 segundos en MP4 o MOV, y size define la salida.
Las imágenes de referencia van en images, ya que esta familia ignora input_reference. La duración va en seconds, y los parámetros del proveedor van en metadata, donde resolution es 480p o 720p.
size como ancho y alto unidos por un asterisco, como en 1280*720. La letra x no se acepta: 832x480 devuelve invalid size: 832x480, example: 1920*1080. duration es un número entero de segundos. Para wan2.7-i2v, wan2.7-r2v y wan2.7-videoedit, la pasarela pliega size en un nivel de resolución y el proveedor solo tiene dos, así que envía 1280*720 para 720P o 1920*1080 para 1080P; un tamaño 480P como 832*480 se rechaza. wan2.7-t2v toma el valor tal cual.
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 se lee como primer fotograma y no como referencia: la salida sigue la relación de aspecto de esa imagen, enviar ratio junto a ella se rechaza con InvalidParameter.TaskTypeConstraint, y un seconds de 2 también se rechaza en ese modo, mientras 5 funciona. generate_audio vale true por defecto en el proveedor, así que el archivo vuelve con pista de audio salvo que lo pongas en false en metadata. Etiqueta cada parte de metadata.content con un role para llegar al modo de referencia completo — hasta 30 imágenes, 10 vídeos y 10 clips de audio, entrada solo de audio, y 30 segundos de una sola vez — donde ratio sí se acepta.
Publique los alias de modelo que su equipo deba usar y luego asígnelos a canales upstream, grupos de fallback, precios y grupos en el panel.
ChinaAPI no es solo un endpoint de reenvío. Incluye claves, usuarios, grupos, estado de los canales, registros, cuota y controles de facturación para tráfico real de producción.
Cree y rote tokens, asigne grupos y mantenga aislado el tráfico de los usuarios.
Configure varios canales upstream para que un alias de modelo siga funcionando aunque falle un proveedor.
Consulte en un solo lugar el estado de las solicitudes, el uso de tokens, el consumo de cuota y los detalles de los errores.