Guías
Compatibilidad con Anthropic
Qué es idéntico, qué difiere y cómo apuntar un cliente con formato de Anthropic a Stac.
Stac también implementa la API Messages de Anthropic, así que las herramientas
nativas de Claude y el SDK anthropic funcionan contra tu stack sin traducir
las solicitudes al formato de 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,
});¿Construyendo contra el formato de OpenAI en su lugar? Consulta Compatibilidad con OpenAI — mismo modelo subyacente, diferente formato de solicitud/respuesta.
Compatibilidad
| Característica | Estado |
|---|---|
POST /v1/messages | Completo |
POST /v1/messages/count_tokens | Completo |
| Streaming (SSE, formato de eventos de Anthropic) | Completo |
| Uso de herramientas | Completo |
| Bloques de contenido de imagen | Depende del modelo — consulta capabilities en GET /v1/models |
x-api-key y Authorization: Bearer | Ambos aceptados |
Caché de prompt (cache_control) | Aceptado, sin efecto — no hay un medidor por token contra el que ahorrar dinero |
Diferencias importantes
modelsiempre se ignora. Tu stack tiene exactamente un modelo asignado; cualquier valor que envíes es reemplazado por él. Solo es obligatorio en el cuerpo de la solicitud porque el formato de Anthropic espera el campo.max_tokensse ajusta, no solo es obligatorio. Las solicitudes tienen un mínimo de 8000 y un máximo de 16000. Consulta Messages.systemreemplaza la configuración de tu stack, la misma regla que en chat completions: no envíessystempara mantener el prompt configurado de tu stack y la base de conocimiento; envía uno (no vacío) para anular ambos en esa solicitud. Consulta Conceptos básicos.- El límite de tasa es por clave, no por nivel. Consulta Errores y límites de tasa.
Los parámetros desconocidos se ignoran en lugar de ser rechazados, así que una versión más reciente del SDK permanece compatible con una versión más antigua del gateway.
Herramientas de CLI
Claude Code
Claude Code asume una ventana de contexto de 200k tokens y solo descubre el
límite real de tu plan cuando una llamada es rechazada. Establece
CLAUDE_CODE_AUTO_COMPACT_WINDOW para que compacte de forma proactiva en
su lugar:
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 las variables solo para la sesión actual del shell —
adecuado para probar Stac rápidamente. Curl confirma que tu clave y URL
base realmente funcionan antes de apuntar Claude Code a ellas. Para una
configuración que sobreviva a nuevos terminales, usa la pestaña JSON en
~/.claude/settings.json (tu configuración de usuario, no la del proyecto
.claude/settings.json, que usualmente se commitea a git): los valores deben
ser cadenas allí, y no hay interpolación de variables, así que el nombre del
modelo se repite en los cuatro campos de modelo.
104000 coincide con una ventana de 131072 tokens, dejando espacio para dos
cosas: la respuesta en sí, y un turno grande después de que Claude Code decida
compactar. Esa segunda reserva importa: la decisión se toma desde el contexto
del turno anterior, y leer un solo archivo de 60 KB son ~18k tokens,
suficiente para superar el límite antes de que la siguiente solicitud se
envíe incluso. Ajústalo si la ventana de tu plan (visible a través de
GET /v1/models) es diferente. Si el contexto
aún se desborda, usa /clear en lugar de /compact — /compact reenvía
toda la conversación, que es exactamente lo que ya no cabe.
Cualquiera sea el método que uses, exportar esto como variables globales
del shell (en ~/.zshrc o ~/.bashrc) redirige todas las herramientas con
formato de Anthropic de la máquina hacia tu stack, no solo Claude Code.

