Voltar aos guias
API·1 de julho de 2026·Atualizado em 4 de outubro de 2026·7 min de leitura

Guia de APIs compatíveis com OpenAI — do endpoint local do Ollama aos modelos de ponta hospedados

“Compatível com OpenAI” significa que qualquer SDK da OpenAI funciona alterando apenas base_url. O Ollama expõe um para modelos locais; o Kunavo expõe um para modelos de fronteira hospedados. Veja o padrão e como alternar entre eles sem reescrever o código.

Última revisão em .

"Compatível com OpenAI" significa que uma API fala o mesmo formato de rede que /v1/chat/completions da OpenAI — portanto, qualquer SDK ou ferramenta da OpenAI funciona com ela alterando apenas base_url. O Ollama expõe um endpoint compatível com OpenAI para modelos executados localmente na sua máquina. O Kunavo expõe um para modelos de fronteira hospedados — Claude, GPT e modelos de imagem, vídeo e áudio — por trás de um único bearer token. Este guia mostra o padrão e como alternar entre eles sem reescrever o código.

O que significa “compatível com OpenAI”

O formato Chat Completions da OpenAI tornou-se o padrão de fato: um array messages na entrada, um choices[].message na saída, Server-Sent Events para streaming e tools para chamadas de função. Qualquer endpoint que respeite esse contrato é “compatível com OpenAI”, e os SDKs oficiais openai (Python, Node e todas as implementações da comunidade) apontam para ele definindo base_url.

O padrão do Ollama (local)

O Ollama executa modelos abertos localmente e os disponibiliza em http://localhost:11434/v1:

ollama.py
from openai import OpenAI

# Ollama exposes an OpenAI-compatible endpoint on localhost
client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")

resp = client.chat.completions.create(
    model="llama3.1",
    messages=[{"role": "user", "content": "Summarize this changelog."}],
)
print(resp.choices[0].message.content)

Mesmo código, modelos de fronteira hospedados (Kunavo)

Aponte o mesmo SDK para o Kunavo e escolha um modelo de fronteira. Apenas base_url, api_key e model mudam — a chamada é exatamente igual byte a byte:

kunavo.py
import os
from openai import OpenAI

# Same SDK, same call shape — only base_url, api_key and model change
client = OpenAI(
    base_url="https://api.kunavo.com/v1",
    api_key=os.environ["KUNAVO_API_KEY"],
)

resp = client.chat.completions.create(
    model="claude-sonnet-5",  # or claude-haiku-4-5, gpt-5-5, gpt-5-6-terra...
    messages=[{"role": "user", "content": "Summarize this changelog."}],
)
print(resp.choices[0].message.content)

Obtenha uma chave em /app/keys; o quickstart inclui exemplos com Node e curl.

Local versus hospedado — quando usar cada um

Ollama (local)Kunavo (hospedado)
Qualidade do modeloModelos abertos (Llama, Qwen, Mistral)Fronteira: Claude, GPT
HardwareSua GPU / RAMNenhum — totalmente hospedado
CustoGrátis (sua eletricidade)Pay-as-you-go, abaixo da tabela
PrivacidadeTotalmente offlineHospedado nos EUA e encaminhado ao provider do modelo, cuja política de retenção se aplica; sem DPA ou ZDR
MultimodalLimitadoImagem, vídeo e áudio em uma única chave

Uma configuração comum: Ollama em localhost para desenvolvimento offline, Kunavo para qualidade hospedada em produção — uma variável de ambiente alterna entre eles. Para o contrato campo a campo implementado por ambas as pontas — parâmetros, deltas de streaming, tool_calls, o objeto usage e a tabela de paridade com a superfície v1 do Ollama — consulte a referência de /v1/chat/completions e sua seção de compatibilidade OpenAI do Ollama.

Descobrir modelos em tempo de execução

Assim como o /api/tags do Ollama, o Kunavo expõe um catálogo no formato da OpenAI. Resolva os slugs em tempo de execução em vez de fixá-los no código:

models.sh
# Discover every enabled model (OpenAI-shaped, like Ollama's /api/tags)
curl https://api.kunavo.com/v1/models \
  -H "Authorization: Bearer $KUNAVO_API_KEY"

Além do chat

A mesma chave alcança endpoints de imagem (/v1/images/generations), vídeo (/v1/video/generations) e áudio — todos no formato da OpenAI. Consulte o guia de IA multimodal e a comparação com o OpenRouter para saber como o Kunavo difere de outros gateways.

Uma superfície vai além da definição usual de “compatível” e vale a pena conhecer: POST /v1/responses. A CLI do Codex aceita um provedor personalizado apenas pela Responses API, motivo pelo qual a maioria dos gateways compatíveis com OpenAI não consegue operá-la — quanto custa o Codex por token resolve isso com um bloco de configuração funcional. Para calcular o preço de um workload GPT incluindo entrada em cache, a calculadora de preços da API da OpenAI usa suas próprias contagens de tokens.

Perguntas frequentes

O que é uma API compatível com OpenAI?

Uma API que fala o mesmo formato de rede que /v1/chat/completions da OpenAI — mesmo corpo da solicitação, mesmo formato de resposta e mesmo streaming. Qualquer SDK ou ferramenta da OpenAI funciona com ela alterando apenas base_url e api_key. O Ollama expõe uma para modelos locais; o Kunavo expõe uma para modelos de fronteira hospedados.

Existe uma API compatível com OpenAI para modelos hospedados, como o Ollama tem para modelos locais?

Sim. O endpoint compatível com OpenAI do Ollama executa modelos locais na sua máquina; o do Kunavo executa Claude, GPT e modelos de imagem, vídeo e áudio hospedados por trás de um único base_url (https://api.kunavo.com/v1) e um único bearer token. O código de chamada é idêntico.

Posso manter o Ollama localmente e usar o Kunavo em produção?

Sim — esse é um padrão comum. Como ambos são compatíveis com OpenAI, você alterna entre ambientes trocando base_url e model: Ollama em localhost para desenvolvimento offline, Kunavo para qualidade de fronteira hospedada em produção. Nenhuma mudança no SDK.

Quais modelos posso chamar pelo endpoint compatível com OpenAI?

Todos os modelos habilitados — Claude, GPT e outros para chat, além de imagem, vídeo e áudio em seus próprios endpoints no formato da OpenAI. GET /v1/models retorna a lista atual; resolva os slugs em tempo de execução em vez de fixá-los no código. Consulte o catálogo de modelos.

E quanto aos limites de taxa?

Cada provedor controla seus próprios limites, e um 429 significa que você ultrapassou um deles — consulte limites de taxa da API da OpenAI para entender qual limite foi acionado e qual backoff o corrige, e Claude API 429 rate_limit_error para o equivalente da Anthropic.