Pular para o conteúdo

Compatível com a OpenAI

Uma API compatível com a OpenAI, pronta para trocar

Mantenha o SDK da OpenAI e o código que você já tem. Troque três valores, a URL base, a chave e o modelo, e os seus chat completions passam a rodar em dois modelos sem censura que não guardam nada. Abaixo: a troca em Python, JavaScript e curl, e a lista exata do que é suportado.

Verificado em 29 de outubro de 2026

valores para trocar no seu código
3
campos opcionais de requisição repassados
15
rotas, incluindo chat completions
4
para testar com sk-nokeep-test
$0

Os três valores

URL base
https://nokeep.ai/v1
Chave de API
sk-nokeep-test (free) or your sk-nokeep-… key
Modelo
deepseek-v4.1-flash-uncensored

Os SDKs oficiais da OpenAI leem a URL base e a chave do ambiente, então, em muitos projetos, a troca não exige nenhuma mudança de código:

Shell
export OPENAI_BASE_URL="https://nokeep.ai/v1"
export OPENAI_API_KEY="sk-nokeep-…"

Depois, troque o nome do modelo onde você faz a chamada. Todas as outras linhas continuam iguais.

Em Python, JavaScript e curl

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://nokeep.ai/v1",
    api_key=os.environ["NOKEEP_API_KEY"],
)

reply = client.chat.completions.create(
    model="deepseek-v4.1-flash-uncensored",
    messages=[{"role": "user", "content": "Write a haiku about moving house."}],
)
print(reply.choices[0].message.content)

Streaming, ferramentas, saída em JSON e imagens funcionam como no formato próprio da OpenAI. Bibliotecas e frameworks construídos sobre o SDK da OpenAI usam a mesma URL base e a mesma chave. Experimente a chamada aqui primeiro:

Experimente aqui, grátis

Isso envia uma requisição real à API com a chave de teste. Ela responde uma linha fixa e não custa nada.

O que é suportado

RecursoSuportado
POST /v1/chat/completions, completo ou em streamingSim, os dois modelos
GET /v1/models e GET /v1/models/{id}Sim, com tamanho de contexto, resposta mais longa e preço por token
Papéis: system, developer, user, assistant, toolSim
Chamadas de ferramenta: tools, tool_choiceSim. No GLM, tool_choice aceita só auto ou none.
reasoning_effortDeepSeek: none, low, high, max. GLM: low, high.
Imagens como partes image_url, links ou data URLsdeepseek-v4.1-flash-uncensored, até 10 por requisição
response_format, temperature, top_p, stop, seed, penalidadesdeepseek-v4.1-flash-uncensored
stream_options.include_usage, max_tokens, max_completion_tokensSim
Entrada em cache em usage.prompt_tokens_details.cached_tokensSim, cobrada pelo preço de cache

Cada campo, modelo por modelo: Chat completions.

O que não é

Não suportadoO que você recebe
Outras rotas: embeddings, imagens, áudio, arquivos, batch, moderações, as APIs Responses e Assistants, completions legadas404 not_found, com o nome das quatro rotas que existem
n diferente de 1400 unsupported_n
Um reasoning_effort que o modelo não aceita400 invalid_reasoning_effort, com o nome dos que ele aceita
Uma função nomeada ou required como tool_choice em glm-5.3-flash-uncensored400 unsupported_tool_choice
Imagens para glm-5.3-flash-uncensored; partes de áudio ou vídeo para qualquer um dos modelos400 unsupported_input, com o nome do modelo que lê imagens
Mais de 10 imagens, ou mais de 2.000 mensagens400 too_many_images, 400 invalid_messages
Campos que nenhum dos modelos aceita, como logprobs, logit_bias, user ou storeDescartados, e nomeados no cabeçalho x-nokeep-ignored

Nada sem suporte é adivinhado nem trocado em silêncio: a requisição é recusada com um código, ou os campos não usados são nomeados em um cabeçalho. Cada código e a sua correção: Erros.

Pequenas diferenças que vale saber

  • usage.nokeep_credits informa quanto a chamada custou, e os cabeçalhos x-nokeep-credits e x-nokeep-balance informam isso em uma resposta inteira.
  • A cobrança é feita com créditos pré-pagos: 1.000 valem US$ 1, a partir de US$ 5, e nunca expiram. Uma chamada recusada não custa nada.
  • Limite de taxa: 120 requisições por minuto por chave. Um 429 traz Retry-After.
  • O host do GLM pode ficar ocupado nos horários de pico; uma chamada ocupada responde 503 busy com Retry-After: 5 e não custa nada.

Perguntas

Preciso mudar o meu código para trocar?

Só a URL base, a chave e o nome do modelo. Com os SDKs oficiais, as duas primeiras podem vir de OPENAI_BASE_URL e OPENAI_API_KEY no ambiente.

Funciona com apps que aceitam um endpoint personalizado da OpenAI?

Sim. Qualquer app com uma configuração de endpoint compatível com a OpenAI ou personalizado funciona. Guias: SillyTavern, Open WebUI e agentes de código na página de agentes de código.

Quais modelos da OpenAI posso chamar?

Nenhum: o formato é o da OpenAI, mas os modelos são deepseek-v4.1-flash-uncensored e glm-5.3-flash-uncensored. GET /v1/models lista todos os ids.

Existe um endpoint de embeddings?

Ainda não. A API serve chat completions, a lista de modelos e uma rota de status. Novas rotas aparecerão no changelog.

O que acontece com os campos que vocês não suportam?

Eles são descartados e nomeados no cabeçalho x-nokeep-ignored, para você ver exatamente o que não foi usado. Valores que mudariam o sentido de uma requisição, como n acima de 1, são recusados com um 400.