This page was machine-translated. Spotted a mistake?Help improve it.
Skip to content

Referencia de la API REST

La documentación interactiva de la API con ejemplos de peticiones y respuestas está disponible en http://localhost:1349/api/docs.

Especificaciones legibles por máquina:

  • /api/v1/openapi.yaml - especificación OpenAPI 3.1
  • /llms.txt - resumen apto para LLM
  • /llms-full.txt - documentación completa apta para LLM

Autenticación

Todos los endpoints requieren autenticación salvo que AUTH_ENABLED=false.

Token de sesión

bash
# Login
curl -X POST http://localhost:1349/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"admin"}'
# Returns: {"token":"<session-token>"}

# Use token
curl http://localhost:1349/api/v1/tools/image/resize \
  -H "Authorization: Bearer <session-token>"

Las sesiones expiran después de 7 días (configurable mediante SESSION_DURATION_HOURS).

Claves de API

bash
# Create a key (returns key once - store it)
curl -X POST http://localhost:1349/api/v1/api-keys \
  -H "Authorization: Bearer <session-token>" \
  -H "Content-Type: application/json" \
  -d '{"name":"my-script"}'
# Returns: {"key":"si_<96 hex chars>","id":"...","name":"my-script"}

# Use the key
curl http://localhost:1349/api/v1/tools/image/resize \
  -H "Authorization: Bearer si_<your-key>"

Las claves llevan el prefijo si_ y se almacenan como hashes scrypt; la clave en bruto se muestra una vez y ya no se puede recuperar.

Endpoints de autenticación

MétodoRutaAccesoDescripción
POST/api/auth/loginPúblicoIniciar sesión y obtener un token de sesión
POST/api/auth/logoutAuthDestruir la sesión actual
GET/api/auth/sessionAuthValidar la sesión actual
POST/api/auth/change-passwordAuthCambiar la propia contraseña (invalida todas las demás sesiones y claves de API)
GET/api/auth/usersAdminListar todos los usuarios
POST/api/auth/registerAdminCrear un nuevo usuario
PUT/api/auth/users/:idAdminActualizar el rol o el equipo de un usuario
POST/api/auth/users/:id/reset-passwordAdminRestablecer la contraseña de un usuario
DELETE/api/auth/users/:idAdminEliminar un usuario
GET/api/v1/config/authPúblicoComprobar si la autenticación está habilitada ({ authEnabled: bool })
POST/api/auth/mfa/enrollAuthIniciar la inscripción de MFA con TOTP. Requiere la función enterprise mfa
POST/api/auth/mfa/verifyAuthConfirmar la inscripción de MFA con un código TOTP
POST/api/auth/mfa/completePúblicoCompletar un desafío de inicio de sesión de MFA pendiente
POST/api/auth/mfa/disableAuthDeshabilitar MFA para el usuario actual
POST/api/auth/users/:id/mfa/resetAdmin (users:manage)Restablecer MFA para un usuario
GET/api/auth/oidc/loginPúblicoIniciar el inicio de sesión OIDC cuando OIDC está habilitado
GET/api/auth/oidc/callbackPúblicoCallback de autorización OIDC
GET/api/auth/saml/metadataPúblicoXML de metadatos del SP SAML cuando SAML está habilitado
GET/api/auth/saml/loginPúblicoIniciar el inicio de sesión SAML
POST/api/auth/saml/callbackPúblicoServicio consumidor de aserciones SAML

Cuando MFA está habilitado para un usuario, POST /api/auth/login devuelve {"requiresMfa":true,"mfaToken":"...","mfaRequired":true|false} en lugar de un token de sesión. Envía ese mfaToken junto con un código TOTP o de recuperación a /api/auth/mfa/complete.

Permisos

PermisoAdminUsuario
Usar herramientas
Archivos/pipelines/claves de API propios
Ver archivos/pipelines/claves de todos los usuarios-
Escribir ajustes-
Gestionar usuarios y equipos-
Gestionar la marca-

Comprobación de estado

MétodoRutaAccesoDescripción
GET/api/v1/healthPúblicoComprobación básica de estado. Devuelve {"status":"healthy","version":"..."} con 200, o {"status":"unhealthy"} con 503 si la base de datos no es accesible.
GET/api/v1/readyzPúblicoSonda de disponibilidad. Comprueba PostgreSQL, Redis, el espacio en disco y S3 cuando está configurado. Devuelve 503 cuando la instancia no debería recibir tráfico.
GET/api/v1/admin/healthAdmin (system:health)Diagnóstico detallado que incluye tiempo de actividad, modo de almacenamiento, estado de la base de datos, estado de la cola y disponibilidad de GPU.

Uso de herramientas

Cada herramienta sigue el mismo patrón:

bash
# Single file
curl -X POST http://localhost:1349/api/v1/tools/<section>/<toolId> \
  -H "Authorization: Bearer <token>" \
  -F "[email protected]" \
  -F 'settings={"width":800,"height":600}'

# Batch (returns ZIP)
curl -X POST http://localhost:1349/api/v1/tools/<section>/<toolId>/batch \
  -H "Authorization: Bearer <token>" \
  -F "[email protected]" \
  -F "[email protected]" \
  -F 'settings={...}'

<section> es uno de image, video, audio, pdf o files.

  • La subida es multipart/form-data.
  • settings es una cadena JSON con opciones específicas de la herramienta.
  • clientJobId es un campo de formulario opcional para la correlación de progreso proporcionada por quien llama.
  • fileId es un campo de formulario opcional que referencia un elemento existente de la biblioteca de archivos. Cuando está presente, la salida procesada se guarda como una nueva versión y la respuesta incluye savedFileId.
  • Las herramientas rápidas normalmente devuelven 200 JSON: {"jobId":"...","downloadUrl":"/api/v1/download/<jobId>/<filename>","originalSize":1234,"processedSize":567}. Obtén el archivo procesado desde downloadUrl.
  • Cualquier herramienta en cola puede devolver 202 JSON si es de larga duración o supera la ventana de espera síncrona: {"jobId":"...","async":true}. Conéctate a SSE para el progreso y descarga cuando termine (consulta Seguimiento del progreso).
  • Las rutas por lotes devuelven un archivo ZIP transmitido directamente (con la cabecera X-Job-Id) para las herramientas registradas en el registro genérico por lotes.

