Inicio → Guías → OpenCode con una API personalizada: configuración, Claude, small_model y costes reales
OpenCode lee sus proveedores de opencode.json, así que la configuración es un solo archivo. Lo que nos sorprendió fue la factura: pedirle una sola palabra generó dos solicitudes y más de 12.000 tokens de entrada. Ejecutamos OpenCode 1.19.0 contra nuestra pasarela con tres modelos para mostrar adónde van los tokens y cómo recortarlos.
Pon esto en ~/.config/opencode/opencode.json (o en opencode.json dentro del proyecto):
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"apiclan": {
"npm": "@ai-sdk/openai-compatible",
"name": "APICLAN",
"options": {
"baseURL": "https://apiclan.us/v1",
"apiKey": "{env:APICLAN_GPT_KEY}"
},
"models": {
"gpt-6-astra": {},
"gpt-6.1-sol": {}
}
}
}
}
APICLAN_GPT_KEY.models pon solo modelos del grupo de esa clave. Cada clave pertenece a un único grupo, así que GPT, DeepSeek y Claude necesitan cada uno su propia entrada de proveedor y su clave.opencode, escribe /models y elige APICLAN → gpt-6-astra. En scripts: opencode run -m apiclan/gpt-6-astra "...".| baseURL | Resultado |
|---|---|
https://apiclan.us/v1 | ✓ |
https://apiclan.us | ✗ 404 Not Found |
@ai-sdk/openai-compatible solo añade /chat/completions a baseURL, así que el /v1 tiene que estar ya. Sin él, OpenCode se detiene con un escueto Not Found.
Añade un segundo proveedor dentro de provider, con el paquete de Anthropic y una clave de un grupo de Claude:
"claude": {
"npm": "@ai-sdk/anthropic",
"name": "APICLAN Claude",
"options": {
"baseURL": "https://apiclan.us/v1",
"apiKey": "{env:APICLAN_CLAUDE_KEY}"
},
"models": { "claude-fable-5-1": {} }
}
Aquí baseURL también debe terminar en /v1: el paquete de Anthropic solo añade /messages, y https://apiclan.us a secas devolvió 404 en nuestra prueba. Es lo contrario de Claude Code, cuyo ANTHROPIC_BASE_URL no debe llevar /v1.
Pedimos a OpenCode «Reply with just OK» en un proyecto vacío. Todos los modelos hicieron dos solicitudes: una para poner título a la sesión y la real, que lleva el prompt de sistema y las definiciones de herramientas de OpenCode.
| Modelo | Solicitudes | Tokens de entrada (título + respuesta) | Tiempo total | Coste |
|---|---|---|---|---|
gpt-6-astra | 2 | 4,640 + 7,678 | 20.5 s | $0.050 |
deepseek-v4-pro | 2 | 528 + 5,708 | 34.1 s | $0.005 |
deepseek-v4.1-flash | 2 | 529 + 3,027 | 21.8 s | $0.0006 |
OpenCode envía a los modelos GPT un prompt de sistema mucho más largo (unos 7.700 tokens) que a DeepSeek (unos 3.000), y solo la solicitud de título usó 4.640 tokens en GPT. Por eso el mismo «OK» costó unas 77 veces más en gpt-6-astra que en deepseek-v4.1-flash. Prueba del 12 de octubre de 2026 con OpenCode 1.19.0; costes según lo facturado por nuestra pasarela.
OpenCode usa small_model para tareas secundarias como los títulos de sesión. Apúntalo a un modelo barato en su propio proveedor:
"small_model": "apiclan-ds/deepseek-v4.1-flash",
"provider": {
"apiclan": { ... },
"apiclan-ds": {
"npm": "@ai-sdk/openai-compatible",
"options": {
"baseURL": "https://apiclan.us/v1",
"apiKey": "{env:APICLAN_DS_KEY}"
},
"models": { "deepseek-v4.1-flash": {} }
}
}
Con gpt-6-astra como modelo principal, la solicitud de título bajó de 0,0187 $ a 0,00003 $ y todo el intercambio de una palabra de 0,050 $ a 0,031 $: un 38 % menos en cada sesión nueva, sin cambiar las respuestas.
La misma tarea para cada modelo: escribir fizzbuzz.py y sus pruebas de pytest, sin ejecutar comandos. Después comprobamos cada función con la salida correcta para 1 a 30.
| Modelo | Solicitudes | Tiempo total | Coste | Correcto | Aserciones de prueba |
|---|---|---|---|---|---|
gpt-6-astra | 3 | 40 s | $0.069 | ✓ | 2 |
deepseek-v4-pro | 3 | 61 s | $0.008 | ✓ | 7 |
deepseek-v4.1-flash | 3 | 25 s | $0.0011 | ✓ | 7 |
Los tres escribieron código correcto en tres solicitudes. deepseek-v4.1-flash fue el más rápido y costó cerca de 1/60 de gpt-6-astra; los dos modelos de DeepSeek además escribieron pruebas más completas. deepseek-v4-pro fue el más lento porque razona antes de cada paso. El tiempo total incluye unos segundos de arranque del propio OpenCode.
baseURL sin /v1.apiKey no está definida en la terminal desde la que arrancas OpenCode.is not supported by any configured account in this group) → un modelo de models no está en el grupo de la clave; por ejemplo, un modelo GPT en un proveedor con clave de DeepSeek.Otras herramientas de código: Cline con una API personalizada · Codex con una API personalizada.
Sin suscripción, sin mínimo mensual, sin llamada comercial. Recarga con USDT y gasta lo que uses — 1 USDT te da 2 créditos de saldo de API.
Lee el inicio rápido de 30 segundosIdioma: English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Deutsch · Français · Español · Türkçe · Português · Italiano · Bahasa Indonesia · Tiếng Việt · Bahasa Melayu · Polski · Čeština · فارسی · Русский
Los precios de esta página se rellenan automáticamente con datos de facturación reales. Las condiciones de terceros se citan de su propia documentación.