¿Qué es este servicio?
Es un proxy que reenvía peticiones a un backend de inferencia (por ejemplo LocalAI, Ollama, vLLM u otro compatible). Solo quien tenga una API key válida puede usar las rutas de la API; el panel de administración está protegido con OAuth (GitHub).
Autenticación en la API
En cada petición a /api/..., /v1/... o /models/... incluye la clave con una de estas cabeceras:
x-api-key: TU_API_KEYAuthorization: Bearer TU_API_KEY
Si envías ambas, el proxy usa x-api-key. Sin clave válida → 401.
Rutas principales
| Prefijo | Uso |
|---|---|
/api/* | API estilo Ollama (chat, generate, modelos, etc.) |
/v1/* | API compatible con OpenAI (si el upstream lo soporta) |
/models/* | Endpoints de administración de modelos (p. ej. LocalAI /models/apply) |
/healthz | Comprobación de vida; no requiere API key |
Modelos disponibles
💬 Chat / Texto
📐 Embeddings
Esta lista se obtiene automáticamente del backend y se actualiza cada pocos minutos.
Ejemplos (curl)
URL base detectada para esta petición:
https://ollama.orinocostudios.dev
Listar modelos (estilo Ollama):
curl -H "x-api-key: TU_API_KEY" https://ollama.orinocostudios.dev/api/v1/models
Listar modelos (OpenAI-compatible):
curl -H "Authorization: Bearer TU_API_KEY" https://ollama.orinocostudios.dev/v1/models
Instalar un modelo (LocalAI):
curl -X POST -H "x-api-key: TU_API_KEY" -H "Content-Type: application/json" https://ollama.orinocostudios.dev/models/apply -d '{"id":"TheBloke/TinyLlama-1.1B-Chat-v1.0-GGUF"}'
Uso con imágenes
POST/v1/images/generations
Genera una imagen a partir de un prompt de texto. Requiere un modelo de imagen instalado en el backend (p. ej. stablediffusion, sdxl).
curl -X POST -H "x-api-key: TU_API_KEY" \
-H "Content-Type: application/json" \
https://ollama.orinocostudios.dev/v1/images/generations \
-d '{
"model": "stablediffusion",
"prompt": "un gato astronauta en el espacio, estilo pixel art",
"size": "512x512"
}'
La respuesta incluye la imagen en base64 o una URL temporal, según la configuración del backend.
POST/v1/chat/completions — Visión (analizar imagen)
Envía una imagen junto con texto para que un modelo con capacidad de visión la analice (p. ej. llava, bakllava).
curl -X POST -H "x-api-key: TU_API_KEY" \
-H "Content-Type: application/json" \
https://ollama.orinocostudios.dev/v1/chat/completions \
-d '{
"model": "llava",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "¿Qué ves en esta imagen?"},
{"type": "image_url", "image_url": {"url": "data:image/png;base64,iVBOR..."}}
]
}]
}'
"url": "https://ejemplo.com/foto.jpg". El soporte depende del modelo y el backend.Uso con audio
POST/v1/audio/transcriptions — Speech-to-Text
Transcribe un archivo de audio a texto usando un modelo STT (p. ej. whisper). Se envía como multipart/form-data.
curl -X POST -H "x-api-key: TU_API_KEY" \ https://ollama.orinocostudios.dev/v1/audio/transcriptions \ -F "model=whisper-1" \ -F "file=@grabacion.mp3" \ -F "language=es"
Formatos soportados: mp3, mp4, mpeg, mpga, m4a, wav, webm (depende del backend).
POST/v1/audio/speech — Text-to-Speech
Convierte texto a audio usando un modelo TTS (p. ej. piper, bark). Devuelve el audio en el formato indicado.
curl -X POST -H "x-api-key: TU_API_KEY" \
-H "Content-Type: application/json" \
https://ollama.orinocostudios.dev/v1/audio/speech \
-d '{
"model": "tts-1",
"input": "Hola, esto es una prueba de texto a voz.",
"voice": "es-es-female"
}' --output salida.mp3
Uso con video / visión multimodal
Algunos modelos de visión permiten analizar secuencias de imágenes (frames de video). El patrón es enviar múltiples imágenes en un solo mensaje:
POST/v1/chat/completions — Múltiples frames
curl -X POST -H "x-api-key: TU_API_KEY" \
-H "Content-Type: application/json" \
https://ollama.orinocostudios.dev/v1/chat/completions \
-d '{
"model": "llava",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "Describe lo que ocurre en este video"},
{"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,/9j/4AAQ..."}},
{"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,/9j/4BBR..."}},
{"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,/9j/4CCT..."}}
]
}]
}'
Solicitar acceso (API key)
Si necesitas una clave, completa todos los campos. Un administrador revisará la solicitud en el panel.
Nombre y mensaje son obligatorios (mensaje mínimo 20 caracteres) para reducir spam.
Este formulario está protegido con verificación Cloudflare Turnstile.