Texto

Crear Chat Completion

Crea una finalización para el mensaje de chat

POST
/v1/chat/completions

Cuerpo de la solicitud

Los parámetros opcionales admitidos, los valores aceptados y los valores predeterminados dependen del modelo seleccionado. Consulta los detalles del modelo antes de configurar las opciones de muestreo, razonamiento o herramientas.

modelstringobligatorio

ID del modelo a utilizar. Consulta Modelos para ver las opciones disponibles.

messagesarrayobligatorio

Una lista de mensajes que componen la conversación.

Cada objeto de mensaje contiene:

  • role (string): system, developer, user, assistant, tool, function
  • content (string | array | null): El contenido del mensaje

Para un mensaje de assistant que contenga tool_calls, el content puede omitirse o establecerse como null.

Cuando content es un array, TokenLab admite bloques multimodales estructurados para modelos compatibles:

  • texto: { "type": "text", "text": "..." }
  • imagen: { "type": "image_url", "image_url": { "url": "https://..." } }
  • video: { "type": "video_url", "video_url": { "url": "https://..." } }
  • audio: { "type": "audio_url", "audio_url": { "url": "https://..." } }

Para entradas multimodales, utiliza URLs https accesibles públicamente. Los tipos de medios admitidos dependen del modelo seleccionado.

temperaturenumber

Temperatura de muestreo. La compatibilidad, los valores permitidos y el valor predeterminado dependen del modelo seleccionado; omite este campo para usar su valor predeterminado.

max_tokensinteger

Número máximo de tokens a generar.

streambooleanpredeterminado: false

Si es true, los deltas de mensajes parciales se enviarán como eventos SSE.

stream_optionsobject

Opciones para el streaming. Establece include_usage: true para recibir el uso de tokens en los fragmentos del stream.

top_pnumber

Parámetro de muestreo Nucleus. Recomendamos alterar este parámetro o la temperatura, pero no ambos.

frequency_penaltynumber

Número entre -2.0 y 2.0. Los valores positivos penalizan los tokens repetidos.

presence_penaltynumber

Número entre -2.0 y 2.0. Los valores positivos penalizan los tokens que ya están en el texto.

stopstring | array

Secuencia de parada o lista de secuencias. La compatibilidad y los límites de secuencia dependen del modelo seleccionado.

toolsarray

Una lista de herramientas que el modelo puede llamar (llamada a funciones).

tool_choicestring | object

Controla cómo el modelo utiliza las herramientas. Opciones: auto, none, required, o un objeto de herramienta específico.

parallel_tool_callsboolean

Permite múltiples llamadas a herramientas en un mismo turno del asistente, cuando el modelo seleccionado lo admite.

max_completion_tokensinteger

Tokens máximos para la finalización. Alternativa a max_tokens, útil para familias de modelos más recientes con capacidad de razonamiento.

reasoning_effortstring

Esfuerzo de razonamiento para los modelos que lo admiten. Los valores aceptados dependen del modelo seleccionado.

Para los modelos Claude, el valor establece el pensamiento del modelo: un nivel de esfuerzo en modelos con pensamiento adaptativo, o un presupuesto de pensamiento en modelos que utilizan uno. none desactiva el pensamiento en los modelos que lo permiten. Mientras el pensamiento está activado, Claude rechaza una temperature distinta de 1, top_k, un top_p fuera del rango 0.95–1 y un mensaje de asistente prellenado. Un tool_choice forzado funciona con el pensamiento adaptativo pero no con un presupuesto de pensamiento.

anthropic_optionsobject

Opciones para los modelos Claude.

  • prompt_caching (boolean): Establece true para almacenar en caché el inicio del prompt. TokenLab marca el final del prompt del sistema y el último mensaje del usuario como puntos de caché. Una solicitud posterior que comience con el mismo contenido lo leerá desde la caché. Si algún mensaje ya tiene cache_control, TokenLab no añade puntos de caché.
  • prompt_caching_ttl (string): 5m (predeterminado) o 1h. Si la ruta de servicio no admite una hora, TokenLab utiliza cinco minutos y no rechaza la solicitud.

