Los tres valores
- URL base
https://nokeep.ai/v1- Clave de API
sk-nokeep-test (free) or your sk-nokeep-… key- Modelo
deepseek-v4.1-flash-uncensored
Los SDK oficiales de OpenAI leen la URL base y la clave del entorno, así que en muchos proyectos el cambio no requiere tocar código:
export OPENAI_BASE_URL="https://nokeep.ai/v1"
export OPENAI_API_KEY="sk-nokeep-…"Luego cambia el nombre del modelo donde lo llamas. Todo lo demás se queda igual.
En Python, JavaScript y 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)El streaming, las herramientas, la salida JSON y las imágenes funcionan igual que en el formato de OpenAI. Las bibliotecas y frameworks construidos sobre el SDK de OpenAI usan la misma URL base y la misma clave. Prueba la llamada aquí primero:
Lo que se admite
| Función | Compatible |
|---|---|
POST /v1/chat/completions, completo o en streaming | Sí, ambos modelos |
GET /v1/models y GET /v1/models/{id} | Sí, con longitud de contexto, respuesta más larga y precio por token |
| Roles: system, developer, user, assistant, tool | Sí |
Llamadas a herramientas: tools, tool_choice | Sí. En GLM, tool_choice acepta solo auto o none. |
reasoning_effort | DeepSeek: none, low, high, max. GLM: low, high. |
Imágenes como partes image_url, enlaces o data URLs | deepseek-v4.1-flash-uncensored, hasta 10 por solicitud |
response_format, temperature, top_p, stop, seed, penalizaciones | deepseek-v4.1-flash-uncensored |
stream_options.include_usage, max_tokens, max_completion_tokens | Sí |
Entrada en caché en usage.prompt_tokens_details.cached_tokens | Sí, se cobra al precio en caché |
Cada campo, modelo por modelo: Chat completions.
Lo que no se admite
| No admitido | Lo que recibes |
|---|---|
| Otros endpoints: embeddings, imágenes, audio, archivos, batch, moderaciones, las APIs de Responses y Assistants, completions heredados | 404 not_found, que nombra las cuatro rutas que hay |
n distinto de 1 | 400 unsupported_n |
Un reasoning_effort que el modelo no acepta | 400 invalid_reasoning_effort, que nombra los que sí acepta |
Una función con nombre o required como tool_choice en glm-5.3-flash-uncensored | 400 unsupported_tool_choice |
Imágenes a glm-5.3-flash-uncensored; partes de audio o video a cualquiera de los dos modelos | 400 unsupported_input, que nombra el modelo que lee imágenes |
| Más de 10 imágenes, o más de 2,000 mensajes | 400 too_many_images, 400 invalid_messages |
Campos que ninguno de los dos modelos acepta, como logprobs, logit_bias, user o store | Se descartan, y se nombran en el encabezado x-nokeep-ignored |
Nada de lo no admitido se adivina ni se cambia en silencio: una solicitud se rechaza con un código, o sus campos no usados se nombran en un encabezado. Cada código y su solución: Errores.
Pequeñas diferencias que conviene saber
usage.nokeep_creditsindica lo que costó la llamada, y los encabezadosx-nokeep-creditsyx-nokeep-balancelo indican en una respuesta completa.- La facturación es con créditos prepagados: 1,000 son $1, desde $5, y nunca caducan. Una llamada rechazada no cuesta nada.
- Límite de frecuencia: 120 solicitudes por minuto por clave. Un
429incluyeRetry-After. - El host de GLM puede estar ocupado en horas pico; una llamada ocupada responde
503 busyconRetry-After: 5y no cuesta nada.
Preguntas
¿Necesito cambiar mi código para cambiar de API?
Solo la URL base, la clave y el nombre del modelo. Con los SDK oficiales, las dos primeras pueden venir de OPENAI_BASE_URL y OPENAI_API_KEY en el entorno.
¿Funciona con apps que aceptan un endpoint personalizado de OpenAI?
Sí. Cualquier app con una opción de endpoint compatible con OpenAI o personalizado funciona. Guías: SillyTavern, Open WebUI, y agentes de programación en la página de agentes de programación.
¿Qué modelos de OpenAI puedo llamar?
Ninguno: el formato es el de OpenAI, pero los modelos son deepseek-v4.1-flash-uncensored y glm-5.3-flash-uncensored. GET /v1/models lista todos los ids.
¿Hay un endpoint de embeddings?
Todavía no. La API sirve chat completions, la lista de modelos y una ruta de estado. Las rutas nuevas aparecerán en el registro de cambios.
¿Qué pasa con los campos que no admiten?
Se descartan y se nombran en el encabezado x-nokeep-ignored, para que veas exactamente qué no se usó. Los valores que cambiarían el sentido de una solicitud, como n mayor que 1, se rechazan con un 400.