Guias
Compatibilidade com Anthropic
O que é idêntico, o que difere e como apontar um cliente com formato Anthropic para o Stac.
O Stac também implementa a Messages API da Anthropic, então ferramentas nativas
do Claude e o SDK anthropic funcionam com seu stack sem traduzir requisições
para o formato OpenAI.
const client = new Anthropic({
- baseURL: "https://api.anthropic.com",
- apiKey: process.env.ANTHROPIC_API_KEY,
+ baseURL: "https://api.trystac.com",
+ apiKey: process.env.STAC_API_KEY,
});Construindo contra o formato OpenAI em vez disso? Veja Compatibilidade com OpenAI — mesmo modelo subjacente, formato de requisição/resposta diferente.
Suportado
| Recurso | Status |
|---|---|
POST /v1/messages | Completo |
POST /v1/messages/count_tokens | Completo |
| Streaming (SSE, formato de evento Anthropic) | Completo |
| Tool use | Completo |
| Blocos de conteúdo de imagem | Depende do modelo — verifique capabilities em GET /v1/models |
x-api-key e autenticação Authorization: Bearer | Ambos aceitos |
Cache de prompt (cache_control) | Aceito, sem efeito — não existe medidor por token para economizar |
Diferenças que importam
modelé sempre ignorado. Seu stack tem exatamente um modelo atribuído; qualquer valor que você envia é substituído por ele — obrigatório no corpo da requisição apenas porque o formato Anthropic espera o campo.max_tokensé limitado, não apenas obrigatório. Requisições são limitadas a no mínimo 8000 e no máximo 16000 — veja Messages.systemsubstitui a configuração do seu stack, a mesma regra dos chat completions: não enviesystempara manter o prompt configurado do seu stack e a base de conhecimento; envie um (não vazio) para sobrescrever ambos para aquela requisição. Veja Conceitos básicos.- Rate limiting é por chave, não por tier. Veja Erros e rate limits.
Parâmetros desconhecidos são ignorados em vez de rejeitados, então uma versão mais recente do SDK permanece compatível com um gateway mais antigo.
Ferramentas de linha de comando
Claude Code
O Claude Code assume uma janela de contexto de 200k tokens e só descobre o
limite real do seu plano quando uma chamada é rejeitada — defina
CLAUDE_CODE_AUTO_COMPACT_WINDOW para que ele compacte proativamente:
export ANTHROPIC_BASE_URL="https://api.trystac.com"
export ANTHROPIC_AUTH_TOKEN="your-stac-api-key"
export ANTHROPIC_API_KEY=""
export ANTHROPIC_MODEL="your-stack-model"
export ANTHROPIC_DEFAULT_SONNET_MODEL="$ANTHROPIC_MODEL"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="$ANTHROPIC_MODEL"
export ANTHROPIC_DEFAULT_OPUS_MODEL="$ANTHROPIC_MODEL"
export CLAUDE_CODE_AUTO_COMPACT_WINDOW=104000
claudecurl "$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": "your-stack-model",
"max_tokens": 1024,
"messages": [{ "role": "user", "content": "Hello" }]
}'{
"env": {
"ANTHROPIC_BASE_URL": "https://api.trystac.com",
"ANTHROPIC_AUTH_TOKEN": "your-stac-api-key",
"ANTHROPIC_API_KEY": "",
"ANTHROPIC_MODEL": "your-stack-model",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "your-stack-model",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "your-stack-model",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "your-stack-model",
"CLAUDE_CODE_AUTO_COMPACT_WINDOW": "104000"
}
}Bash exporta apenas para a sessão atual do shell — bom para testar o
Stac rapidamente. Curl confirma que sua chave e URL base realmente
funcionam antes de apontar o Claude Code para elas. Para uma configuração
que sobrevive a novos terminais, use a aba JSON em
~/.claude/settings.json (configuração do seu usuário, não a do projeto em
.claude/settings.json, que geralmente está versionada no git) — os valores
devem ser strings lá, e não há interpolação de variáveis, então o nome do
modelo é repetido nos quatro campos.
104000 corresponde a uma janela de 131072 tokens, deixando espaço para duas
coisas: a resposta em si, e uma turn grande depois que o Claude Code decide
compactar. Essa segunda reserva importa — a decisão é tomada a partir do
contexto da turn anterior, e ler um único arquivo de 60 KB são ~18k tokens,
o suficiente para ultrapassar o limite antes mesmo de a próxima requisição ser
enviada. Ajuste se a janela do seu plano (visível via
GET /v1/models) for diferente. Se o contexto
ainda transborda, use /clear em vez de /compact — /compact reenvia a
conversa inteira, que é exatamente o que não cabe mais.
Qual quer método você use, exportar essas variáveis como globais no shell
(em ~/.zshrc ou ~/.bashrc) redireciona todas as ferramentas com formato
Anthropic na máquina para o seu stack, não apenas o Claude Code.

