OpenAPI e índice de endpoints
Contrato OpenAPI 3.1 descargable, todos los endpoints públicos y sus guías, encabezados de solicitud compartidos y origen de producción.
El contrato público legible por máquinas está disponible en OpenAPI 3.1 YAML. Úsalo para generar un cliente o validar tu integración con los endpoints públicos actuales.
Origen de la API de producción
https://api.spicyapi.ai es el único origen de producción declarado en servers[0].url de OpenAPI. Las API de tareas usan /api/v1; la compatibilidad de protocolos usa /v1 y /v1beta.
Estas API de la plataforma permiten seleccionar modelos, calcular estimaciones y supervisar el gasto sin abrir la consola. El catálogo de modelos incluye los precios de tu cuenta; utiliza una cotización para las entradas exactas cuando el precio dependa de los parámetros. El historial de tareas y el uso se limitan a la clave de API con la que haces la llamada. La creación y rotación de claves y la configuración de presupuestos siguen realizándose en la consola. Cada tabla enlaza a la guía que explica el endpoint completo.
Descubrimiento de modelos, precios y API de cuenta
| Método | Ruta | Finalidad | Guía |
|---|---|---|---|
GET | /console/v1/catalog/models | Catálogo público para evaluar modelos: sin clave de API, con precios estándar y límite de solicitudes por dirección de origen | Inicio rápido |
GET | /api/v1/models | Consultar modelos que pueden ejecutarse, precios de cuenta y esquemas opcionales | Catálogo de modelos |
GET | /api/v1/models/{model} | Consultar un modelo y su JSON Schema completo | Catálogo de modelos |
POST | /api/v1/jobs/quote | Cotizar la solicitud exacta durante cinco minutos sin crear una tarea ni retener fondos | Cotizaciones |
GET | /api/v1/chat/credit | Consultar el saldo disponible, retenido y total | Facturación |
GET | /api/v1/usage | Consultar llamadas de la clave actual y gasto liquidado en USD por fecha y modelo | Facturación |
API de generación y tareas
| Método | Ruta | Finalidad | Guía |
|---|---|---|---|
GET | /api/v1/jobs | Listar el historial de tareas de la clave de API actual con paginación por cursor | Tareas |
POST | /api/v1/jobs/createTask | Crear una tarea de generación asíncrona | Tareas |
GET | /api/v1/jobs/recordInfo | Consultar una tarea creada con la clave de API que hace la llamada | Tareas |
POST | /api/v1/jobs/retry | Crear una tarea nueva a partir de una fallida o vencida; los registros históricos cancelados siguen siendo compatibles | Acciones de tareas |
POST | /api/v1/jobs/purge | Destruir los archivos y el prompt de una tarea finalizada; el registro de facturación no cambia | Conservación |
POST | /api/v1/jobs/stream | Ejecutar un modelo de texto y transmitir la respuesta por SSE | Texto y streaming |
API de medios
| Método | Ruta | Finalidad | Guía |
|---|---|---|---|
POST | /api/v1/common/upload-url | Emitir una autorización de subida directa de medios | Medios |
POST | /api/v1/files/{fileId}/commit | Verificar y confirmar una subida directa y devolver el URI spicy:// listo para una tarea | Medios |
POST | /api/v1/files/import | Importar un archivo de pesos LoRA desde un enlace, con un token de acceso opcional que se usa una sola vez y nunca se guarda; devuelve el URI spicy:// listo para una tarea | Pesos de adaptador |
POST | /api/v1/common/download-url | Emitir una URL temporal de descarga de una salida (opcional: las tareas terminadas ya incluyen una) | Medios |
POST | /api/v1/assets | Guardar un archivo en la biblioteca de recursos (Idempotency-Key obligatoria) | Medios |
GET | /api/v1/assets | Listar tus recursos guardados (filtros favorite, collectionId, q; orden con sort) | Medios |
GET | /api/v1/assets/usage | Consultar el plan, el uso y los límites de la biblioteca de recursos | Medios |
GET | /api/v1/assets/{assetId} | Obtener un recurso con un enlace de vista previa privado nuevo | Medios |
PATCH | /api/v1/assets/{assetId} | Renombrar un recurso o cambiar su indicador favorite | Medios |
DELETE | /api/v1/assets/{assetId} | Eliminar un recurso | Medios |
GET | /api/v1/assets/entities | Listar los personajes de tu biblioteca de recursos (solo lectura) | Medios |
GET | /api/v1/assets/entities/{entityId} | Obtener un personaje con sus imágenes en orden (solo lectura) | Medios |
Autenticación y formato de respuestas
Todos los endpoints salvo el catálogo público requieren tu clave de API como Authorization: Bearer sk-spicy-…; los endpoints de compatibilidad (/v1, /v1beta) también aceptan x-api-key, enviado por los SDK de Anthropic, y x-goog-api-key, enviado por los SDK de Google GenAI. Nunca se acepta una clave en la cadena de consulta de la URL. Las tareas, los reintentos, las eliminaciones de contenido y los enlaces de descarga solo son visibles para la clave de API que creó la tarea; consulta Autenticación.
Las respuestas JSON de la API de tareas comparten el formato {code,msg,data,request_id}; los endpoints de compatibilidad utilizan los formatos de sus propios protocolos. El resultado de una tarea se expresa en data.state, no en el code del formato externo. Consulta Errores.
Encabezados utilizados en distintos endpoints
| Encabezado | Se envía a | Finalidad |
|---|---|---|
Authorization: Bearer … | Todos salvo el catálogo público | Tu clave de API |
Idempotency-Key | jobs/createTask, jobs/retry, jobs/stream, POST /v1/videos y los endpoints de texto de /v1 y /v1beta | Permite reenviar con seguridad tras un error de red. En los endpoints de tareas devuelve la tarea original; en los de texto evita un segundo cargo, pero no puede devolver una respuesta perdida. Consulta Idempotencia |
X-Spicy-Retention | jobs/createTask, jobs/stream | Reduce el tiempo de conservación de las salidas y el prompt de esta tarea, en segundos. Consulta Conservación |
Accept-Language | Cualquiera | Idioma de los mensajes de error; los códigos nunca cambian. Consulta Errores |
Uso del archivo OpenAPI
- Probar solicitudes sin escribir código: importa el archivo OpenAPI enlazado al principio de esta página en un cliente de API como Postman, Insomnia o Bruno y configura tu clave de API como token bearer. Recuerda que crear tareas cuesta dinero.
- Generar un cliente: proporciona el mismo archivo a un generador de código compatible con OpenAPI 3.1 para tu lenguaje.
Cambios del contrato
- No guardes los parámetros de los modelos como una copia permanente fijada en el código; lee
inputSchemadesde/models/{model}. - Tolera los campos desconocidos en las respuestas, pero nunca supongas qué campos desconocidos puedes enviar en una solicitud.
- Utiliza el YAML de OpenAPI para generar código o ejecutar pruebas del contrato antes de publicar.
Endpoints de compatibilidad
| Método | Ruta | Protocolo |
|---|---|---|
GET | /v1/models | Models |
POST | /v1/chat/completions | Chat Completions |
POST | /v1/responses | Responses |
POST | /v1/messages | Messages |
POST | /v1beta/models/{model}:generateContent | Gemini generateContent |
POST | /v1beta/models/{model}:streamGenerateContent | Gemini streamGenerateContent |
POST | /v1/videos | Videos |
GET | /v1/videos/{videoId} | Estado del video |
GET | /v1/videos/{videoId}/content | Contenido del video |
Los endpoints de texto se explican en Texto y streaming; su facturación se describe en Cotizaciones y compatibilidad.
El paquete oficial de TypeScript es @spicyapi/sdk. Para Python y Go, o si no puedes añadir una dependencia, los clientes de referencia que puedes copiar a continuación llaman a estos endpoints usando únicamente el entorno de ejecución del lenguaje. El cliente de Python gestiona una tarea completa de medios: sube y confirma un archivo de referencia, comprueba el precio mediante una cotización, crea la tarea y consulta su estado hasta que finaliza, lee el resultado tanto si contiene archivos como texto, renueva un enlace de salida vencido, destruye después el contenido almacenado y verifica una firma de webhook. El de Go cubre el mismo proceso, con un contexto en cada llamada y un error tipado que se recupera mediante errors.As. El de TypeScript cubre la creación, el reintento, la consulta del estado y la espera con límite; para las subidas y el resto de los endpoints en Node.js, utiliza el SDK.
Clientes de referencia copiables
Ejemplos sin dependencias para descubrir modelos, crear tareas, reintentar tareas fallidas, consultar todos los estados terminales, limitar la espera y tratar la idempotencia y los errores. Una tarea aceptada no se puede cancelar.
Son ejemplos de documentación, no paquetes npm o PyPI ni módulos Go publicados. Diez minutos es un límite local, no un SLA.

