Documentation
Home Portal Obtener API Key

Lessen API Documentation

Lessen es un middleware de inteligencia artificial que te permite acceder a múltiples modelos de IA a través de una sola API. Compatible con el formato de OpenAI, puedes integrar Lessen en tus proyectos con cambios mínimos.

💡 OpenAI Compatible

La API de Lessen sigue el mismo formato que la API de OpenAI. Si ya usas el SDK de OpenAI, solo necesitas cambiar la base_url y tu API key.

Quick Start

Empieza a usar la API de Lessen en 3 pasos:

1. Obtén tu API Key

Regístrate en app.lessen.es y genera una API key desde el portal de cliente. Las keys tienen el prefijo lsn_sk_.

2. Haz tu primera petición

bash Primera petición
curl https://api.lessen.es/v1/chat/completions \
  -H "Authorization: Bearer lsn_sk_tu_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "lessen/lite",
    "messages": [
      {"role": "user", "content": "Hola, ¿cómo funciona Lessen?"}
    ]
  }'
python Con OpenAI SDK
from openai import OpenAI

client = OpenAI(
    base_url="https://api.lessen.es/v1",
    api_key="lsn_sk_tu_api_key"
)

response = client.chat.completions.create(
    model="lessen/lite",
    messages=[
        {"role": "user", "content": "Hola, ¿cómo funciona Lessen?"}
    ]
)

print(response.choices[0].message.content)
js Node.js con OpenAI SDK
import OpenAI from 'openai';

const client = new OpenAI({
    baseURL: 'https://api.lessen.es/v1',
    apiKey: 'lsn_sk_tu_api_key'
});

const response = await client.chat.completions.create({
    model: 'lessen/lite',
    messages: [
        { role: 'user', content: 'Hola, ¿cómo funciona Lessen?' }
    ]
});

console.log(response.choices[0].message.content);

3. Recibe la respuesta

json Respuesta
{
  "id": "chatcmpl-abc123def456",
  "object": "chat.completion",
  "created": 1708000000,
  "model": "gemma3:latest",
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": "¡Hola! Lessen es un middleware de IA que..."
    },
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 15,
    "completion_tokens": 42,
    "total_tokens": 57
  }
}

Autenticación

Todas las peticiones a la API requieren autenticación mediante un Bearer token en la cabecera Authorization.

http Header
Authorization: Bearer lsn_sk_tu_api_key

Scopes de API Key

Cada API key tiene un scope que determina los permisos:

Scope Permisos
full Acceso completo: listar modelos + crear completions
read Solo lectura: listar modelos + crear completions
models Solo listar modelos disponibles (sin completions)
⚠️ Seguridad

Nunca expongas tu API key en el código del frontend. Usa un servidor backend para hacer las peticiones a la API.

Base URL

Todas las peticiones deben dirigirse a:

url Base URL
https://api.lessen.es

Los endpoints de la API siguen el formato /v1/..., por ejemplo: https://api.lessen.es/v1/models.

Health Check

GET /health

Verifica el estado del servicio y la conexión con los backends de IA.

bash Request
curl https://api.lessen.es/health
json Response — 200 OK
{
  "status": "ok",
  "version": "1.0.0",
  "ollama": "connected",
  "timestamp": "2026-02-14T22:00:00.000Z"
}
✓ Sin autenticación

Este endpoint no requiere API key. Es útil para monitoreo y health checks.

Listar Modelos

GET /v1/models

Devuelve la lista de modelos de IA disponibles en la plataforma. Compatible con el formato OpenAI.

bash Request
curl https://api.lessen.es/v1/models \
  -H "Authorization: Bearer lsn_sk_tu_api_key"
json Response — 200 OK
{
  "object": "list",
  "data": [
    { "id": "lessen/lite", "owned_by": "lessen", "backend": "ollama" },
    { "id": "lessen/go", "owned_by": "lessen", "backend": "huggingface" },
    { "id": "lessen/pro", "owned_by": "lessen", "backend": "gemini" },
    { "id": "gemma3:latest", "owned_by": "ollama" },
    { "id": "Qwen/Qwen3-235B-A22B", "owned_by": "huggingface" },
    { "id": "gemini-2.5-flash", "owned_by": "google" }
  ]
}

Smart Models ⚡

