Referência da API
Messages
Chat compatível com a Anthropic — para clientes construídos sobre a Messages API do Claude.
/v1/messagesMesmo modelo, mesma stack, tudo igual a
/v1/chat/completions — este endpoint
existe para que os SDKs da Anthropic e as ferramentas nativas do Claude (o
Claude Code, por exemplo) funcionem com o Stac sem nenhuma tradução do seu lado.
Autenticação
Clientes da Anthropic enviam a chave de um jeito diferente dos clientes da OpenAI. As duas formas são aceitas:
x-api-keyheaderOpcionalA convenção da Anthropic. Envie a chave pura, sem o prefixo Bearer.
AuthorizationheaderOpcionalTambém aceito, como Bearer $STAC_API_KEY — igual ao chat completions.
anthropic-versionheaderOpcionalAceito por compatibilidade. Não é validado contra uma data específica.
Corpo da requisição
modelstringObrigatórioO modelo que responde, por exemplo qwen/qwen3.5-9b. Veja em Modelos
os valores que o seu plano inclui.
messagesMessage[]ObrigatórioMesmo formato da Messages API da Anthropic: role (user ou assistant)
e content (string, ou um array de blocos).
max_tokensintegerObrigatórioPadrão: 8000Obrigatório no formato da Anthropic. Fica limitado ao mesmo piso de 8000 e ao mesmo teto de 16000 do chat completions.
systemstring | Block[]OpcionalSubstitui o system prompt configurado na sua stack nesta requisição. Omita para manter o comportamento configurado da stack. A busca na base de conhecimento não é afetada: ela segue a configuração da própria chave de API, e o trecho recuperado é acrescentado depois desta instrução.
streambooleanOpcionalPadrão: falseServer-sent events no formato de streaming da Anthropic
(message_start → content_block_delta* → message_stop), não no da OpenAI.
Eventos ping são intercalados enquanto o modelo processa um prompt longo —
ignore-os, como fazem os SDKs oficiais. Se a requisição falhar antes de
produzir qualquer saída, o stream termina com um evento error em vez de
message_stop; trate isso como uma requisição que falhou, não como uma
resposta vazia.
toolsTool[]OpcionalSchema de tool use da Anthropic. Convertido internamente para o mesmo caminho de tool calling do chat completions.
Blocos de imagem ({ "type": "image", "source": { "type": "base64", ... } })
funcionam do mesmo jeito que o image_url no chat completions — veja
OCR pelo chat.
Exemplo
curl "$ANTHROPIC_BASE_URL/v1/messages" \
-H "x-api-key: $ANTHROPIC_AUTH_TOKEN" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen/qwen3.5-9b",
"max_tokens": 1024,
"messages": [{ "role": "user", "content": "Olá" }]
}'Resposta
{
"id": "msg_9f2a1c",
"type": "message",
"role": "assistant",
"model": "qwen/qwen3.5-9b",
"content": [{ "type": "text", "text": "Vermelho, azul e amarelo." }],
"stop_reason": "end_turn",
"usage": {
"input_tokens": 14,
"output_tokens": 7,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 0
}
}Os dois contadores cache_* são sempre 0 — o Stac não faz prompt
caching —, mas estão sempre presentes, então um cliente que soma os três
contadores de entrada para acompanhar o uso de contexto recebe um número em
vez de NaN.
Usando uma ferramenta nativa do Claude
Aponte as variáveis de ambiente da Anthropic da ferramenta para o Stac em vez de escrever qualquer código de requisição:
ANTHROPIC_BASE_URL=https://api.trystac.com
ANTHROPIC_AUTH_TOKEN=$STAC_API_KEYVeja Compatibilidade com Anthropic para a configuração completa do Claude Code, incluindo a variável de janela de contexto que impede que ele ultrapasse a janela do seu plano.
count_tokens
O POST /v1/messages/count_tokens também está disponível, para clientes que o
chamam antes de enviar a requisição de verdade. Ele informa a mesma contagem de
tokens que a sua chamada real usaria.