Autenticación
La autenticación se maneja mediante una única clave de API. Puedes registrarte con Google o correo y contraseña en la página Obtener clave de API. La clave se muestra inmediatamente y está vinculada a tu crédito prepago. A diferencia de los grandes proveedores, no hay suscripciones mensuales ni se requiere tarjeta de crédito para la prueba. Usa el encabezado Authorization: Bearer YOUR_API_KEY para todas las peticiones. Tu clave es la única credencial activa por cuenta; generar una nueva invalida la anterior.
Finalización básica
Envía una petición estándar de finalización de chat al endpoint compatible con OpenAI. El identificador del modelo es uncensored. Este modelo de pesos abiertos está ajustado para responder sin rechazos de contenido para uso adulto lícito. No es GPT, Claude ni ningún otro modelo de proveedor. La URL base para este servicio se proporciona a continuación.
curl https://api.ornith.top/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Write a blunt product review of a cheap VPN."}]
}'Reemplaza YOUR_API_KEY con tu clave del panel. La respuesta incluye el texto generado en choices[0].message.content. Errores como 401 indican una clave inválida, mientras que 402 significa que tu crédito prepago se agotó.
SDK Python
Usa el paquete oficial de Python openai. Dirígelo a la URL base de Ornith y proporciona tu clave de API. Esto garantiza la compatibilidad con la estructura estándar del cliente de OpenAI. Puedes pasar mensajes como una lista de diccionarios que contienen role y content. El cliente gestiona las peticiones HTTP automáticamente. Este enfoque funciona tanto para la generación de texto simple como para interacciones más complejas usando herramientas o modo JSON.
from openai import OpenAI
client = OpenAI(base_url="https://api.ornith.top/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)El objeto de respuesta refleja la estructura estándar de OpenAI. Puedes acceder al texto generado directamente desde el objeto de respuesta. Este método es ideal para servicios backend o scripts donde necesitas acceso programático a la salida del modelo.
SDK Node.js
Instala el paquete npm openai. Inicializa el cliente con la URL base de Ornith y tu clave de API. La estructura de la petición es idéntica al SDK Python. Usa el método chat.completions.create. Esto es adecuado para entornos JavaScript, ya sea que estés construyendo un backend web o una herramienta CLI. El cliente maneja la serialización y deserialización de la respuesta.
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.ornith.top/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);Maneja los errores apropiadamente. Los errores de red o de API lanzarán excepciones. Verifica el código de estado para distinguir entre fallos de autenticación, límites de peticiones o errores del servidor. La respuesta contiene los detalles de la finalización en el mismo formato que el SDK Python.
Respuestas en streaming
Habilita el streaming estableciendo stream: true en tu petición. Esto devuelve un flujo de tokens a medida que se generan. Úsalo para actualizaciones de UI en tiempo real o visualización progresiva de texto. El flujo termina con un fragmento final que contiene el uso total de tokens. Esto te permite rastrear costos en tiempo real sin esperar la respuesta completa. Es eficiente para contextos largos donde quieres mostrar el progreso.
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Tell the story in second person."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)Itera sobre el flujo para procesar cada fragmento. El último fragmento incluye el campo usage. Esto es útil para la transparencia de facturación. Asegúrate de que tu cliente maneje el flujo correctamente para evitar problemas de memoria con respuestas grandes.
Límites, errores y contexto
La ventana de contexto es de 100.000 tokens para el prompt y la completion combinados. La salida máxima por petición es de 32.000 tokens (2.048 si max_tokens no está establecido). Tienes un límite de 300 peticiones por minuto y 8 peticiones simultáneas por clave. Los cuerpos de las peticiones deben ser inferiores a 8 MB. Si superas el límite de peticiones, recibes un error 429. Las denegaciones por contenido menor de edad están codificadas y siempre se aplican. Los errores no consumen crédito. El crédito es prepago y no caduca.