Los modelos lessen/* usan routing inteligente — un clasificador de 3 capas analiza tu prompt y elige automáticamente el mejor modelo para cada tarea.

🧠 Clasificador de 3 Capas

Cada petición pasa por 3 capas de análisis: System Prompt Hints (instrucciones explícitas), Análisis Estructural (longitud, bloques de código, formato) y Keywords (palabras clave del dominio). El resultado clasifica la tarea como speed, quality, code o reasoning y selecciona el modelo más adecuado del backend elegido.

🏠

Lessen Lite

lessen/lite
Ollama
17 modelos locales ejecutados en tu servidor. Máxima privacidad, sin coste por token, sin dependencias externas. Ideal para RPA, clasificación y tareas rápidas.
Privacidad Sin coste 17 modelos Offline
Input
€0.00 /1M
Output
€0.00 /1M
🤗

Lessen Go

lessen/go
HuggingFace
9 modelos cloud de alta capacidad vía HuggingFace Inference. Qwen 235B, Llama 70B, Mistral y más. Potencia cloud gratuita con streaming.
Cloud Gratuito 9 modelos Streaming
Input
€0.00 /1M
Output
€0.00 /1M

Lessen Pro

lessen/pro
Gemini
Google Gemini 2.5 Flash y Pro. La máxima calidad con inteligencia de Google: visión, contexto largo (1M tokens) y razonamiento avanzado.
Premium Visión 2 modelos 1M contexto
Input
€0.15 /1M
Output
€0.60 /1M

Routing por Tipo de Tarea

El clasificador detecta 4 tipos de tarea y selecciona el modelo óptimo de cada backend:

Tipo Ejemplo Lite (Ollama) Go (HuggingFace) Pro (Gemini)
speed Traducir, clasificar, extraer datos gemma3:latest Qwen3-4B gemini-2.5-flash
quality Análisis, documentos, informes qwen3:latest Qwen2.5-72B gemini-2.5-pro
code Generar código, SQL, debugging qwen3-coder:latest Qwen2.5-Coder-32B gemini-2.5-pro
reasoning Lógica, matemáticas, razonamiento qwq:latest Qwen3-235B-A22B gemini-2.5-pro

Lessen vs. Competencia

Característica Lessen OpenAI API Google AI Anthropic
Modelos Lite sin coste 17 modelos
Auto-routing inteligente 4 tipos
Multi-backend (Ollama + HF + Gemini)
Self-hosted / Privado
Datos en la UE 🇪🇺
OpenAI SDK compatible

Headers de transparencia

Cada request a un modelo lessen/* incluye headers para total visibilidad:

x-lessen-routed-to Modelo real utilizado para la request
x-lessen-task-type Tipo detectado: speed, quality, code, reasoning
x-lessen-backend Backend utilizado: ollama, huggingface, gemini
x-lessen-confidence Confianza del clasificador (0-1)

¿Listo para empezar?

Crea tu API key gratis y empieza a usar Smart Models en menos de un minuto.

Chat Completions

POST /v1/chat/completions

Genera respuestas de chat usando modelos de IA. Soporta streaming vía Server-Sent Events (SSE).

Parámetros del Body

Parámetro Tipo Requerido Descripción
model string ID del modelo a usar (ej: "lessen/lite", "lessen/go", "lessen/pro")
messages array Array de mensajes con role y content
stream boolean No Si true, devuelve la respuesta como SSE stream. Default: false
temperature number No Creatividad de la respuesta (0.0 – 2.0)
max_tokens integer No Máximo de tokens en la respuesta
top_p number No Nucleus sampling (0.0 – 1.0)

Formato de Mensajes

Role Descripción
system Instrucciones de comportamiento para el modelo
user Mensaje del usuario
assistant Respuesta previa del asistente (para contexto)
bash Chat con system prompt
curl https://api.lessen.es/v1/chat/completions \
  -H "Authorization: Bearer lsn_sk_tu_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "lessen/go",
    "messages": [
      {"role": "system", "content": "Eres un experto en programación."},
      {"role": "user", "content": "¿Cómo hago una petición HTTP en Python?"}
    ],
    "temperature": 0.7,
    "max_tokens": 500
  }'
python Con system prompt
response = client.chat.completions.create(
    model="lessen/go",
    messages=[
        {"role": "system", "content": "Eres un experto en programación."},
        {"role": "user", "content": "¿Cómo hago una petición HTTP en Python?"}
    ],
    temperature=0.7,
    max_tokens=500
)
js Con system prompt
const response = await client.chat.completions.create({
    model: 'lessen/go',
    messages: [
        { role: 'system', content: 'Eres un experto en programación.' },
        { role: 'user', content: '¿Cómo hago una petición HTTP en Python?' }
    ],
    temperature: 0.7,
    max_tokens: 500
});

Streaming

Para recibir respuestas en tiempo real, activa stream: true. La respuesta se envía como Server-Sent Events (SSE), donde cada chunk contiene un delta del contenido.

python Streaming con OpenAI SDK
stream = client.chat.completions.create(
    model="lessen/lite",
    messages=[{"role": "user", "content": "Cuéntame un chiste"}],
    stream=True
)

for chunk in stream:
    content = chunk.choices[0].delta.content
    if content:
        print(content, end="", flush=True)
js Streaming con fetch
const res = await fetch('https://api.lessen.es/v1/chat/completions', {
    method: 'POST',
    headers: {
        'Authorization': 'Bearer lsn_sk_tu_api_key',
        'Content-Type': 'application/json'
    },
    body: JSON.stringify({
        model: 'lessen/lite',
        messages: [{ role: 'user', content: 'Hola' }],
        stream: true
    })
});

const reader = res.body.getReader();
const decoder = new TextDecoder();

while (true) {
    const { done, value } = await reader.read();
    if (done) break;
    const text = decoder.decode(value);
    // Parsear cada línea "data: {...}"
    console.log(text);
}
bash Streaming con cURL
curl -N https://api.lessen.es/v1/chat/completions \
  -H "Authorization: Bearer lsn_sk_tu_api_key" \
  -H "Content-Type: application/json" \
  -d '{"model":"lessen/lite","messages":[{"role":"user","content":"Hola"}],"stream":true}'

Formato SSE

Cada evento SSE tiene el formato data: {json}\n\n. El stream finaliza con data: [DONE].

sse Stream chunks
data: {"id":"chatcmpl-abc","object":"chat.completion.chunk","choices":[{"delta":{"content":"¡"},"index":0}]}

data: {"id":"chatcmpl-abc","object":"chat.completion.chunk","choices":[{"delta":{"content":"Hola"},"index":0}]}

data: {"id":"chatcmpl-abc","object":"chat.completion.chunk","choices":[{"delta":{"content":"!"},"index":0,"finish_reason":"stop"}]}

data: [DONE]

Errores

La API devuelve errores en formato JSON con un campo error que contiene message y type.

Código HTTP Tipo Descripción
401 authentication_error API key inválida o no proporcionada
403 permission_error La API key no tiene permisos suficientes (scope)
429 rate_limit_error Límite de peticiones diarias excedido
400 invalid_request Parámetros inválidos o faltantes
502 upstream_error Error en el modelo de IA (servicio caído o modelo no encontrado)
404 not_found Endpoint no encontrado
json Ejemplo de error
{
  "error": {
    "message": "Invalid or revoked API key",
    "type": "authentication_error"
  }
}

Rate Limits

Los límites de peticiones se aplican por API key y se reinician cada 24 horas (UTC).

Plan Peticiones / día Modelos
Free 100 3 modelos locales (Ollama)
Pro 10.000 Todos los modelos locales + GPT-4o, Claude, Gemini
Enterprise Ilimitadas Todos + modelos premium + fine-tuned

Cuando superas el límite, recibirás un 429 Too Many Requests con un mensaje indicando cuándo se reinicia.

SDKs & Librerías

Lessen es 100% compatible con el SDK de OpenAI. Solo necesitas cambiar la base URL.

Python

bash Instalación
pip install openai
python Configuración
from openai import OpenAI

client = OpenAI(
    base_url="https://api.lessen.es/v1",
    api_key="lsn_sk_tu_api_key"
)

Node.js / JavaScript

bash Instalación
npm install openai
js Configuración
import OpenAI from 'openai';

const client = new OpenAI({
    baseURL: 'https://api.lessen.es/v1',
    apiKey: 'lsn_sk_tu_api_key'
});

cURL / HTTP directo

Si prefieres no usar un SDK, puedes hacer peticiones HTTP directas a la API. Cualquier cliente HTTP funciona.

💡 Compatibilidad

Cualquier librería o herramienta que soporte la API de OpenAI funciona con Lessen. Esto incluye LangChain, LlamaIndex, Vercel AI SDK, y más.

Precios

Elige el plan que mejor se adapte a tu proyecto. Todos los planes incluyen acceso a la API.

Lessen Lite
Gratis
  • Modelo: lessen/lite
  • Backend: Ollama (17 modelos locales)
  • Routing inteligente incluido
  • €0.00 / token — completamente gratis
  • Privacidad total, sin datos en la nube
Lessen Go
Gratis
  • Modelo: lessen/go
  • Backend: HuggingFace (9 modelos cloud)
  • Qwen 235B, Llama 70B, Mistral y más
  • €0.00 / token — sin coste
  • Streaming de alta velocidad

Soporte

¿Necesitas ayuda? Estamos aquí para ti.