Referencia de herramientas

Preajustes de conversión

El catálogo compartido incluye 83 endpoints de preajustes de conversión dedicados, como jpg-to-png, mov-to-mp4, m4a-to-mp3, pdf-to-jpg y excel-to-csv. Los preajustes son rutas de herramienta de primera clase:

POST /api/v1/tools/<section>/<presetId>

Cada preajuste fija el formato de salida y delega en una herramienta base como convert, convert-video, extract-audio, convert-audio, image-to-pdf, pdf-to-image, svg-to-raster o convert-spreadsheet. Consulta Preajustes de conversión para ver la tabla de rutas completa y los ajustes opcionales.

Esenciales

ID de herramientaNombreAjustes clave
resizeRedimensionarwidth, height, fit (cover/contain/fill/inside/outside), percentage, withoutEnlargement, más 23 preajustes de redes sociales
cropRecortarleft, top, width, height, unit (px/percent)
rotateGirar y voltearangle, horizontal (bool), vertical (bool)
convertConvertirformat (jpg/png/webp/avif/tiff/gif/heic/heif), quality
compressComprimirmode (quality/targetSize), quality (1–100), targetSizeKb

Optimización

ID de herramientaNombreAjustes clave
optimize-for-webOptimizar para webformat (webp/jpeg/avif/png), quality, maxWidth, maxHeight, progressive, stripMetadata
strip-metadataEliminar metadatos-
edit-metadataEditar metadatostitle, description, author, copyright, keywords, gps (lat/lon), dateTime
bulk-renameRenombrado masivopattern (admite {n}, {date}, {original}), startIndex, padding
image-to-pdfImagen a PDFpageSize (A4/Letter/...), orientation, margin, targetSize ({value, unit})
faviconGenerador de faviconpadding, backgroundColor, borderRadius - genera todos los tamaños estándar

Ajustes

ID de herramientaNombreAjustes clave
adjust-colorsAjustar coloresbrightness, contrast, exposure, saturation, temperature, tint, hue, sharpness, red, green, blue, effect (none/grayscale/sepia/invert)
sharpeningEnfoquemethod (adaptive/unsharp-mask/high-pass), sigma, m1, m2, x1, y2, y3, amount, radius, threshold, strength, kernelSize (3/5), denoise (off/light/medium/strong)
replace-colorReemplazar colorsourceColor, targetColor (reemplazo), makeTransparent, tolerance
color-blindnessSimulación de daltonismosimulationType (protanopia/deuteranopia/tritanopia/protanomaly/deuteranomaly/tritanomaly/achromatopsia/blueConeMonochromacy, por defecto "deuteranomaly")
duotoneDuotonoshadow (hex), highlight (hex), intensity (0-100)
pixelatePixelarblockSize (2-128), region ({left, top, width, height} para pixelado parcial)
vignetteViñetastrength (0.1-1), color (hex), radius, softness, roundness, centerX, centerY

Herramientas de IA

Todas las herramientas de IA se ejecutan en tu hardware: CPU por defecto, o NVIDIA CUDA cuando hay una GPU NVIDIA compatible disponible. La aceleración de iGPU Intel/AMD mediante VA-API, Quick Sync u OpenCL no es compatible hoy en día para la inferencia de IA. No se necesita internet.

ID de herramientaNombreModelo de IAAjustes clave
remove-backgroundEliminar fondorembg (BiRefNet / U2-Net)model, backgroundType (transparent/color/gradient/blur/image), backgroundColor, gradientColor1, gradientColor2, gradientAngle, blurEnabled, blurIntensity, shadowEnabled, shadowOpacity
upscaleEscalado de imagenRealESRGANscale (2/4), model, faceEnhance, denoise, format, quality
erase-objectBorrador de objetosLaMa (ONNX)Máscara enviada como segunda parte de archivo (nombre de campo mask), format, quality
ocrOCR / Extracción de textoPaddleOCR / Tesseractquality (fast/balanced/best), language, enhance
blur-facesDifuminar rostro / PIIMediaPipeblurRadius, sensitivity
smart-cropRecorte inteligenteMediaPipe + Sharpmode (subject/face/trim), strategy (attention/entropy), width, height, padding, facePreset (closeup/head-shoulders/upper-body/half-body), sensitivity, threshold, padToSquare, padColor, targetSize, quality
image-enhancementMejora de imagenBasada en análisismode (auto/exposure/contrast/color/sharpness), strength
enhance-facesMejora de rostrosGFPGAN / CodeFormermodel (gfpgan/codeformer), strength, sensitivity, centerFace
colorizeColorización con IADDColorintensity, model
noise-removalEliminación de ruidoReducción de ruido por nivelestier (quick/balanced/quality/maximum), strength, detailPreservation, colorNoise, format, quality
red-eye-removalEliminación de ojos rojosPuntos de referencia faciales + análisis de colorsensitivity, strength
restore-photoRestauración de fotosPipeline de varios pasosmode (auto/light/heavy), scratchRemoval, faceEnhancement, fidelity, denoise, denoiseStrength, colorize
passport-photoFoto de pasaportePuntos de referencia de MediaPipeFlujo en dos fases. El análisis usa multipart file; la generación usa JSON con countryCode, bgColor, printLayout (none/4x6/a4), puntos de referencia y dimensiones de la imagen
content-aware-resizeRedimensionado con reconocimiento de contenidoSeam carving (caire)width, height, protectFaces, blurRadius, sobelThreshold, square
transparency-fixerCorrector de transparencia PNGBiRefNet HR-mattingdefringe (0-100), outputFormat (png/webp)
background-replaceReemplazar fondorembg (BiRefNet)backgroundType (color/gradient), color (hex), gradientColor1, gradientColor2, gradientAngle, feather (0-20), format (png/webp)
blur-backgroundDifuminar fondorembg (BiRefNet)intensity (1-100), feather (0-20), format (png/webp)
ai-canvas-expandExpansión de lienzo con IALaMa (outpainting)extendTop, extendRight, extendBottom, extendLeft (px), tier (fast/balanced/high), format, quality

