Resumen
Crea un completion conversacional a partir de una lista de mensajes con roles (system, user, assistant, tool). Soporta streaming SSE, tool calling paralelo y response_format=json_object o json_schema para salidas estructuradas.
Endpoint y modelo
POST https://api.tesseraai.cloud/v1/chat/completions. Literales válidos en el campo model: Qwen/Qwen3.6-35B-A3B (el más rápido, solo texto) y Qwen/Qwen3.8-27B (el más capaz: agentes, código, razonamiento e imágenes), cada uno con su variante -thinking. Cuál elegir, con benchmarks, en Modelos disponibles.
- Contexto según tier: desde 8 K por defecto en Lite y Pro hasta 256 K nativo en Scale. Detalle en /docs/conceptos/tiers-y-limites.
- Modos
directythinking: se eligen con el alias. Añade el sufijo-thinkingal literal (por ejemploQwen/Qwen3.6-35B-A3B-thinking) para activar razonamiento extendido. Detalles en /docs/conceptos/direct-vs-thinking. - Streaming: añade
"stream": true. Devuelve eventos SSE compatibles con OpenAI.
Request
curl https://api.tesseraai.cloud/v1/chat/completions \
-H "Authorization: Bearer $TESSERA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen3.6-35B-A3B",
"messages": [
{"role": "system", "content": "Eres un asistente conciso."},
{"role": "user", "content": "Resume Cervantes en una frase."}
],
"temperature": 0.3,
"max_tokens": 200
}'Imágenes (visión)
Con Qwen/Qwen3.8-27B (y su variante -thinking) el content de un mensaje user puede ser un array de partes, igual que en OpenAI: text e image_url. La imagen puede ir como URL https o como data URI en base64. Qwen/Qwen3.6-35B-A3B solo acepta texto.
curl https://api.tesseraai.cloud/v1/chat/completions \
-H "Authorization: Bearer $TESSERA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen3.8-27B",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "¿Qué importe total aparece en esta factura?"},
{"type": "image_url", "image_url": {"url": "https://example.com/factura.png"}}
]
}]
}'Response
Estructura idéntica a OpenAI: id, object, created, model, choices[].message.content, usage.prompt_tokens / completion_tokens / total_tokens.
{
"id": "chatcmpl-...",
"object": "chat.completion",
"created": 1730812345,
"model": "Qwen/Qwen3.6-35B-A3B",
"choices": [{
"index": 0,
"message": {"role": "assistant", "content": "..."},
"finish_reason": "stop"
}],
"usage": {"prompt_tokens": 24, "completion_tokens": 41, "total_tokens": 65}
}Streaming, tools y JSON estructurado
"stream": trueactiva SSE; el cliente recibechat.completion.chunkevents hasta el[DONE]final.toolsytool_choicesiguen el formato OpenAI v1 — ver /docs/conceptos/tools-function-calling.response_format: {"type": "json_object"}para JSON libre;{"type": "json_schema", "json_schema": {...}}para JSON estructurado validado.