URL Base y Autenticación
La URL base para todas las solicitudes es https://api.veniceaiapipricing.com/v1. Autentícate pasando tu clave API en el Authorization header como token bearer. Esta configuración funciona con cualquier SDK estándar de OpenAI. Reemplaza YOUR_API_KEY con la clave generada desde el panel de control de tu cuenta.
- Punto final:
POST /v1/chat/completions - Encabezado:
Authorization: Bearer YOUR_API_KEY
curl https://api.veniceaiapipricing.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Return server status code 200"}]
}'
El Endpoint /v1/chat/completions
Envía tu historial de conversaciones a /v1/chat/completions usando el uncensored ID del modelo. La API acepta objetos de mensaje estándar con role y content campos. Los tokens de entrada cuestan $0.15 por millón, y los tokens de salida cuestan $0.50 por millón. Los errores y rechazos no consumen crédito.
Este endpoint admite generación solo de texto. No maneja imágenes, audio ni incrustaciones. Puedes transmitir respuestas o recuperar el texto completo en un solo objeto JSON.
from openai import OpenAI
client = OpenAI(base_url="https://api.veniceaiapipricing.com/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)
Respuestas en streaming (SSE)
Habilita la transmisión estableciendo stream: true en tu cuerpo de solicitud. La API devuelve Eventos Enviados por Servidor (SSE) para cada token generado. El último fragmento contiene las estadísticas totales de uso de tokens. Este método reduce la latencia percibida para respuestas largas.
El manejo de flujos es esencial para aplicaciones en tiempo real. Puedes procesar tokens a medida que llegan en lugar de esperar la finalización completa.
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)
Llamada de Función y Modo JSON
La API admite salidas estructuradas y definiciones de herramientas. Usa response_format: {"type": "json_object"} para forzar la salida JSON. También puedes pasar tools para llamadas de funciones, permitiendo que el modelo devuelva datos estructurados para la lógica de tu aplicación.
Esta característica es útil para extraer datos o desencadenar acciones. El modelo devuelve llamadas a herramientas en un formato estandarizado. Luego puedes ejecutar tus funciones y devolver los resultados a la conversación.
Parámetros: Temperatura, Top P y Seeds
Controla la creatividad con temperature y top_p. El seed parameter asegura salidas deterministas para pruebas. Estos parámetros siguen las convenciones estándar de OpenAI. Ajustarlos afecta la aleatoriedad del texto generado.
Establecer temperature a 0.7 para una creatividad equilibrada. Usa seed para resultados reproducibles. La API ignora los parámetros no admitidos de manera elegante.
Límites de velocidad y restricciones
Estás limitado a 300 solicitudes por minuto por clave. Se permiten un máximo de 8 solicitudes concurrentes por clave. El tamaño del cuerpo de la solicitud está limitado a 8 MB. La ventana de contexto es de 100.000 tokens para la entrada y la salida combinadas. La salida máxima por solicitud es de 16.000 tokens.
Superar estos límites devuelve un error 429. Asegúrate de que tu cliente maneje los reintentos apropiadamente. La clave de API es única por cuenta; generar una nueva clave reemplaza a la antigua.
Node.js
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.veniceaiapipricing.com/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);