Marca de agua y superposición

ID de herramientaNombreAjustes clave
watermark-textMarca de agua de textotext, font, fontSize, color, opacity, position, rotation, tile
watermark-imageMarca de agua de imagenopacity, position, scale - el segundo archivo es la marca de agua
text-overlaySuperposición de textotext, font, fontSize, color, x, y, background, padding, borderRadius
composeComposición de imagenx, y, opacity, blend - el segundo archivo se superpone encima
meme-generatorGenerador de memestemplateId, textLayout (top-bottom/top-only/bottom-only/center/side-by-side), textBoxes ([{id, text}]), fontFamily (anton/arial-black/comic-sans/montserrat/bebas-neue/permanent-marker/roboto), fontSize, textColor, strokeColor, textAlign, allCaps. Admite el modo plantilla (cuerpo JSON con templateId) o el modo de imagen personalizada (multipart con archivo).

Utilidades

ID de herramientaNombreAjustes clave
infoInformación de imagen- (devuelve ancho, alto, formato, tamaño, canales, hasAlpha, DPI, EXIF)
compareComparar imágenesmode (side-by-side/overlay/diff), diffThreshold - el segundo archivo es el objetivo de la comparación
find-duplicatesBuscar duplicadosthreshold (distancia de hash perceptual, por defecto 8) - multiarchivo
color-palettePaleta de colorescount (número de colores dominantes), format (hex/rgb)
qr-generateGenerador de códigos QRdata, size, margin, colorDark, colorLight, errorCorrectionLevel, dotStyle, cornerStyle, logo (archivo opcional)
barcode-readLector de códigos de barras- (detecta automáticamente QR, EAN, Code128, DataMatrix, etc.)
image-to-base64Imagen a Base64format (data-uri/plain), mimeType
html-to-imageHTML a imagenurl, format (png/jpg/webp), quality, fullPage, devicePreset (desktop/tablet/mobile/custom), viewportWidth, viewportHeight
histogramHistogramascale (linear/log) - devuelve un gráfico de histograma RGB + estadísticas por canal
lqip-placeholderMarcador de posición LQIPwidth (4-64), blur, strategy (blur/pixelate/solid), format (webp/png/jpeg), quality
barcode-generateGenerador de códigos de barrastext, type (code128/ean13/upca/code39/itf14/datamatrix), scale (1-8), includeText (bool). Cuerpo JSON, sin subida de archivo.

Diseño y composición

ID de herramientaNombreAjustes clave
collageCollage / Cuadrículatemplate (más de 25 diseños), gap, backgroundColor, borderRadius - multiarchivo
stitchUnir / Combinardirection (horizontal/vertical/grid), gap, backgroundColor, alignment - multiarchivo
splitDivisión de imagenmode (grid/rows/cols), rows, cols, tileWidth, tileHeight
borderBorde y marcowidth, color, style (solid/gradient/pattern), borderRadius, padding, shadow
beautifyEmbellecer captura de pantallabackgroundType (solid/linear-gradient/radial-gradient/image/transparent), gradientStops, padding, borderRadius, shadowPreset, frame (none/macos-light/macos-dark/windows-light/windows-dark/browser-light/browser-dark/iphone/macbook/ipad/...), socialPreset (none/twitter/linkedin/instagram-square/instagram-story/facebook/producthunt), watermarkText, outputFormat
circle-cropRecorte circularzoom (1-5), offsetX, offsetY, borderWidth, borderColor, background (transparent/hex), outputSize
image-padRelleno de imagentarget (16:9/9:16/1:1/4:3/3:4/custom), ratioW, ratioH, background (color/transparent/blur), color (hex), padding (0-50%)
sprite-sheetHoja de spritescolumns (1-16), padding, background (hex), format (png/webp/jpeg), quality - multiarchivo (2-64 imágenes)

Formato y conversión

ID de herramientaNombreAjustes clave
svg-to-rasterSVG a rásterformat (png/jpeg/webp/avif/tiff/gif/heif), width, height, scale, dpi, background
vectorizeImagen a SVGcolorMode (bw/color), threshold, colorPrecision, filterSpeckle, pathMode (none/polygon/spline)
gif-toolsHerramientas GIFaction (resize/optimize/reverse/speed/extract-frames/rotate/add-text), parámetros específicos de cada acción
gif-webpConversor GIF/WebPquality (1-100), lossless (bool), resizePercent (10-100)

Herramientas de vídeo

