Si tu aplicación ya se comunica con la API de OpenAI, cambiar a Kunavo tarda unos diez minutos, la mayor parte dedicada al registro. Esta guía recorre las cuatro formas de integración más habituales y el cambio de una línea que necesita cada una.
Paso 0 — Obtén una clave (2 minutos)
- Regístrate en kunavo.com/app/signup. Recarga desde $10, paga por uso y tu saldo nunca caduca.
- Visita /app/keys y crea una clave. Comienza por
sk-kn-. - Establece la variable de entorno:
export KUNAVO_API_KEY=sk-kn-....
Paso 1 — Cambia tu SDK (1 minuto)
Python (paquete openai)
# Before — pointing at OpenAI directly
from openai import OpenAI
client = OpenAI(
api_key=os.environ["OPENAI_API_KEY"],
)
# After — pointing at Kunavo. Everything else stays the same.
from openai import OpenAI
client = OpenAI(
api_key=os.environ["KUNAVO_API_KEY"],
base_url="https://api.kunavo.com/v1",
)Node / TypeScript
// Before
import OpenAI from "openai";
const client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
// After
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.KUNAVO_API_KEY,
baseURL: "https://api.kunavo.com/v1",
});LangChain
LangChain utiliza internamente el mismo cliente de OpenAI, por lo que el cambio es idéntico. El ID del modelo ahora es un slug de Kunavo; consulta /models para ver la lista actualizada (prueba claude-sonnet-4-6, gpt-5-6-terra, claude-opus-4-7).
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="claude-sonnet-4-6", # switched the model
api_key=os.environ["KUNAVO_API_KEY"],
base_url="https://api.kunavo.com/v1",
)Vercel AI SDK
@ai-sdk/openai lee de forma predeterminada su URL base y su clave de API desde las variables de entorno. Configúralas y listo: todas las funciones auxiliares del framework (streamText, generateObject, reintentos y enrutamiento de herramientas) funcionan sin cambios.
import { openai } from "@ai-sdk/openai";
// @ai-sdk/openai reads OPENAI_BASE_URL automatically
process.env.OPENAI_BASE_URL = "https://api.kunavo.com/v1";
process.env.OPENAI_API_KEY = process.env.KUNAVO_API_KEY;
const model = openai("claude-sonnet-4-6");
// then use streamText / generateText / streamObject as beforeSDK de Anthropic (si ya usas Claude)
Kunavo expone la Messages API nativa de Anthropic en /v1/messages, además del formato de OpenAI, por lo que no tienes que cambiar de SDK.
from anthropic import Anthropic
# Before — Anthropic SDK against api.anthropic.com
client = Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])
# After — same SDK, against Kunavo. Caching, thinking, tools all pass through.
client = Anthropic(
api_key=os.environ["KUNAVO_API_KEY"],
base_url="https://api.kunavo.com", # SDK appends /v1/messages
)Paso 2 — Haz una prueba rápida del saldo (1 minuto)
Antes de modificar el código de producción, ejecuta una prueba económica contra claude-haiku-4-5. Si devuelve correctamente el resultado, tu clave funciona, la facturación funciona y la capa de enrutamiento está operativa.
# Cheap, deterministic-ish smoke test for migration validation.
resp = client.chat.completions.create(
model="claude-haiku-4-5", # the cheapest Claude
messages=[{"role": "user", "content": "ping"}],
max_tokens=8,
temperature=0,
)
assert resp.choices[0].message.content, "empty response"
print("ok — Kunavo wallet works, total cost ~$0.0001")Paso 3 — Traslada el tráfico (5 minutos)
El patrón seguro: dos variables de entorno en tu aplicación — AI_BASE_URL y AI_API_KEY — seleccionadas por entorno. Producción permanece en OpenAI; staging cambia a Kunavo. Después de 24 horas, cambia producción.
Si quieres conocer el impacto en costes antes de hacer el cambio, el panel de Kunavo muestra el coste por llamada frente a la tarifa oficial del upstream; así puedes calcular fácilmente el ahorro mensual proyectado con tus indicaciones reales.
Qué permanece igual
- Tu SDK y tu base de código.
- Streaming, llamadas a funciones, uso de herramientas, visión, salidas estructuradas.
- Los esquemas exactos de solicitudes y respuestas de OpenAI.
- La estructura de los errores (
error.message/error.type/error.code).
Qué cambia para mejor
- Precios. Los precios y los descuentos disponibles varían según el modelo; consulta las tarifas actuales en /pricing.
- Modalidad. El mismo SDK permite acceder a Claude (
claude-opus-4-7), GPT (gpt-5-6-sol), GPT-Image-2, Nano Banana, Veo 3 y Suno; consulta /models. - Facturación. Monedero de Stripe, con precios en USD. Tarjetas en todos los lugares; Apple Pay, Google Pay y Link en todos ellos salvo India; además de métodos locales según el país (Alipay y WeChat Pay en China, Cash App Pay, Klarna y ACH en EE. UU., UPI en India, KakaoPay en Corea…) — la lista completa está en /docs/billing.
- Conmutación por error. Conmutación en caliente entre varios proveedores, con redireccionamiento automático dentro de la misma solicitud cuando un proveedor ascendente presenta inestabilidad.
Notas sobre los casos problemáticos
- Endpoints específicos de OpenAI que actualmente no cubrimos:
/v1/responses(usa/v1/chat/completions),/v1/assistants(el estado queda de tu lado; somos una pasarela sin estado),/v1/realtime(previsto). - Algunas funciones específicas de Claude —
cache_control,thinkingextendido — funcionan mejor mediante el endpoint nativo /v1/messages, no con el formato de OpenAI.
¿Te has quedado atascado? contact@kunavo.com; una persona responderá en un día laborable. Si estás realizando una migración importante, nos reuniremos contigo en una llamada.