extra.prompt_caching y extra.prompt_caching_ttl se aceptan como las mismas opciones. Consulta Almacenamiento en caché de prompts para conocer los precios y cómo verificar los tokens almacenados en caché.

seedinteger

Semilla de muestreo para los modelos que la admiten. No se garantiza una salida idéntica.

ninteger

Número de finalizaciones a generar (1-128).

logprobsboolean

Indica si se deben devolver las probabilidades logarítmicas.

top_logprobsinteger

Número de probabilidades logarítmicas principales a devolver (0-20). Requiere logprobs: true.

top_kinteger

Muestreo Top-K para los modelos que lo admiten.

response_formatobject

Formato de respuesta. Utiliza {"type": "json_object"} para el modo JSON o {"type": "json_schema", "json_schema": {...}} para un esquema JSON. La compatibilidad depende del modelo seleccionado.

logit_biasobject

Modifica la probabilidad de que aparezcan tokens específicos. Asocia IDs de tokens (como strings) a valores de sesgo de -100 a 100.

userstring

Un identificador único que representa a tu usuario final para el monitoreo de abusos.

Respuesta

idstring

Identificador único para la finalización.

objectstring

Siempre chat.completion.

createdinteger

Marca de tiempo Unix de cuándo se creó la finalización.

modelstring

El modelo utilizado para la finalización.

choicesarray

Lista de opciones de finalización.

Cada opción contiene:

  • index (integer): Índice de la opción
  • message (object): El mensaje generado
  • finish_reason (string): Por qué se detuvo el modelo, por ejemplo stop, length o tool_calls

Cuando el modelo piensa, message también puede contener:

  • reasoning_content (string): El texto de pensamiento. Algunos modelos devuelven solo un resumen o ningún texto.
  • reasoning_details (array): Bloques de pensamiento con sus firmas. Para continuar una conversación con pensamiento, por ejemplo después de una llamada a una herramienta, envíalos de vuelta sin cambios en el mensaje del asistente.

En un stream, los mismos campos llegan como delta.reasoning_content y delta.reasoning_details.

usageobject

Estadísticas de uso de tokens.

  • prompt_tokens (integer): Tokens en el prompt
  • completion_tokens (integer): Tokens en la finalización, incluyendo tokens de pensamiento
  • total_tokens (integer): Total de tokens utilizados
  • completion_tokens_details.reasoning_tokens (integer): Tokens de pensamiento, cuando el modelo los reporta

Solicitud

curl -X POST "https://api.tokenlab.sh/v1/chat/completions" \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.6-terra",
    "messages": [
      {"role": "system", "content": "You are a helpful assistant."},
      {"role": "user", "content": "Hello!"}
    ],
    "max_tokens": 1000
  }'

Ejemplo multimodal

{
  "model": "gemini-2.5-pro",
  "messages": [
    {
      "role": "user",
      "content": [
        { "type": "text", "text": "Describe this video briefly." },
        { "type": "video_url", "video_url": { "url": "https://example.com/demo.mp4" } }
      ]
    }
  ],
  "max_tokens": 64
}

Respuesta

Response
{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "created": 1706000000,
  "model": "gpt-5.6-terra",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello! How can I help you today?"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 20,
    "completion_tokens": 9,
    "total_tokens": 29
  }
}

Autorización

BearerAuth
AuthorizationBearer <token>

Autenticación con API Key. Cree o gestione API keys en Dashboard > API > API Keys.

Ubicación: header

Encabezados

X-TokenLab-Delivery-Policy?string

Política de entrega por solicitud. Sustituye los valores predeterminados de la API key y del Workspace. Auto intenta primero con TokenLab Verified y puede cambiar una vez a Official solo antes de la salida, la aceptación de la solicitud o la creación de recursos persistentes.

Valores permitidos

  • "auto"
  • "verified"
  • "official"

Cuerpo de la solicitud

application/json

Respuesta

application/json

application/json

application/json

application/json

application/json

application/json

application/json