ID de herramientaNombreAjustes clave
convert-videoConvertir vídeoformat (mp4/mov/webm/avi/mkv), quality (high/balanced/small)
compress-videoComprimir vídeoquality (light/balanced/strong), resolution (original/1080p/720p/480p)
trim-videoRecortar vídeostartS, endS, precise (bool, corte con precisión de fotograma)
mute-videoSilenciar vídeo-
video-to-gifVídeo a GIFfps (1-30), width, startS, durationS (máx. 60 s)
resize-videoRedimensionar vídeowidth, height, preset (custom/2160p/1440p/1080p/720p/480p/360p)
crop-videoRecortar vídeowidth, height, x, y
rotate-videoGirar vídeotransform (cw90/ccw90/180/hflip/vflip)
change-fpsCambiar FPSfps (1-120)
video-colorColor de vídeobrightness, contrast, saturation, gamma
video-speedVelocidad de vídeofactor (0.25-4), keepPitch (bool)
reverse-videoInvertir vídeo- (máx. 5 minutos)
video-loudnormNormalizar audio- (EBU R128)
aspect-padRelleno de proporcióntarget (16:9/9:16/1:1/4:3/3:4), color (hex)
blur-padRelleno difuminadotarget (16:9/9:16/1:1/4:3/3:4), blur (2-50)
watermark-videoMarca de agua en vídeotext, position, fontSize, opacity, color
stabilize-videoEstabilizar vídeosmoothing (5-60, en fotogramas)
gif-to-videoGIF a vídeoformat (mp4/webm/mov)
video-to-webpVídeo a WebPfps, width, quality, loop (bool)
video-to-framesVídeo a fotogramasmode (all/nth/timestamps), n, timestamps, format (png/jpg)
merge-videosCombinar vídeos- (multiarchivo, normalizado a la resolución del primer vídeo)
replace-audioReemplazar audio- (archivo de vídeo + audio, dos archivos)
burn-subtitlesIncrustar subtítulosfontSize (8-72) - archivo de vídeo + subtítulos
embed-subtitlesInsertar subtítuloslanguage (código ISO 639-2/B) - archivo de vídeo + subtítulos
extract-subtitlesExtraer subtítulos- (genera SRT)
images-to-videoImágenes a vídeosecondsPerImage (0.5-10), resolution (1080p/720p/square), fps - multiarchivo
video-metadataLimpiar metadatos de vídeo-
auto-subtitlesSubtítulos automáticos (IA)language (auto/en/de/fr/es/zh/ja/ko/id/th/vi), format (srt/vtt)
extract-audioExtraer audioformat (mp3/wav/m4a/ogg)

Herramientas de audio

ID de herramientaNombreAjustes clave
convert-audioConvertir audioformat (mp3/wav/ogg/flac/m4a), bitrateKbps (32-320)
trim-audioRecortar audiostartS, endS
volume-adjustAjustar volumengainDb (-30 a 30)
normalize-audioNormalizar audio- (EBU R128, -16 LUFS)
fade-audioFundido de audiofadeInS (0-30), fadeOutS (0-30)
reverse-audioInvertir audio-
audio-speedVelocidad de audiofactor (0.25-4)
pitch-shiftCambio de tonosemitones (-12 a 12)
audio-channelsCanales de audiomode (stereo-to-mono/mono-to-stereo/swap)
silence-removalEliminación de silenciosthresholdDb (-80 a -20), minSilenceS (0.1-5)
noise-reductionReducción de ruidostrength (light/medium/strong)
merge-audioCombinar audioformat (mp3/wav/flac/m4a) - multiarchivo
split-audioDividir audiomode (time/parts/silence), segmentS, parts, thresholdDb, minSilenceS
ringtone-makerCreador de tonos de llamadastartS, durationS (1-30)
waveform-imageImagen de forma de ondawidth, height, color (hex)
audio-metadataMetadatos de audiostrip (bool), title, artist, album
transcribe-audioTranscribir audio (IA)language (auto/en/de/fr/es/zh/ja/ko/id/th/vi), outputFormat (txt/srt/vtt)

Herramientas de documentos

ID de herramientaNombreAjustes clave
merge-pdfCombinar PDF- (multiarchivo, hasta 20 PDF)
split-pdfDividir PDFmode (range/every), range, everyN (1-500)
compress-pdfComprimir PDFmode (quality/targetSize), quality (1-100), targetSizeKb
rotate-pdfGirar PDFangle (90/180/270), range (rango de páginas)
extract-pagesExtraer páginasrange (sintaxis de qpdf, p. ej. "1-5,8,10-z")
remove-pagesEliminar páginaspages (rango de qpdf a eliminar)
organize-pdfOrganizar PDForder (orden de páginas de qpdf, p. ej. "3,1,2,5-z")
protect-pdfProteger PDFuserPassword, ownerPassword (AES-256)
unlock-pdfDesbloquear PDFpassword
repair-pdfReparar PDF-
linearize-pdfOptimizar PDF para web- (lineariza para una visualización web rápida)
grayscale-pdfPDF en escala de grises-
pdfa-convertConvertir a PDF/A- (PDF/A-2 de archivo)
crop-pdfRecortar PDFmargin (0-2000 puntos)
nup-pdfPDF N-upperSheet (2/3/4/8/9/12/16)
booklet-pdfFolleto PDFperSheet (2/4/6/8)
watermark-pdfMarca de agua en PDFtext, position, fontSize, opacity, rotation
pdf-page-numbersNúmeros de página de PDFposition (bl/bc/br/tl/tc/tr), fontSize
flatten-pdfAplanar PDF- (fija formularios y anotaciones)
redact-pdfRedactar PDFterms (string[]), caseSensitive (bool)
sign-pdfFirmar PDFRuta multipart personalizada con PDF file, archivos de firma sig0, sig1 y el array JSON placements
pdf-to-textPDF a texto-
pdf-to-wordPDF a Word-
pdf-metadataMetadatos de PDFtitle, author, subject, keywords
convert-documentConvertir documentoformat (docx/odt/rtf/txt)
convert-presentationConvertir presentaciónformat (pptx/odp)
convert-spreadsheetConvertir hoja de cálculoformat (xlsx/ods/csv)
excel-to-pdfExcel a PDF-
word-to-pdfWord a PDF-
powerpoint-to-pdfPowerPoint a PDF-
html-to-pdfHTML a PDF- (recursos remotos deshabilitados)
markdown-to-docxMarkdown a Word-
markdown-to-htmlMarkdown a HTML-
markdown-to-pdfMarkdown a PDF- (recursos remotos deshabilitados)
epub-convertConvertir EPUBformat (pdf/docx/html/md)
to-epubConvertir a EPUB- (acepta .docx, .md, .html, .txt)
ocr-pdfOCR de PDF (IA)quality (fast/balanced/best), language (auto/en/de/fr/es/zh/ja/ko), pages
pdf-to-imagePDF a imagenpages (all/range), format, dpi, quality
pdf-to-jpgPDF a JPGpages, dpi, quality, colorMode
pdf-to-pngPDF a PNGpages, dpi, quality, colorMode
pdf-to-tiffPDF a TIFFpages, dpi, quality, colorMode

