Se seu aplicativo já conversa com a API da OpenAI, mudar para o Kunavo leva cerca de dez minutos — a maior parte desse tempo é para se cadastrar. Este guia percorre os quatro formatos de integração mais comuns entre as equipes e a alteração de uma linha necessária em cada um.
Etapa 0 — Obtenha uma chave (2 minutos)
- Cadastre-se em kunavo.com/app/signup. Recarregue a partir de US$ 10, pague conforme o uso e seu saldo nunca expira.
- Acesse /app/keys e crie uma chave. Ela começa com
sk-kn-. - Defina a variável de ambiente:
export KUNAVO_API_KEY=sk-kn-....
Etapa 1 — Troque seu SDK (1 minuto)
Python (pacote 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
O LangChain usa internamente o mesmo cliente da OpenAI, portanto a alteração é idêntica. O ID do modelo agora é um slug do Kunavo — veja /models para a lista atualizada (experimente 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 lê a URL base e a chave de API das variáveis de ambiente por padrão. Defina-as e pronto — todos os auxiliares do framework (streamText, generateObject, novas tentativas e roteamento de ferramentas) funcionam sem alterações.
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 da Anthropic (se você já usa Claude)
O Kunavo expõe a Messages API nativa da Anthropic em /v1/messages, além do formato da OpenAI — portanto, você não precisa trocar 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
)Etapa 2 — Faça um teste rápido do saldo (1 minuto)
Antes de alterar o código de produção, execute um teste barato contra claude-haiku-4-5. Se isso retornar com sucesso, sua chave funciona, a cobrança funciona e a camada de roteamento está saudável.
# 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")Etapa 3 — Mova o tráfego (5 minutos)
O padrão seguro: duas variáveis de ambiente no seu aplicativo — AI_BASE_URL e AI_API_KEY — selecionadas por ambiente. A produção permanece na OpenAI; o staging muda para o Kunavo. Depois de 24 horas, mude a produção.
Se quiser entender o impacto no custo antes da migração, o dashboard do Kunavo mostra o custo por chamada em comparação com a tarifa oficial do upstream — é fácil calcular a economia mensal projetada com seus prompts reais.
O que permanece igual
- Seu SDK e sua base de código.
- Streaming, chamadas de função, uso de ferramentas, visão e saídas estruturadas.
- Os esquemas exatos de solicitação e resposta da OpenAI.
- Formato dos erros (
error.message/error.type/error.code).
O que muda para melhor
- Preços. Os preços e descontos disponíveis variam de acordo com o modelo — consulte as tarifas atuais em /pricing.
- Modalidade. O mesmo SDK alcança Claude (
claude-opus-4-7), GPT (gpt-5-6-sol), GPT-Image-2, Nano Banana, Veo 3 e Suno — veja /models. - Faturamento. Carteira Stripe, com preços em USD. Cartões em todos os lugares; Apple Pay, Google Pay e Link em todos os lugares, exceto na Índia; além de métodos locais por país (Alipay e WeChat Pay na China, Cash App Pay, Klarna e ACH nos EUA, UPI na Índia, KakaoPay na Coreia…) — a lista completa está em /docs/billing.
- Failover. Failover imediato entre vários fornecedores, com redirecionamento automático dentro da mesma solicitação quando um upstream oscila.
Observações sobre o caminho de erro
- Endpoints específicos da OpenAI que não cobrimos hoje:
/v1/responses(use/v1/chat/completions),/v1/assistants(mantenha o estado do seu lado; somos um gateway sem estado),/v1/realtime(planejado). - Alguns recursos específicos do Claude —
cache_control,thinkingestendido — funcionam melhor pelo endpoint nativo /v1/messages, não pelo formato da OpenAI. - O cache de prompts não é um deles: no formato da OpenAI, o Kunavo define ele mesmo os pontos de interrupção do cache do Claude em um prompt longo, e um
cache_controlque você coloque em uma mensagem ou em uma definição de ferramenta é repassado ao Claude.
Travou? contact@kunavo.com — uma pessoa responde em até um dia útil. Se você estiver fazendo uma migração importante, marcaremos uma reunião.