ACCESO TEMPRANADO: Las características, precios y parámetros pueden cambiar en el futuro.
Impulsado por una arquitectura optimizada basada en Blibs, nuestra API compatible con OpenAI ofrece inferencia de alto rendimiento para modelos de lenguaje grandes sin requerir recursos dedicados de GPU en tu infraestructura. Albergada exclusivamente en centros de datos de la UE, garantiza integración fluida con tus aplicaciones mientras cumple estrictos estándares de cumplimiento del GDPR. Aprovechando la infraestructura escalable de Trooper.AI, esta solución elimina las limitaciones de hardware y permite despliegues rentables tanto para startups como para empresas. Ya sea que construyas chatbots, ajuste modelos o implementes flujos de trabajo basados en IA generativa, nuestra API brinda respuestas con baja latencia y confiabilidad a nivel empresarial.
Diseñado para flexibilidad, el servicio se integra sin complicaciones en tuberías existentes mediante puntos finales directos, admitiendo procesamiento por lotes y consultas en tiempo real. Respaldado por almacenamiento persistente y protocolos avanzados de seguridad —incluyendo cortafuegos y protección contra ataques DDoS—, la plataforma garantiza disponibilidad continua para tareas críticas de IA. Explora nuestras configuraciones personalizadas a continuación para ajustarse a las necesidades de tu proyecto.
Nuestros precios base son los siguientes. Puede aplicarse un precio adicional por país en el pedido de API Blib. Además, puedes aprovechar nuestras promociones regulares de Créditos Extra.
| Ruta | Modelo | Tokens máximos totales | Tokenes Máximos de Salida | Input/1M | Output/1M | +25% Oferta | Fortalezas |
|---|---|---|---|---|---|---|---|
| vivo | Google Gemma 4 2.3B + 0.15B (visión) + 0.3B (audio) | 131,072 | 4,000 | €0.029 | €0.049 | Texto, Chat, Visión, Audio, Razonamiento, Herramientas, JSON | |
| clara | Mistral Ministral 3 13.5B + 0.4B (visión) | 32,768 | 2,000 | €0.139 | €0.249 | Modelo UE, Visión, Herramientas, Texto, JSON | |
| nikola | NVIDIA Nemotron 3 Nano 30B MoE (128 expertos, 6 activos @ 3.5B) | 98,304 | 9,000 | €0.159 | €0.319 | Texto, Razonamiento, Herramientas, Codificación, JSON |
* Oferta actual: obtén un +25% de Créditos Extra por cada pago desde €160 este mes. ¡Paga €160 y recibe €200 en tu cuenta!
Antes de usar nuestra API debe solicitar su API Blib en nuestro sitio web: Ordenar API Blib
Puede elegir su Modelo y su Región, y tras desplegar el modelo deseado debería ver algo así en tu Panel de Gestión:
Ofrecemos un system prompt gratuito de hasta 1,024 caracteres. El system prompt gratuito solo está disponible desde el panel de control. Los mensajes dinámicos del sistema enviados mediante la API se cobran según lo habitual. Haz clic en Acciones y verás el diálogo para editar el system prompt.
¡Vamos, ordena tu API Blib ahora:
Si deseas comparar nuestros puntos finales de modelos de lenguaje (LLM) con otras plataformas de LLM, puedes usar nuestra herramienta gratuita para evaluar la calidad del modelo aquí: Free LLM Quality Benchmark. Así es como se ve:
Prueba cualquier punto de extremo compatible con OpenAI de modelos de lenguaje (LLM) con 25 verificaciones automáticas de calidad — razonamiento, programación, multilingüe, salida estructurada, llamadas a herramientas y más.
https://eu.router.trooper.ai/v1
Puntos finales regionales para residencia de datos por país:
| Dominio | Región |
|---|---|
eu.router.trooper.ai |
UE (todos los centros de datos de la UE) |
de.router.trooper.ai |
Alemania solo |
nl.router.trooper.ai |
Países Bajos solo |
Todas las solicitudes requieren un token Bearer. Obtenga su clave de API desde el panel de gestión .
Authorization: Bearer YOUR_TROOPER_KEY
Activa rutas en trooper.ai/order-apiblib . Cada ruta te proporciona un nombre de modelo que usas en las llamadas a la API.
| Ruta | Modelo base | Fortalezas |
|---|---|---|
| vivo | Google Gemma 4 | El más económico. Texto, imágenes, audio y razonamiento. Cargas de trabajo de alto volumen. |
| clara | Ministral 3 | Enfoque en visión. Alto rendimiento y fuerte soporte para idiomas de la UE. |
| nikola | NVIDIA Nemotron 3 Nano | Potencia en razonamiento. Generación de código, llamadas a funciones y flujos de trabajo autónomos. |
/v1/chat/completionsPunto de extremo compatible con OpenAI para completiones de chat estándar.
/v1/modelsLista tus modelos activados. Requiere autenticación. Devuelve solo los modelos que coincidan con la región del dominio desde el cual realizas la llamada.
Cada objeto de modelo incluye:
| Campo | Tipo | Descripción |
|---|---|---|
id |
cadena | El nombre de tu ruta (usado como model (en las solicitudes). |
object |
cadena | Siempre "model". |
owned_by |
cadena | Identificador del propietario. |
created |
entero | Marca de tiempo Unix de creación. |
base_models |
cadena[] | Nombre(s) del modelo subyacente. |
context_length |
entero | Ventana de contexto máxima (tokens) |
max_tokens |
entero | Tokens de salida máximos. |
capabilities |
objeto | Bandera de características para este modelo (ver abajo). |
supported_parameters |
cadena[] | Parámetros aceptados por este modelo. |
Objeto de capacidades:
| Indicador | Tipo | Descripción |
|---|---|---|
thinking |
booleano | Soporta reasoning_effort y razonamiento paso a paso. |
tools |
booleano | Soporta llamadas a funciones / herramientas. |
vision |
booleano | Admite entradas de imagen y archivos PDF. |
audio |
booleano | Admite entradas de audio. |
json_mode |
booleano | Soporta response_format (modo JSON / salidas estructuradas). |
token_budget |
booleano | Soporta control explícito del presupuesto de tokens. |
Usa capabilities.thinking para determinar si un modelo acepta parámetros de razonamiento antes de enviarlos.
Ejemplo de respuesta:
{
"object": "list",
"data": [
{
"id": "clara",
"object": "model",
"owned_by": "trooper_42",
"created": 1700000000,
"base_models": ["Ministral-3"],
"context_length": 131072,
"max_tokens": 131072,
"capabilities": {
"tools": true,
"vision": true,
"audio": false,
"thinking": false,
"json_mode": true,
"token_budget": false
},
"supported_parameters": [
"temperature", "top_p", "max_tokens", "stream",
"response_format", "tools", "tool_choice"
]
}
]
}
/healthDevuelve la disponibilidad del punto de extremo y la información regional.
Todos los parámetros siguen el formato de la API OpenAI Chat Completions.
| Parámetro | Tipo | Descripción |
|---|---|---|
model |
cadena | El nombre de tu ruta (por ejemplo "clara", "nikola", "liv") |
messages |
arreglo | Arreglo de objetos de mensaje (role + content) |
| Parámetro | Tipo | Disponibilidad del endpoint y región. GET /health Ordenar API Blib ahora Parámetros de solicitud: Todos los parámetros siguen el formato de la API Completiones de chat de OpenAI. Obligatorios Tipo Descripción model Cadena: Nombre de ruta (ejemplo: «clara», «nikola», «liv»). messages Matriz de objetos mensaje (rol + contenido). Opcionales Tipo Valor por defecto Descripción max_tokens entero (auto; rango 32–4096) Tokens máximo en respuesta. Ajustado automáticamente al contexto de la ruta. maxcompletiontokens - Alias para max_tokens. stream booleano (falso) Activa transmisión en tiempo real vía SSE (Eventos enviados por servidor). temperature numérico (valor predeterminado del modelo) Temperatura de muestreo (escala 0–2). top_p numérico (valor predeterminado del modelo) Muestra nucleada (núcleo sampling). responseformat objeto — {"type": "jsonobject"} o {"type": "jsonschema", "schemajson": {...}} herramientas matriz... | Descripción |
|---|---|---|---|
max_tokens |
entero | automático (32–4096) | Tokens de salida máximos. Automáticamente ajustados al límite del contexto de la ruta. |
max_completion_tokens |
entero | — | Aliás de max_tokens. |
stream |
booleano | false |
Habilitar transmisión por eventos en tiempo real (SSE). |
temperature |
número | valor por defecto del modelo | Temperatura de muestreo (0–2) |
top_p |
número | valor por defecto del modelo | Muestreo por núcleo. |
response_format |
objeto | — | {"type": "json_object"} or {"type": "json_schema", "json_schema": {...}} |
tools |
arreglo | — | Definiciones de herramientas para llamadas a funciones (formato OpenAI). |
tool_choice |
cadena/objeto | — | Controla la selección de herramientas («"auto", "none", o una herramienta específica). |
reasoning |
objeto | — | {«esfuerzo»: «ninguno»} |
reasoning_effort |
cadena | — | Abreviatura: "none", "medium", "high". |
reasoning.exclude |
booleano | false |
Excluir el contenido de razonamiento en la respuesta. |
Transmisión por eventos en tiempo real estándar SSE, completamente compatible con la SDK de OpenAI.
{ "stream": true }
Formato de respuesta: data: {...}\n\n líneas, terminadas por data: [DONE]\n\n.
Solicita una salida estructurada en formato JSON. Asegúrate de no solo configurar la solicitud de JSON en el mensaje de texto; también debes establecer al menos response_format como json_object.
Si el modelo no logra producir un JSON válido, no se le cobrará.
{ "response_format": { "type": "json_object" } }
Con un esquema:
{
"response_format": {
"type": "json_schema",
"json_schema": {
"name": "my_schema",
"schema": {
"type": "object",
"properties": {
"name": { "type": "string" },
"age": { "type": "integer" }
},
"required": ["name", "age"]
}
}
}
}
Envía imágenes mediante URL o base64. Los PDF se convierten automáticamente en imágenes de páginas del lado del servidor.
{
"messages": [{
"role": "user",
"content": [
{ "type": "image_url", "image_url": { "url": "https://example.com/photo.jpg" } },
{ "type": "text", "text": "Describe this image." }
]
}]
}
Base64:
{
"type": "image_url",
"image_url": { "url": "data:image/png;base64,iVBOR..." }
}
Envía archivos de audio en mensajes multimodales. Soportado en liv. Longitud máxima es de 30 segundos debido a las limitaciones de Gemma 4. Si necesitas más tiempo, divide tu audio en segmentos solapados y envíalos uno por uno junto con los resultados de las partes ya transcritas.
Controla si y en qué medida el modelo razona (chain-of-thought) antes de responder.
| Valor | Efecto |
|---|---|
"none" |
Pensamiento desactivado — respuestas más rápidas, menor uso de tokens. |
"low" |
Pensamiento desactivado — igual que "ninguno". |
"medium" |
Razonamiento activado — el modelo razona paso a paso antes de responder. Equilibrio óptimo entre calidad y velocidad. |
"high" |
Razonamiento activado + profundo — el modelo está instruido para pensar con gran cuidado y en detalle exhaustivo. Ideal para matemáticas complejas, lógica y código. Si se establece max_tokens, debe ser al menos 4 096 o la solicitud será rechazada. |
Activar pensamiento estándar:
{ "reasoning_effort": "medium" }
Activar pensamiento profundo para máxima calidad:
{ "reasoning_effort": "high" }
O bien mediante el reasoning objeto:
{ "reasoning": { "effort": "high" } }
Deshabilitar el pensamiento explícitamente:
{ "reasoning_effort": "none" }
Para eliminar el razonamiento de la respuesta (el pensamiento sigue ocurriendo, pero los tokens del razonamiento no se devuelven):
{ "reasoning": { "effort": "high", "exclude": true } }
Comportamiento de Pensamiento también puede configurarse por ruta en el panel de gestión. La configuración del panel controla el comportamiento predeterminado y cómo se devuelve la razonamientorazonamiento:
"reasoning_effort": "medio" o "alto"razonamiento_contenido.<think> dentro del contenido.Recuperación por razonamiento: si el modelo entra en un bucle de razonamiento, la ruta se recupera automáticamente y devuelve una respuesta utilizable.
Formato estándar de herramientas de OpenAI. Funciona con todas las rutas.
{
"tools": [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get current weather for a location",
"parameters": {
"type": "object",
"properties": {
"location": { "type": "string" }
},
"required": ["location"]
}
}
}],
"tool_choice": "auto"
}
Si su entrada supera la ventana de contexto, el enrutador comprime automáticamente la parte central de la conversación para ajustarla sin necesidad de truncación manual. Siempre recibirá una respuesta.
Un system prompt gratuito puede configurarse por ruta en el panel de administración. Se añade automáticamente al inicio de cada solicitud y no tiene costo.
Estructura de respuesta estándar de OpenAI:
{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1700000000,
"model": "clara",
"choices": [{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello! How can I help you?"
},
"finish_reason": "stop"
}],
"usage": {
"prompt_tokens": 12,
"completion_tokens": 8,
"total_tokens": 20
}
}
Con el razonamiento habilitado, la respuesta puede incluir reasoning_content junto content.
Cada respuesta incluye un x-transaction-id encabezado para referencia de facturación y depuración.
Los errores siguen el formato de sobre de error de OpenAI:
{
"error": {
"message": "The model 'nonexistent' does not exist.",
"type": "invalid_request_error",
"param": "model",
"code": "model_not_found"
}
}
| Estado HTTP | Código | Descripción |
|---|---|---|
| 400 | invalid_value |
Modelo faltante, clave de API ausente, entrada demasiado corta o inválida max_tokens. |
| 403 | invalid_api_key |
Clave de API inválida o presupuesto insuficiente. |
| 404 | model_not_found |
El modelo no existe o no está activado. |
| 404 | region_mismatch |
El modelo no está disponible en la región solicitada. |
| 500 | — | Error interno del enrutador. |
| 503 | — | No hay puntos de extremo disponibles en la región solicitada. |
Consulta ejemplos populares de código para usar una API compatible con OpenAI para inferencia en modelos de lenguaje. ¡Debe reemplazarse router.trooper.ai por la URL del punto final mostrada en tu orden de API Blib!
from openai import OpenAI
client = OpenAI(
base_url="https://router.trooper.ai/v1",
api_key="YOUR_TROOPER_KEY"
)
response = client.chat.completions.create(
model="clara",
messages=[{"role": "user", "content": "Summarize this document."}],
max_tokens=1024
)
print(response.choices[0].message.content)
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://router.trooper.ai/v1",
apiKey: "YOUR_TROOPER_KEY",
});
const response = await client.chat.completions.create({
model: "nikola",
messages: [{ role: "user", content: "Write a unit test for this function." }],
max_tokens: 2048,
});
console.log(response.choices[0].message.content);
from openai import OpenAI
client = OpenAI(
base_url="https://router.trooper.ai/v1",
api_key="YOUR_TROOPER_KEY"
)
stream = client.chat.completions.create(
model="liv",
messages=[{"role": "user", "content": "Explain quantum computing."}],
max_tokens=2048,
stream=True
)
for chunk in stream:
content = chunk.choices[0].delta.content
if content:
print(content, end="", flush=True)
import json
from openai import OpenAI
client = OpenAI(
base_url="https://router.trooper.ai/v1",
api_key="YOUR_TROOPER_KEY"
)
response = client.chat.completions.create(
model="clara",
messages=[{"role": "user", "content": "List the 3 largest EU countries as JSON with name and population."}],
max_tokens=512,
response_format={"type": "json_object"}
)
data = json.loads(response.choices[0].message.content)
print(data)
from openai import OpenAI
client = OpenAI(
base_url="https://router.trooper.ai/v1",
api_key="YOUR_TROOPER_KEY"
)
response = client.chat.completions.create(
model="clara",
messages=[{
"role": "user",
"content": [
{"type": "image_url", "image_url": {"url": "https://example.com/invoice.png"}},
{"type": "text", "text": "Extract all line items from this invoice as JSON."}
]
}],
max_tokens=2048,
response_format={"type": "json_object"}
)
print(response.choices[0].message.content)
from openai import OpenAI
client = OpenAI(
base_url="https://router.trooper.ai/v1",
api_key="YOUR_TROOPER_KEY"
)
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get weather for a location",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "City name"}
},
"required": ["location"]
}
}
}]
response = client.chat.completions.create(
model="nikola",
messages=[{"role": "user", "content": "What's the weather in Berlin?"}],
tools=tools,
tool_choice="auto",
max_tokens=512
)
tool_calls = response.choices[0].message.tool_calls
if tool_calls:
print(tool_calls[0].function.name, tool_calls[0].function.arguments)
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
base_url="https://router.trooper.ai/v1",
api_key="YOUR_TROOPER_KEY",
model="clara",
max_tokens=1024
)
response = llm.invoke("Extract all dates from the following text: ...")
print(response.content)
from llama_index.llms.openai_like import OpenAILike
llm = OpenAILike(
api_base="https://router.trooper.ai/v1",
api_key="YOUR_TROOPER_KEY",
model="nikola",
max_tokens=2048
)
response = llm.complete("Explain the EU AI Act in simple terms.")
print(response.text)
curl https://router.trooper.ai/v1/chat/completions \
-H "Authorization: Bearer YOUR_TROOPER_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "clara",
"messages": [{"role": "user", "content": "Hello!"}],
"max_tokens": 512
}'
Cambio de una línea — actualizar la URL base y la clave API:
# Before (OpenAI)
client = OpenAI(api_key="sk-...")
# After (Trooper.AI)
client = OpenAI(
base_url="https://router.trooper.ai/v1",
api_key="YOUR_TROOPER_KEY"
)
Todo lo demás sigue igual: formato de solicitud, esquema de respuesta, transmisión en tiempo real (streaming), herramientas y modo JSON.