Herramientas de archivos

ID de herramientaNombreAjustes clave
chart-makerCreador de gráficoskind (bar/line/pie), title, width, height
csv-excelCSV a Excelsheet (número de hoja de cálculo para la entrada XLSX) - bidireccional
csv-jsonCSV a JSONpretty (bool) - bidireccional
json-xmlJSON a XMLpretty (bool) - bidireccional
split-csvDividir CSVrowsPerFile (1-1000000), keepHeader (bool)
merge-csvsCombinar CSV- (multiarchivo, columnas coincidentes)
yaml-jsonYAML / JSON- (bidireccional)
xml-to-csvXML a CSV- (encuentra automáticamente los elementos repetidos)
excel-to-csvExcel a CSVpreajuste de conversión dedicado respaldado por convert-spreadsheet
create-zipCrear ZIP- (multiarchivo, 2-50 archivos)
extract-zipExtraer ZIP- (protegido contra bombas)

HTML a imagen

Captura una página web como imagen. A diferencia de otras herramientas, este endpoint acepta application/json en lugar de datos de formulario multipart (no hace falta subir archivos).

Endpoint: POST /api/v1/tools/image/html-to-image

Content-Type: application/json

ParámetroTipoPor defectoDescripción
urlstring(obligatorio)URL a capturar (solo http/https)
formatstring"png"Formato de salida: jpg, png, webp
qualitynumber90Calidad 1-100 (solo JPG/WebP)
fullPagebooleanfalseCapturar la página completa con desplazamiento
devicePresetstring"desktop"desktop, tablet, mobile, custom
viewportWidthnumber1280Ancho personalizado del viewport 320-3840
viewportHeightnumber720Alto personalizado del viewport 320-2160

Ejemplo:

bash
curl -X POST http://localhost:1349/api/v1/tools/image/html-to-image \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://snapotter.com", "format": "png", "devicePreset": "desktop"}'

Respuesta:

json
{
  "jobId": "uuid",
  "downloadUrl": "/api/v1/download/{jobId}/screenshot.png",
  "originalSize": 0,
  "processedSize": 54321
}

Subrutas de herramientas

Algunas herramientas exponen endpoints adicionales más allá del estándar POST /api/v1/tools/<section>/<toolId>:

MétodoRutaDescripción
GET/api/v1/tools/popularDevuelve los ID de las herramientas populares, recurriendo a una lista predeterminada curada cuando los datos de uso son escasos
POST/api/v1/tools/image/remove-background/effectsAplica efectos de fondo (color/degradado/desenfoque/sombra) sin volver a ejecutar la IA. Usa la máscara en caché de la eliminación inicial.
POST/api/v1/tools/image/edit-metadata/inspectLeer los metadatos EXIF/IPTC/XMP existentes de una imagen
POST/api/v1/tools/image/strip-metadata/inspectInspeccionar los campos de metadatos antes de eliminarlos
POST/api/v1/tools/image/passport-photo/analyzeFase 1: detección de rostros con IA + eliminación de fondo. Devuelve los puntos de referencia faciales y los datos en caché.
POST/api/v1/tools/image/passport-photo/generateFase 2: recortar, redimensionar y crear mosaicos usando el análisis en caché. Sin volver a ejecutar la IA.
POST/api/v1/tools/image/gif-tools/infoObtener metadatos del GIF (número de fotogramas, dimensiones, duración)
POST/api/v1/tools/pdf/pdf-to-image/infoObtener metadatos del PDF (número de páginas, dimensiones)
POST/api/v1/tools/pdf/pdf-to-image/previewGenerar una vista previa de una página específica del PDF
POST/api/v1/tools/pdf/pdf-to-jpg/infoObtener metadatos del PDF para el preajuste JPG dedicado
POST/api/v1/tools/pdf/pdf-to-jpg/previewGenerar una vista previa de página de PDF con el preajuste JPG
POST/api/v1/tools/pdf/pdf-to-png/infoObtener metadatos del PDF para el preajuste PNG dedicado
POST/api/v1/tools/pdf/pdf-to-png/previewGenerar una vista previa de página de PDF con el preajuste PNG
POST/api/v1/tools/pdf/pdf-to-tiff/infoObtener metadatos del PDF para el preajuste TIFF dedicado
POST/api/v1/tools/pdf/pdf-to-tiff/previewGenerar una vista previa de página de PDF con el preajuste TIFF
POST/api/v1/tools/image/svg-to-raster/batchConvertir por lotes varios SVG a ráster
POST/api/v1/tools/image/image-enhancement/analyzeAnalizar la calidad de la imagen y devolver recomendaciones de mejora
POST/api/v1/tools/image/optimize-for-web/previewVista previa ligera para el ajuste de parámetros en vivo. Devuelve una imagen optimizada con cabeceras de tamaño.

Procesamiento por lotes

Aplica una herramienta genérica habilitada para lotes a varios archivos a la vez. Devuelve un archivo ZIP. Las rutas personalizadas multiarchivo o de varios pasos, como la firma de PDF, el OCR de PDF y las rutas de preajuste de PDF a imagen, usan su propio contrato de endpoint en lugar de la ruta genérica /batch.

