Guias principais

Formatos de API

Escolha Chat Completions, Responses, Messages ou Gemini

Uma chave TokenLab funciona com quatro formatos de API. Mantenha o formato que seu aplicativo já usa e consulte tokenlab.accepted_request_formats na página do modelo ou em GET /v1/models/{model}. Nem todo modelo aceita os quatro formatos.

Chat Completions

POST /v1/chat/completions · openai_chat_completions

Use com clientes de chat compatíveis com OpenAI, histórico de mensagens, streaming e chamadas de função aceitas pelo modelo. Campos exclusivos de outros formatos não têm suporte garantido.

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

Use quando accepted_request_formats incluir openai_responses. O formato oferece criação, consulta, compactação, exclusão, streaming, criação e continuação por WebSocket e respostas em segundo plano nos modelos compatíveis. Excluir uma resposta armazenada não cancela uma resposta ativa.

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

No SDK Anthropic, use o host TokenLab sem acrescentar /v1. Mantenha chamadas de ferramentas Claude, blocos thinking e campos de cache de prompts no 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

Use em aplicativos com contents, parts, arquivos, cache ou ferramentas Gemini. Nomes ProtoJSON lowerCamelCase e nomes originais snake_case são aceitos; não envie as duas grafias do mesmo campo na mesma solicitação.

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!"}]}]
  }'

Mantenha o formato da conversa

Cada formato representa o estado e os resultados de ferramentas de forma diferente. Use um formato por conversa; converta e valide o histórico no aplicativo antes de migrá-lo.

Campos desconhecidos

O encaminhamento de um campo não garante suporte pelo modelo. Use funções documentadas para o modelo escolhido e trate erros de campos não aceitos.

Referências

Nesta página