Guías principales

Formatos de API

Elegir Chat Completions, Responses, Messages o Gemini

Una clave de TokenLab sirve para cuatro formatos de API. Mantén el formato que ya usa tu aplicación y consulta tokenlab.accepted_request_formats en la página del modelo o en GET /v1/models/{model}. No todos los modelos admiten los cuatro formatos.

Chat Completions

POST /v1/chat/completions · openai_chat_completions

Úsalo con clientes de chat compatibles con OpenAI, historial de mensajes, streaming y llamadas a funciones admitidas por el modelo. Los campos exclusivos de otros formatos no están garantizados.

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["TOKENLAB_API_KEY"],
    base_url="https://api.tokenlab.sh/v1",
)

response = client.chat.completions.create(
    model="gpt-5.6-luna",
    messages=[{"role": "user", "content": "Hello!"}],
)

print(response.choices[0].message.content)

Responses

POST /v1/responses · openai_responses

Úsalo cuando accepted_request_formats incluya openai_responses. Permite crear, consultar, compactar y eliminar respuestas, usar streaming, crear y continuar por WebSocket y generar en segundo plano con modelos compatibles. Eliminar una respuesta guardada no cancela una respuesta activa.

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["TOKENLAB_API_KEY"],
    base_url="https://api.tokenlab.sh/v1",
)

response = client.responses.create(
    model="gpt-5.6-terra",
    input="Explain why the sky is blue in two sentences.",
)

print(response.output_text)

Anthropic Messages

POST /v1/messages · anthropic_messages

En el SDK de Anthropic, usa el host de TokenLab sin añadir /v1. Mantén las llamadas a herramientas de Claude, los bloques thinking y los campos de caché de prompts en el formato Messages.

import os
from anthropic import Anthropic

client = Anthropic(
    api_key=os.environ["TOKENLAB_API_KEY"],
    base_url="https://api.tokenlab.sh",
)

message = client.messages.create(
    model="claude-sonnet-5",
    max_tokens=512,
    messages=[{"role": "user", "content": "Hello!"}],
)

print(message.content[0].text)

Gemini

POST /v1beta/models/:model:generateContent · gemini_generate_content

Úsalo para aplicaciones con contents, parts, archivos, caché o herramientas de Gemini. Se aceptan nombres ProtoJSON lowerCamelCase y nombres originales snake_case; no envíes ambas variantes del mismo campo en una solicitud.

curl "https://api.tokenlab.sh/v1beta/models/gemini-3.5-flash:generateContent" \
  -H "Authorization: Bearer $TOKENLAB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{"parts": [{"text": "Hello!"}]}]
  }'

Mantén el formato de la conversación

Cada formato representa de manera distinta el estado y los resultados de herramientas. Usa un solo formato por conversación; convierte y valida el historial en tu aplicación antes de migrarlo.

Campos desconocidos

Que un campo se reenvíe no garantiza que el modelo lo admita. Depende solo de funciones documentadas para el modelo elegido y maneja los errores por campos no admitidos.

Referencias

En esta página