bash
curl -X POST http://localhost:1349/api/v1/tools/image/compress/batch \
  -H "Authorization: Bearer <token>" \
  -F "[email protected]" \
  -F "[email protected]" \
  -F "[email protected]" \
  -F 'settings={"quality":80}'

La concurrencia se controla mediante CONCURRENT_JOBS (por defecto: detectado automáticamente a partir de los núcleos de la CPU). MAX_BATCH_SIZE limita el número de archivos por lote (por defecto: 100; establece 0 para sin límite).

Pipelines

Ejecutar un pipeline

bash
# Single file
curl -X POST http://localhost:1349/api/v1/pipeline/execute \
  -H "Authorization: Bearer <token>" \
  -F "[email protected]" \
  -F 'pipeline={"steps":[
    {"toolId":"resize","settings":{"width":1200}},
    {"toolId":"compress","settings":{"quality":80}},
    {"toolId":"watermark-text","settings":{"text":"© 2025"}}
  ]}'

# Batch (multiple files → ZIP)
curl -X POST http://localhost:1349/api/v1/pipeline/batch \
  -H "Authorization: Bearer <token>" \
  -F "[email protected]" \
  -F "[email protected]" \
  -F 'pipeline={"steps":[{"toolId":"resize","settings":{"width":800}}]}'

La salida de cada paso es la entrada del siguiente paso. Los pipelines permiten 20 pasos por defecto, configurable mediante MAX_PIPELINE_STEPS. Establece MAX_PIPELINE_STEPS=0 para eliminar el límite.

Guardar y gestionar pipelines

MétodoRutaDescripción
POST/api/v1/pipeline/saveGuardar un pipeline con nombre (name, description, steps[])
GET/api/v1/pipeline/listListar los pipelines guardados (los administradores ven todos; los usuarios ven los propios)
DELETE/api/v1/pipeline/:idEliminar (propietario o administrador)
GET/api/v1/pipeline/toolsListar los ID de herramienta válidos para los pasos del pipeline

Seguimiento del progreso

Los trabajos de larga duración, las herramientas en cola, los trabajos por lotes y los pipelines emiten el progreso en tiempo real mediante Server-Sent Events. El flujo de progreso es público y está indexado por el ID del trabajo, así que los clientes no necesitan enviar una cabecera Authorization para leerlo.

bash
# Connect to the SSE stream (jobId is in the JSON response body from the tool endpoint)
curl -N http://localhost:1349/api/v1/jobs/<jobId>/progress

Formato del evento:

data: {"jobId":"...","type":"single","phase":"processing","stage":"Upscaling","percent":42}
data: {"jobId":"...","type":"single","phase":"complete","percent":100,"result":{"downloadUrl":"/api/v1/download/..."}}
data: {"jobId":"...","type":"batch","status":"processing","completedFiles":2,"totalFiles":5,"failedFiles":0,"errors":[]}

Puedes solicitar la cancelación de un trabajo en cola o en ejecución con POST /api/v1/jobs/:jobId/cancel. La respuesta es {"canceled":true|false}.

Biblioteca de archivos

Almacenamiento persistente de archivos con historial de versiones.

MétodoRutaDescripción
POST/api/v1/uploadSubir archivos al espacio de trabajo (procesamiento temporal)
POST/api/v1/files/uploadSubir archivos a la biblioteca de archivos persistente
POST/api/v1/files/save-resultGuardar el resultado del procesamiento de una herramienta como una nueva versión de archivo
GET/api/v1/filesListar los archivos guardados (paginado, con búsqueda)
GET/api/v1/files/:idObtener los metadatos del archivo + la cadena de versiones
GET/api/v1/files/:id/downloadDescargar archivo
GET/api/v1/files/:id/thumbnailObtener una miniatura JPEG de 300px
DELETE/api/v1/filesEliminar en bloque archivos y sus cadenas de versiones (cuerpo: { ids: [...] })
POST/api/v1/fetch-urlsObtener URL remotas en el espacio de trabajo para importaciones basadas en URL
POST/api/v1/previewGenerar una vista previa WebP compatible con el navegador (para formatos HEIC/HEIF/RAW)
GET/api/v1/files/:id/previewTransmitir una vista previa en caché o generada compatible con el navegador para un PDF, documento de oficina, vídeo o archivo de audio guardado
POST/api/v1/preview/generateGenerar una vista previa MP4 o MP3 bajo demanda para un archivo multimedia subido sin guardarlo primero
GET/api/v1/download/:jobId/:filenameDescargar un archivo procesado de un espacio de trabajo

Para guardar automáticamente el resultado de una herramienta en la biblioteca, incluye fileId como campo de formulario multipart que referencie un archivo existente de la biblioteca. El resultado procesado se guardará como una nueva versión.

Gestión de claves de API

MétodoRutaAccesoDescripción
POST/api/v1/api-keysAuthGenerar una nueva clave - se muestra una vez
GET/api/v1/api-keysAuthListar claves (nombre, id, lastUsedAt - no la clave en bruto)
DELETE/api/v1/api-keys/:idAuthEliminar clave

Equipos

MétodoRutaAccesoDescripción
GET/api/v1/teamsAdmin (teams:manage)Listar equipos
POST/api/v1/teamsAdmin (teams:manage)Crear equipo
PUT/api/v1/teams/:idAdmin (teams:manage)Renombrar equipo
DELETE/api/v1/teams/:idAdmin (teams:manage)Eliminar equipo (no se puede eliminar el equipo predeterminado ni los equipos con miembros)

Ajustes

Configuración clave-valor en tiempo de ejecución (legible por cualquier usuario autenticado, escribible solo por el administrador).

