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.