API Reference

/v1/chat/completions

Endpoint principal de chat. Compatible con la API de OpenAI v1: mensajes, streaming, tools, response_format. Dos modelos: Qwen/Qwen3.6-35B-A3B, el más rápido, y Qwen/Qwen3.8-27B, el más capaz para agentes, código y razonamiento, que además acepta imágenes.

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 direct y thinking: se eligen con el alias. Añade el sufijo -thinking al literal (por ejemplo Qwen/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

POST /v1/chat/completions
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.

Request con imagen
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.

Respuesta (no-streaming)
{
  "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": true activa SSE; el cliente recibe chat.completion.chunk events hasta el [DONE] final.
  • tools y tool_choice siguen 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.