MétodoRutaDescripción
GET/api/v1/settingsObtener todos los ajustes
PUT/api/v1/settingsActualizar ajustes en bloque (cuerpo JSON con pares clave-valor)
GET/api/v1/settings/:keyObtener un ajuste específico por clave

Claves conocidas: disabledTools (array JSON de ID de herramienta), enableExperimentalTools (cadena bool), loginAttemptLimit (número).

Preferencias

Las preferencias por usuario están separadas de los ajustes de la instancia. Cualquier usuario autenticado puede leer y actualizar su propio mapa de preferencias.

MétodoRutaDescripción
GET/api/v1/preferencesObtener las preferencias del usuario actual como { "preferences": { ... } }
PUT/api/v1/preferencesInsertar o actualizar una o varias claves de preferencia para el usuario actual

Roles

Gestión de roles personalizados con permisos granulares.

MétodoRutaAccesoDescripción
GET/api/v1/rolesAdmin (audit:read)Listar todos los roles con el número de usuarios
POST/api/v1/rolesAdmin (security:manage)Crear un rol personalizado (name, description, permissions)
PUT/api/v1/roles/:idAdmin (security:manage)Actualizar un rol personalizado (no se pueden modificar los roles integrados)
DELETE/api/v1/roles/:idAdmin (security:manage)Eliminar un rol personalizado (no se pueden eliminar los roles integrados; los usuarios afectados revierten al rol user)

Permisos disponibles (17): tools:use, files:own, files:all, apikeys:own, apikeys:all, pipelines:own, pipelines:all, settings:read, settings:write, users:manage, teams:manage, features:manage, system:health, audit:read, compliance:manage, webhooks:manage, security:manage.

Registro de auditoría

Endpoint solo para administradores para revisar acciones relevantes de seguridad.

MétodoRutaAccesoDescripción
GET/api/v1/audit-logAdmin (audit:read)Registro de auditoría paginado con filtros opcionales

Parámetros de consulta:

ParámetroDescripción
pageNúmero de página (por defecto: 1)
limitEntradas por página (por defecto: 50, máx.: 100)
actionFiltrar por tipo de acción (p. ej. ROLE_CREATED, ROLE_DELETED)
ipFiltrar por dirección IP de origen
fromFiltrar las entradas posteriores a esta fecha ISO 8601
toFiltrar las entradas anteriores a esta fecha ISO 8601

Analítica

MétodoRutaAccesoDescripción
GET/api/v1/config/analyticsPúblicoObtener la configuración de analítica efectiva (clave de PostHog, DSN de Sentry, tasa de muestreo). Las claves, el DSN y el ID de instancia quedan en blanco cuando la analítica está desactivada, ya sea por la compilación en tiempo de compilación o por el ajuste analyticsEnabled de la instancia.
POST/api/v1/feedbackAuthEnviar comentarios explícitos del usuario al proyecto de PostHog configurado como feedback_submitted. La ruta respeta la barrera de analítica, limita la tasa de envíos, elimina los campos de contacto salvo que contactOk sea true, y nunca acepta el contenido de archivos, nombres de archivos, rutas de subida ni texto de error privado en bruto. Cuando la analítica está desactivada, devuelve { "ok": true, "accepted": false }.
PUT/api/v1/settingsAdmin (settings:write)Establecer la exclusión voluntaria a nivel de toda la instancia. Envía un cuerpo JSON { "analyticsEnabled": "false" } para desactivar la analítica para todos, o "true" para volver a activarla.

Funciones / Paquetes de IA

Gestiona los paquetes de funciones de IA (instalar/desinstalar paquetes de modelos de IA en el entorno Docker). Prefiere el endpoint de instalación a nivel de herramienta cuando habilites una herramienta desde una automatización personalizada: algunas herramientas de IA necesitan más de un paquete compartido, y este endpoint omite los paquetes ya instalados y solo pone en cola los que faltan.

MétodoRutaAccesoDescripción
GET/api/v1/featuresAuthListar todos los paquetes de funciones y su estado de instalación
POST/api/v1/admin/features/:bundleId/installAdmin (features:manage)Instalar un paquete de funciones (asíncrono, devuelve jobId para el seguimiento del progreso)
POST/api/v1/admin/tools/:toolId/features/installAdmin (features:manage)Instalar todos los paquetes que requiere una herramienta; devuelve el estado en cola/omitido por paquete
POST/api/v1/admin/features/:bundleId/uninstallAdmin (features:manage)Desinstalar un paquete de funciones y limpiar los archivos de modelos
GET/api/v1/admin/features/disk-usageAdmin (features:manage)Obtener el uso total de disco de los modelos de IA
POST/api/v1/admin/features/importAdmin (features:manage)Importar un archivo de paquete de IA sin conexión

Operaciones de administración

Endpoints operativos para observabilidad, soporte, informes de uso y estado de las copias de seguridad.

MétodoRutaAccesoDescripción
GET/api/v1/admin/log-levelAdmin (settings:write)Leer el nivel de log actual en tiempo de ejecución
POST/api/v1/admin/log-levelAdmin (settings:write)Cambiar el nivel de log en tiempo de ejecución (fatal, error, warn, info, debug, trace o silent)
GET/api/v1/metricsAdmin (system:health)Métricas de Prometheus en formato de texto
GET/api/v1/admin/support-bundleAdmin (system:health)Descargar un ZIP de paquete de soporte de diagnóstico censurado
GET/api/v1/admin/usageAdmin (audit:read)Datos del panel de uso, con el parámetro de consulta opcional days
GET/api/v1/admin/backup-statusAdmin (system:health)Leer los metadatos de la última copia de seguridad y su estado de frescura
POST/api/v1/admin/backup-statusAdmin (system:health)Registrar una copia de seguridad completada (type, sizeBytes opcional, notes opcional)

APIs de Enterprise

Estas rutas están limitadas por licencia según su función enterprise relacionada. Aun así requieren el permiso de SnapOtter indicado.

MétodoRutaAccesoDescripción
GET/api/v1/enterprise/audit/exportAdmin (audit:read)Exportar entradas de auditoría como JSON o CSV con filtros
GET/api/v1/enterprise/config/exportAdmin (system:health)Exportar la configuración de instancia censurada, los roles personalizados y los equipos
POST/api/v1/enterprise/config/importAdmin (system:health)Importar configuración, con ejecución de prueba opcional
GET/api/v1/enterprise/ip-allowlistAdmin (security:manage)Leer la lista de permitidos CIDR configurada
PUT/api/v1/enterprise/ip-allowlistAdmin (security:manage)Actualizar la lista de permitidos CIDR con prevención de autobloqueo
GET/api/v1/enterprise/legal-holdAdmin (compliance:manage)Listar las retenciones legales de usuarios y equipos
PUT/api/v1/enterprise/legal-holdAdmin (compliance:manage)Aplicar o liberar una retención legal sobre un usuario o equipo
POST/api/v1/enterprise/scim/tokenAdmin (users:manage)Generar un token bearer de SCIM, devuelto una vez
DELETE/api/v1/enterprise/scim/tokenAdmin (users:manage)Revocar el token bearer de SCIM actual
GET/api/v1/enterprise/siem/configAdmin (webhooks:manage)Leer la configuración de reenvío SIEM
PUT/api/v1/enterprise/siem/configAdmin (webhooks:manage)Actualizar la configuración de reenvío SIEM
GET/api/v1/enterprise/webhooksAdmin (webhooks:manage)Listar los destinos de webhook
POST/api/v1/enterprise/webhooksAdmin (webhooks:manage)Crear un destino de webhook
PUT/api/v1/enterprise/webhooks/:indexAdmin (webhooks:manage)Actualizar un destino de webhook
DELETE/api/v1/enterprise/webhooks/:indexAdmin (webhooks:manage)Eliminar un destino de webhook
POST/api/v1/enterprise/webhooks/:index/testAdmin (webhooks:manage)Enviar una carga útil de webhook de prueba
POST/api/v1/enterprise/users/:id/exportAdmin (compliance:manage)Iniciar un trabajo de exportación de usuario según el RGPD
GET/api/v1/enterprise/users/:id/export/:jobIdAdmin (compliance:manage)Leer el estado de la exportación RGPD y la URL de descarga
DELETE/api/v1/enterprise/users/:id/purgeAdmin (compliance:manage)Purgar permanentemente los datos de un usuario tras la confirmación
DELETE/api/v1/enterprise/teams/:id/purgeAdmin (compliance:manage)Purgar permanentemente los datos de un equipo tras la confirmación
GET/api/v1/admin/versionAdmin (system:health)Leer los metadatos de versión de la app, la compilación, Node y el esquema
GET/api/v1/admin/migrations/pendingAdmin (system:health)Comparar las migraciones empaquetadas con las migraciones aplicadas
GET/api/v1/admin/upgrade-checkAdmin (system:health)Ejecutar comprobaciones de preparación para la actualización

SCIM 2.0

Los endpoints de descubrimiento de SCIM son públicos. Los endpoints de usuarios y grupos requieren el token bearer de SCIM generado anteriormente.

MétodoRutaAccesoDescripción
GET/api/v1/scim/v2/ServiceProviderConfigPúblicoCapacidades del servidor SCIM
GET/api/v1/scim/v2/SchemasPúblicoDescubrimiento de esquemas SCIM
GET/api/v1/scim/v2/ResourceTypesPúblicoDescubrimiento de tipos de recursos SCIM
GET/api/v1/scim/v2/UsersToken SCIMListar usuarios, con filtro SCIM opcional
POST/api/v1/scim/v2/UsersToken SCIMCrear un usuario
GET/api/v1/scim/v2/Users/:idToken SCIMObtener un usuario
PUT/api/v1/scim/v2/Users/:idToken SCIMReemplazar un usuario
DELETE/api/v1/scim/v2/Users/:idToken SCIMDesactivar un usuario de forma reversible
GET/api/v1/scim/v2/GroupsToken SCIMListar equipos como grupos SCIM
POST/api/v1/scim/v2/GroupsToken SCIMCrear un equipo
GET/api/v1/scim/v2/Groups/:idToken SCIMObtener un equipo
PUT/api/v1/scim/v2/Groups/:idToken SCIMReemplazar un equipo y la pertenencia al grupo
DELETE/api/v1/scim/v2/Groups/:idToken SCIMEliminar un equipo

Plantillas de memes

API de apoyo para la herramienta generadora de memes.

MétodoRutaAccesoDescripción
GET/api/v1/meme-templatesAuthListar todas las plantillas de memes disponibles con las posiciones de los cuadros de texto
GET/api/v1/meme-templates/full/:filenameAuthServir la imagen de la plantilla a tamaño completo
GET/api/v1/meme-templates/thumbs/:filenameAuthServir la miniatura de la plantilla
GET/api/v1/meme-templates/fonts/:filenameAuthServir el archivo de fuente usado para renderizar el texto del meme

Respuestas de error

Todos los errores devuelven JSON:

json
{
  "error": "Human-readable message",
  "code": "MACHINE_READABLE_CODE"
}
EstadoSignificado
400Petición no válida / validación fallida
401No autenticado
403Permisos insuficientes
404Recurso no encontrado
413Archivo demasiado grande (consulta MAX_UPLOAD_SIZE_MB)
422Procesamiento fallido tras la validación
429Límite de tasa alcanzado (consulta RATE_LIMIT_PER_MIN)
501El paquete de funciones de IA requerido no está instalado (FEATURE_NOT_INSTALLED)
500Error interno del servidor