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

Referência da API REST

A documentação interativa da API, com exemplos de requisição/resposta, está disponível em http://localhost:1349/api/docs.

Especificações legíveis por máquina:

  • /api/v1/openapi.yaml - Especificação OpenAPI 3.1
  • /llms.txt - Resumo amigável para LLM
  • /llms-full.txt - Documentação completa amigável para LLM

Autenticação

Todos os endpoints exigem autenticação, a menos que AUTH_ENABLED=false.

Token de sessão

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>"

As sessões expiram após 7 dias (configurável via SESSION_DURATION_HOURS).

Chaves 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>"

As chaves têm o prefixo si_ e são armazenadas como hashes scrypt. A chave bruta é exibida uma única vez e nunca mais pode ser recuperada.

Endpoints de autenticação

MétodoCaminhoAcessoDescrição
POST/api/auth/loginPúblicoLogin, obter token de sessão
POST/api/auth/logoutAutenticadoDestruir a sessão atual
GET/api/auth/sessionAutenticadoValidar a sessão atual
POST/api/auth/change-passwordAutenticadoAlterar a própria senha (invalida todas as outras sessões + chaves de API)
GET/api/auth/usersAdminListar todos os usuários
POST/api/auth/registerAdminCriar um novo usuário
PUT/api/auth/users/:idAdminAtualizar o papel ou o time do usuário
POST/api/auth/users/:id/reset-passwordAdminRedefinir a senha do usuário
DELETE/api/auth/users/:idAdminExcluir um usuário
GET/api/v1/config/authPúblicoVerificar se a autenticação está habilitada ({ authEnabled: bool })
POST/api/auth/mfa/enrollAutenticadoIniciar o cadastro de MFA TOTP. Requer o recurso enterprise mfa
POST/api/auth/mfa/verifyAutenticadoConfirmar o cadastro de MFA com um código TOTP
POST/api/auth/mfa/completePúblicoConcluir um desafio de login MFA pendente
POST/api/auth/mfa/disableAutenticadoDesabilitar o MFA para o usuário atual
POST/api/auth/users/:id/mfa/resetAdmin (users:manage)Redefinir o MFA de um usuário
GET/api/auth/oidc/loginPúblicoIniciar o login OIDC quando o OIDC estiver habilitado
GET/api/auth/oidc/callbackPúblicoCallback de autorização OIDC
GET/api/auth/saml/metadataPúblicoXML de metadados do SP SAML quando o SAML estiver habilitado
GET/api/auth/saml/loginPúblicoIniciar o login SAML
POST/api/auth/saml/callbackPúblicoServiço consumidor de asserções SAML

Quando o MFA está habilitado para um usuário, POST /api/auth/login retorna {"requiresMfa":true,"mfaToken":"...","mfaRequired":true|false} em vez de um token de sessão. Envie esse mfaToken junto com um código TOTP ou de recuperação para /api/auth/mfa/complete.

Permissões

PermissãoAdminUsuário
Usar ferramentas
Próprios arquivos/pipelines/chaves de API
Ver arquivos/pipelines/chaves de todos os usuários-
Gravar configurações-
Gerenciar usuários e times-
Gerenciar branding-

Health Check

MétodoCaminhoAcessoDescrição
GET/api/v1/healthPúblicoVerificação básica de saúde. Retorna {"status":"healthy","version":"..."} com 200, ou {"status":"unhealthy"} com 503 se o banco de dados estiver inacessível.
GET/api/v1/readyzPúblicoSonda de prontidão. Verifica PostgreSQL, Redis, espaço em disco e S3 quando configurado. Retorna 503 quando a instância não deve receber tráfego.
GET/api/v1/admin/healthAdmin (system:health)Diagnósticos detalhados, incluindo uptime, modo de armazenamento, status do banco de dados, estado da fila e disponibilidade de GPU.

Usando ferramentas

Toda ferramenta segue o mesmo padrão:

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> é um de image, video, audio, pdf ou files.

  • O upload é multipart/form-data.
  • settings é uma string JSON com opções específicas da ferramenta.
  • clientJobId é um campo de formulário opcional para correlação de progresso fornecida pelo chamador.
  • fileId é um campo de formulário opcional que referencia um item existente da biblioteca de arquivos. Quando presente, a saída processada é salva como uma nova versão e a resposta inclui savedFileId.
  • Ferramentas rápidas normalmente retornam 200 JSON: {"jobId":"...","downloadUrl":"/api/v1/download/<jobId>/<filename>","originalSize":1234,"processedSize":567}. Obtenha o arquivo processado em downloadUrl.
  • Qualquer ferramenta enfileirada pode retornar 202 JSON se for de longa duração ou exceder a janela de espera síncrona: {"jobId":"...","async":true}. Conecte-se ao SSE para acompanhar o progresso e faça o download quando concluído (consulte Acompanhamento de progresso).
  • As rotas de lote retornam um arquivo ZIP transmitido diretamente (com o cabeçalho X-Job-Id) para ferramentas registradas no registro genérico de lote.

Referência de ferramentas

Presets de conversão

O catálogo compartilhado inclui 83 endpoints dedicados a presets de conversão, como jpg-to-png, mov-to-mp4, m4a-to-mp3, pdf-to-jpg e excel-to-csv. Os presets são rotas de ferramentas de primeira classe:

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

Cada preset trava o formato de saída e delega a uma ferramenta base como convert, convert-video, extract-audio, convert-audio, image-to-pdf, pdf-to-image, svg-to-raster ou convert-spreadsheet. Consulte Presets de conversão para a tabela completa de rotas e as configurações opcionais.

Essenciais

ID da ferramentaNomePrincipais configurações
resizeRedimensionarwidth, height, fit (cover/contain/fill/inside/outside), percentage, withoutEnlargement, mais 23 presets de redes sociais
cropRecortarleft, top, width, height, unit (px/percent)
rotateGirar e Espelharangle, horizontal (bool), vertical (bool)
convertConverterformat (jpg/png/webp/avif/tiff/gif/heic/heif), quality
compressComprimirmode (quality/targetSize), quality (1–100), targetSizeKb

Otimização

ID da ferramentaNomePrincipais configurações
optimize-for-webOtimizar para Webformat (webp/jpeg/avif/png), quality, maxWidth, maxHeight, progressive, stripMetadata
strip-metadataRemover Metadados-
edit-metadataEditar Metadadostitle, description, author, copyright, keywords, gps (lat/lon), dateTime
bulk-renameRenomear em Massapattern (suporta {n}, {date}, {original}), startIndex, padding
image-to-pdfImagem para PDFpageSize (A4/Letter/...), orientation, margin, targetSize ({value, unit})
faviconGerador de Faviconpadding, backgroundColor, borderRadius - gera todos os tamanhos padrão

Ajustes

ID da ferramentaNomePrincipais configurações
adjust-colorsAjustar Coresbrightness, contrast, exposure, saturation, temperature, tint, hue, sharpness, red, green, blue, effect (none/grayscale/sepia/invert)
sharpeningNitidezmethod (adaptive/unsharp-mask/high-pass), sigma, m1, m2, x1, y2, y3, amount, radius, threshold, strength, kernelSize (3/5), denoise (off/light/medium/strong)
replace-colorSubstituir CorsourceColor, targetColor (substituição), makeTransparent, tolerance
color-blindnessSimulação de DaltonismosimulationType (protanopia/deuteranopia/tritanopia/protanomaly/deuteranomaly/tritanomaly/achromatopsia/blueConeMonochromacy, padrão "deuteranomaly")
duotoneDuotomshadow (hex), highlight (hex), intensity (0-100)
pixelatePixelizarblockSize (2-128), region ({left, top, width, height} para pixelização parcial)
vignetteVinhetastrength (0.1-1), color (hex), radius, softness, roundness, centerX, centerY

Ferramentas de IA

Todas as ferramentas de IA rodam no seu hardware: CPU por padrão ou NVIDIA CUDA quando uma GPU NVIDIA compatível estiver disponível. A aceleração por iGPU Intel/AMD via VA-API, Quick Sync ou OpenCL não é suportada para inferência de IA hoje. Não requer internet.

ID da ferramentaNomeModelo de IAPrincipais configurações
remove-backgroundRemover Fundorembg (BiRefNet / U2-Net)model, backgroundType (transparent/color/gradient/blur/image), backgroundColor, gradientColor1, gradientColor2, gradientAngle, blurEnabled, blurIntensity, shadowEnabled, shadowOpacity
upscaleAmpliação de ImagemRealESRGANscale (2/4), model, faceEnhance, denoise, format, quality
erase-objectApagador de ObjetosLaMa (ONNX)Máscara enviada como segunda parte de arquivo (fieldname mask), format, quality
ocrOCR / Extração de TextoPaddleOCR / Tesseractquality (fast/balanced/best), language, enhance
blur-facesDesfoque de Rosto / 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-enhancementAprimoramento de ImagemBaseado em análisemode (auto/exposure/contrast/color/sharpness), strength
enhance-facesAprimoramento de RostoGFPGAN / CodeFormermodel (gfpgan/codeformer), strength, sensitivity, centerFace
colorizeColorização por IADDColorintensity, model
noise-removalRemoção de RuídoRedução de ruído em camadastier (quick/balanced/quality/maximum), strength, detailPreservation, colorNoise, format, quality
red-eye-removalRemoção de Olhos VermelhosPontos de referência facial + análise de corsensitivity, strength
restore-photoRestauração de FotosPipeline de múltiplas etapasmode (auto/light/heavy), scratchRemoval, faceEnhancement, fidelity, denoise, denoiseStrength, colorize
passport-photoFoto de PassaportePontos de referência do MediaPipeFluxo em duas fases. A análise usa multipart file; a geração usa JSON com countryCode, bgColor, printLayout (none/4x6/a4), pontos de referência e dimensões da imagem
content-aware-resizeRedimensionamento Sensível ao ConteúdoSeam carving (caire)width, height, protectFaces, blurRadius, sobelThreshold, square
transparency-fixerCorretor de Transparência PNGBiRefNet HR-mattingdefringe (0-100), outputFormat (png/webp)
background-replaceSubstituir Fundorembg (BiRefNet)backgroundType (color/gradient), color (hex), gradientColor1, gradientColor2, gradientAngle, feather (0-20), format (png/webp)
blur-backgroundDesfocar Fundorembg (BiRefNet)intensity (1-100), feather (0-20), format (png/webp)
ai-canvas-expandExpansão de Tela por IALaMa (outpainting)extendTop, extendRight, extendBottom, extendLeft (px), tier (fast/balanced/high), format, quality

Marca-d'água e Sobreposição

ID da ferramentaNomePrincipais configurações
watermark-textMarca-d'água de Textotext, font, fontSize, color, opacity, position, rotation, tile
watermark-imageMarca-d'água de Imagemopacity, position, scale - o segundo arquivo é a marca-d'água
text-overlaySobreposição de Textotext, font, fontSize, color, x, y, background, padding, borderRadius
composeComposição de Imagemx, y, opacity, blend - o segundo arquivo é sobreposto por cima
meme-generatorGerador 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. Suporta o modo de template (corpo JSON com templateId) ou o modo de imagem personalizada (multipart com arquivo).

Utilitários

ID da ferramentaNomePrincipais configurações
infoInformações da Imagem- (retorna largura, altura, formato, tamanho, canais, hasAlpha, DPI, EXIF)
compareComparar Imagensmode (side-by-side/overlay/diff), diffThreshold - o segundo arquivo é o alvo da comparação
find-duplicatesEncontrar Duplicatasthreshold (distância de hash perceptual, padrão 8) - múltiplos arquivos
color-palettePaleta de Corescount (contagem de cores dominantes), format (hex/rgb)
qr-generateGerador de QR Codedata, size, margin, colorDark, colorLight, errorCorrectionLevel, dotStyle, cornerStyle, logo (arquivo opcional)
barcode-readLeitor de Código de Barras- (detecta automaticamente QR, EAN, Code128, DataMatrix, etc.)
image-to-base64Imagem para Base64format (data-uri/plain), mimeType
html-to-imageHTML para Imagemurl, format (png/jpg/webp), quality, fullPage, devicePreset (desktop/tablet/mobile/custom), viewportWidth, viewportHeight
histogramHistogramascale (linear/log) - retorna o gráfico de histograma RGB + estatísticas por canal
lqip-placeholderPlaceholder LQIPwidth (4-64), blur, strategy (blur/pixelate/solid), format (webp/png/jpeg), quality
barcode-generateGerador de Código de Barrastext, type (code128/ean13/upca/code39/itf14/datamatrix), scale (1-8), includeText (bool). Corpo JSON, sem upload de arquivo.

Layout e Composição

ID da ferramentaNomePrincipais configurações
collageColagem / Gradetemplate (25+ layouts), gap, backgroundColor, borderRadius - múltiplos arquivos
stitchCosturar / Combinardirection (horizontal/vertical/grid), gap, backgroundColor, alignment - múltiplos arquivos
splitDividir Imagemmode (grid/rows/cols), rows, cols, tileWidth, tileHeight
borderBorda e Moldurawidth, color, style (solid/gradient/pattern), borderRadius, padding, shadow
beautifyEmbelezar Captura de TelabackgroundType (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-padPreencher Imagemtarget (16:9/9:16/1:1/4:3/3:4/custom), ratioW, ratioH, background (color/transparent/blur), color (hex), padding (0-50%)
sprite-sheetSprite Sheetcolumns (1-16), padding, background (hex), format (png/webp/jpeg), quality - múltiplos arquivos (2-64 imagens)

Formato e Conversão

ID da ferramentaNomePrincipais configurações
svg-to-rasterSVG para Rasterformat (png/jpeg/webp/avif/tiff/gif/heif), width, height, scale, dpi, background
vectorizeImagem para SVGcolorMode (bw/color), threshold, colorPrecision, filterSpeckle, pathMode (none/polygon/spline)
gif-toolsFerramentas de GIFaction (resize/optimize/reverse/speed/extract-frames/rotate/add-text), parâmetros específicos da ação
gif-webpConversor GIF/WebPquality (1-100), lossless (bool), resizePercent (10-100)

Ferramentas de Vídeo

ID da ferramentaNomePrincipais configurações
convert-videoConverter Vídeoformat (mp4/mov/webm/avi/mkv), quality (high/balanced/small)
compress-videoComprimir Vídeoquality (light/balanced/strong), resolution (original/1080p/720p/480p)
trim-videoCortar VídeostartS, endS, precise (bool, corte com precisão de quadro)
mute-videoSilenciar Vídeo-
video-to-gifVídeo para GIFfps (1-30), width, startS, durationS (máx. 60s)
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-fpsAlterar FPSfps (1-120)
video-colorCor de Vídeobrightness, contrast, saturation, gamma
video-speedVelocidade de Vídeofactor (0.25-4), keepPitch (bool)
reverse-videoInverter Vídeo- (máx. 5 minutos)
video-loudnormNormalizar Áudio- (EBU R128)
aspect-padPreenchimento por Proporçãotarget (16:9/9:16/1:1/4:3/3:4), color (hex)
blur-padPreenchimento com Desfoquetarget (16:9/9:16/1:1/4:3/3:4), blur (2-50)
watermark-videoMarca-d'água em Vídeotext, position, fontSize, opacity, color
stabilize-videoEstabilizar Vídeosmoothing (5-60, em quadros)
gif-to-videoGIF para Vídeoformat (mp4/webm/mov)
video-to-webpVídeo para WebPfps, width, quality, loop (bool)
video-to-framesVídeo para Quadrosmode (all/nth/timestamps), n, timestamps, format (png/jpg)
merge-videosMesclar Vídeos- (múltiplos arquivos, normalizados para a resolução do primeiro vídeo)
replace-audioSubstituir Áudio- (vídeo + arquivo de áudio, dois arquivos)
burn-subtitlesGravar LegendasfontSize (8-72) - vídeo + arquivo de legenda
embed-subtitlesIncorporar Legendaslanguage (código ISO 639-2/B) - vídeo + arquivo de legenda
extract-subtitlesExtrair Legendas- (gera SRT)
images-to-videoImagens para VídeosecondsPerImage (0.5-10), resolution (1080p/720p/square), fps - múltiplos arquivos
video-metadataLimpar Metadados de Vídeo-
auto-subtitlesLegendas Automáticas (IA)language (auto/en/de/fr/es/zh/ja/ko/id/th/vi), format (srt/vtt)
extract-audioExtrair Áudioformat (mp3/wav/m4a/ogg)

Ferramentas de Áudio

ID da ferramentaNomePrincipais configurações
convert-audioConverter Áudioformat (mp3/wav/ogg/flac/m4a), bitrateKbps (32-320)
trim-audioCortar ÁudiostartS, endS
volume-adjustAjustar VolumegainDb (-30 a 30)
normalize-audioNormalizar Áudio- (EBU R128, -16 LUFS)
fade-audioFade de ÁudiofadeInS (0-30), fadeOutS (0-30)
reverse-audioInverter Áudio-
audio-speedVelocidade de Áudiofactor (0.25-4)
pitch-shiftAlterar Tomsemitones (-12 a 12)
audio-channelsCanais de Áudiomode (stereo-to-mono/mono-to-stereo/swap)
silence-removalRemoção de SilênciothresholdDb (-80 a -20), minSilenceS (0.1-5)
noise-reductionRedução de Ruídostrength (light/medium/strong)
merge-audioMesclar Áudioformat (mp3/wav/flac/m4a) - múltiplos arquivos
split-audioDividir Áudiomode (time/parts/silence), segmentS, parts, thresholdDb, minSilenceS
ringtone-makerCriador de ToquestartS, durationS (1-30)
waveform-imageImagem de Forma de Ondawidth, height, color (hex)
audio-metadataMetadados de Áudiostrip (bool), title, artist, album
transcribe-audioTranscrever Áudio (IA)language (auto/en/de/fr/es/zh/ja/ko/id/th/vi), outputFormat (txt/srt/vtt)

Ferramentas de Documentos

ID da ferramentaNomePrincipais configurações
merge-pdfMesclar PDFs- (múltiplos arquivos, até 20 PDFs)
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 (intervalo de páginas)
extract-pagesExtrair Páginasrange (sintaxe qpdf, ex. "1-5,8,10-z")
remove-pagesRemover Páginaspages (intervalo qpdf a remover)
organize-pdfOrganizar PDForder (ordem de páginas qpdf, ex. "3,1,2,5-z")
protect-pdfProteger PDFuserPassword, ownerPassword (AES-256)
unlock-pdfDesbloquear PDFpassword
repair-pdfReparar PDF-
linearize-pdfOtimizar PDF para Web- (lineariza para visualização web rápida)
grayscale-pdfPDF em Tons de Cinza-
pdfa-convertConverter para PDF/A- (PDF/A-2 para arquivamento)
crop-pdfRecortar PDFmargin (0-2000 pontos)
nup-pdfPDF N-upperSheet (2/3/4/8/9/12/16)
booklet-pdfPDF em LivretoperSheet (2/4/6/8)
watermark-pdfMarca-d'água em PDFtext, position, fontSize, opacity, rotation
pdf-page-numbersNúmeros de Página de PDFposition (bl/bc/br/tl/tc/tr), fontSize
flatten-pdfAchatar PDF- (incorpora formulários e anotações)
redact-pdfEditar/Ocultar PDFterms (string[]), caseSensitive (bool)
sign-pdfAssinar PDFRota multipart personalizada com o PDF file, arquivos de assinatura sig0, sig1 e o array JSON placements
pdf-to-textPDF para Texto-
pdf-to-wordPDF para Word-
pdf-metadataMetadados de PDFtitle, author, subject, keywords
convert-documentConverter Documentoformat (docx/odt/rtf/txt)
convert-presentationConverter Apresentaçãoformat (pptx/odp)
convert-spreadsheetConverter Planilhaformat (xlsx/ods/csv)
excel-to-pdfExcel para PDF-
word-to-pdfWord para PDF-
powerpoint-to-pdfPowerPoint para PDF-
html-to-pdfHTML para PDF- (recursos remotos desabilitados)
markdown-to-docxMarkdown para Word-
markdown-to-htmlMarkdown para HTML-
markdown-to-pdfMarkdown para PDF- (recursos remotos desabilitados)
epub-convertConverter EPUBformat (pdf/docx/html/md)
to-epubConverter para EPUB- (aceita .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 para Imagempages (all/range), format, dpi, quality
pdf-to-jpgPDF para JPGpages, dpi, quality, colorMode
pdf-to-pngPDF para PNGpages, dpi, quality, colorMode
pdf-to-tiffPDF para TIFFpages, dpi, quality, colorMode

Ferramentas de Arquivo

ID da ferramentaNomePrincipais configurações
chart-makerCriador de Gráficoskind (bar/line/pie), title, width, height
csv-excelCSV para Excelsheet (número da planilha para entrada XLSX) - bidirecional
csv-jsonCSV para JSONpretty (bool) - bidirecional
json-xmlJSON para XMLpretty (bool) - bidirecional
split-csvDividir CSVrowsPerFile (1-1000000), keepHeader (bool)
merge-csvsMesclar CSVs- (múltiplos arquivos, colunas correspondentes)
yaml-jsonYAML / JSON- (bidirecional)
xml-to-csvXML para CSV- (encontra automaticamente elementos repetidos)
excel-to-csvExcel para CSVpreset de conversão dedicado, baseado em convert-spreadsheet
create-zipCriar ZIP- (múltiplos arquivos, 2-50 arquivos)
extract-zipExtrair ZIP- (protegido contra bomb)

HTML para Imagem

Captura uma página web como imagem. Diferente de outras ferramentas, este endpoint aceita application/json em vez de dados de formulário multipart (não é necessário upload de arquivo).

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

Content-Type: application/json

ParâmetroTipoPadrãoDescrição
urlstring(obrigatório)URL a capturar (apenas http/https)
formatstring"png"Formato de saída: jpg, png, webp
qualitynumber90Qualidade 1-100 (apenas JPG/WebP)
fullPagebooleanfalseCapturar a página inteira com rolagem
devicePresetstring"desktop"desktop, tablet, mobile, custom
viewportWidthnumber1280Largura personalizada da viewport 320-3840
viewportHeightnumber720Altura personalizada da viewport 320-2160

Exemplo:

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"}'

Resposta:

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

Sub-rotas de ferramentas

Algumas ferramentas expõem endpoints adicionais além da rota padrão POST /api/v1/tools/<section>/<toolId>:

MétodoCaminhoDescrição
GET/api/v1/tools/popularRetorna os IDs de ferramentas populares, recorrendo a uma lista padrão curada quando os dados de uso são escassos
POST/api/v1/tools/image/remove-background/effectsAplica efeitos de fundo (cor/gradiente/desfoque/sombra) sem reexecutar a IA. Usa a máscara em cache da remoção inicial.
POST/api/v1/tools/image/edit-metadata/inspectLê metadados EXIF/IPTC/XMP existentes de uma imagem
POST/api/v1/tools/image/strip-metadata/inspectInspeciona os campos de metadados antes da remoção
POST/api/v1/tools/image/passport-photo/analyzeFase 1: detecção de rosto por IA + remoção de fundo. Retorna pontos de referência do rosto e dados em cache.
POST/api/v1/tools/image/passport-photo/generateFase 2: recorte, redimensionamento e ladrilhamento usando a análise em cache. Sem reexecução da IA.
POST/api/v1/tools/image/gif-tools/infoObtém os metadados do GIF (contagem de quadros, dimensões, duração)
POST/api/v1/tools/pdf/pdf-to-image/infoObtém os metadados do PDF (contagem de páginas, dimensões)
POST/api/v1/tools/pdf/pdf-to-image/previewGera uma prévia de uma página específica do PDF
POST/api/v1/tools/pdf/pdf-to-jpg/infoObtém os metadados do PDF para o preset JPG dedicado
POST/api/v1/tools/pdf/pdf-to-jpg/previewGera uma prévia de página do PDF para o preset JPG
POST/api/v1/tools/pdf/pdf-to-png/infoObtém os metadados do PDF para o preset PNG dedicado
POST/api/v1/tools/pdf/pdf-to-png/previewGera uma prévia de página do PDF para o preset PNG
POST/api/v1/tools/pdf/pdf-to-tiff/infoObtém os metadados do PDF para o preset TIFF dedicado
POST/api/v1/tools/pdf/pdf-to-tiff/previewGera uma prévia de página do PDF para o preset TIFF
POST/api/v1/tools/image/svg-to-raster/batchConverte múltiplos SVGs em raster em lote
POST/api/v1/tools/image/image-enhancement/analyzeAnalisa a qualidade da imagem e retorna recomendações de aprimoramento
POST/api/v1/tools/image/optimize-for-web/previewPrévia leve para ajuste de parâmetros ao vivo. Retorna a imagem otimizada com cabeçalhos de tamanho.

Processamento em Lote

Aplica uma ferramenta genérica habilitada para lote a vários arquivos de uma vez. Retorna um arquivo ZIP. Rotas personalizadas de múltiplos arquivos ou de múltiplas etapas, como assinatura de PDF, OCR de PDF e as rotas de preset de PDF para imagem, usam seu próprio contrato de endpoint em vez da rota 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}'

A concorrência é controlada por CONCURRENT_JOBS (padrão: detectado automaticamente a partir dos núcleos de CPU). MAX_BATCH_SIZE limita o número de arquivos por lote (padrão: 100; defina 0 para ilimitado).

Pipelines

Executar um 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}}]}'

A saída de cada etapa é a entrada da etapa seguinte. Os pipelines permitem 20 etapas por padrão, configurável via MAX_PIPELINE_STEPS. Defina MAX_PIPELINE_STEPS=0 para remover o limite.

Salvar e gerenciar pipelines

MétodoCaminhoDescrição
POST/api/v1/pipeline/saveSalva um pipeline nomeado (name, description, steps[])
GET/api/v1/pipeline/listLista os pipelines salvos (admins veem todos; usuários veem os próprios)
DELETE/api/v1/pipeline/:idExclui (proprietário ou admin)
GET/api/v1/pipeline/toolsLista os IDs de ferramentas válidos para etapas de pipeline

Acompanhamento de Progresso

Trabalhos de longa duração, ferramentas enfileiradas, trabalhos em lote e pipelines emitem progresso em tempo real via Server-Sent Events. O fluxo de progresso é público e indexado pelo ID do trabalho, então os clientes não precisam enviar um cabeçalho Authorization para lê-lo.

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 do 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":[]}

Você pode solicitar o cancelamento de um trabalho enfileirado ou em execução com POST /api/v1/jobs/:jobId/cancel. A resposta é {"canceled":true|false}.

Biblioteca de Arquivos

Armazenamento persistente de arquivos com histórico de versões.

MétodoCaminhoDescrição
POST/api/v1/uploadEnvia arquivos para o workspace (processamento temporário)
POST/api/v1/files/uploadEnvia arquivos para a biblioteca de arquivos persistente
POST/api/v1/files/save-resultSalva o resultado do processamento de uma ferramenta como uma nova versão de arquivo
GET/api/v1/filesLista os arquivos salvos (paginado, com busca)
GET/api/v1/files/:idObtém os metadados do arquivo + a cadeia de versões
GET/api/v1/files/:id/downloadBaixa o arquivo
GET/api/v1/files/:id/thumbnailObtém a miniatura JPEG de 300px
DELETE/api/v1/filesExclui arquivos em massa e suas cadeias de versões (corpo: { ids: [...] })
POST/api/v1/fetch-urlsBusca URLs remotas para o workspace para importações baseadas em URL
POST/api/v1/previewGera uma prévia WebP compatível com navegador (para formatos HEIC/HEIF/RAW)
GET/api/v1/files/:id/previewTransmite uma prévia em cache ou gerada, compatível com navegador, para um PDF, documento office, vídeo ou arquivo de áudio salvo
POST/api/v1/preview/generateGera uma prévia MP4 ou MP3 sob demanda para um arquivo de mídia enviado, sem salvá-lo antes
GET/api/v1/download/:jobId/:filenameBaixa um arquivo processado de um workspace

Para salvar automaticamente o resultado de uma ferramenta na biblioteca, inclua fileId como um campo de formulário multipart referenciando um arquivo existente da biblioteca. O resultado processado será salvo como uma nova versão.

Gerenciamento de Chaves de API

MétodoCaminhoAcessoDescrição
POST/api/v1/api-keysAutenticadoGera uma nova chave - exibida uma única vez
GET/api/v1/api-keysAutenticadoLista as chaves (name, id, lastUsedAt - não a chave bruta)
DELETE/api/v1/api-keys/:idAutenticadoExclui a chave

Times

MétodoCaminhoAcessoDescrição
GET/api/v1/teamsAdmin (teams:manage)Lista os times
POST/api/v1/teamsAdmin (teams:manage)Cria um time
PUT/api/v1/teams/:idAdmin (teams:manage)Renomeia um time
DELETE/api/v1/teams/:idAdmin (teams:manage)Exclui um time (não é possível excluir o time padrão ou times com membros)

Configurações

Configuração de tempo de execução em pares chave-valor (leitura por qualquer usuário autenticado, gravação apenas por admin).

MétodoCaminhoDescrição
GET/api/v1/settingsObtém todas as configurações
PUT/api/v1/settingsAtualiza configurações em massa (corpo JSON com pares chave-valor)
GET/api/v1/settings/:keyObtém uma configuração específica pela chave

Chaves conhecidas: disabledTools (array JSON de IDs de ferramentas), enableExperimentalTools (string bool), loginAttemptLimit (número).

Preferências

As preferências por usuário são separadas das configurações da instância. Qualquer usuário autenticado pode ler e atualizar seu próprio mapa de preferências.

MétodoCaminhoDescrição
GET/api/v1/preferencesObtém as preferências do usuário atual como { "preferences": { ... } }
PUT/api/v1/preferencesInsere ou atualiza uma ou mais chaves de preferência para o usuário atual

Papéis

Gerenciamento de papéis personalizados com permissões granulares.

MétodoCaminhoAcessoDescrição
GET/api/v1/rolesAdmin (audit:read)Lista todos os papéis com a contagem de usuários
POST/api/v1/rolesAdmin (security:manage)Cria um papel personalizado (name, description, permissions)
PUT/api/v1/roles/:idAdmin (security:manage)Atualiza um papel personalizado (não é possível modificar papéis integrados)
DELETE/api/v1/roles/:idAdmin (security:manage)Exclui um papel personalizado (não é possível excluir papéis integrados; os usuários afetados voltam ao papel user)

Permissões disponíveis (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.

Log de Auditoria

Endpoint exclusivo de admin para revisar ações relevantes à segurança.

MétodoCaminhoAcessoDescrição
GET/api/v1/audit-logAdmin (audit:read)Log de auditoria paginado com filtros opcionais

Parâmetros de consulta:

ParâmetroDescrição
pageNúmero da página (padrão: 1)
limitEntradas por página (padrão: 50, máx.: 100)
actionFiltrar por tipo de ação (ex. ROLE_CREATED, ROLE_DELETED)
ipFiltrar por endereço IP de origem
fromFiltrar entradas após esta data ISO 8601
toFiltrar entradas antes desta data ISO 8601

Analytics

MétodoCaminhoAcessoDescrição
GET/api/v1/config/analyticsPúblicoObtém a configuração efetiva de analytics (chave do PostHog, DSN do Sentry, taxa de amostragem). As chaves, o DSN e o ID da instância ficam em branco quando o analytics está desligado, seja pelo bake de tempo de compilação ou pela configuração analyticsEnabled da instância.
POST/api/v1/feedbackAutenticadoEnvia feedback explícito do usuário para o projeto PostHog configurado como feedback_submitted. A rota respeita o gate de analytics, limita a taxa de envios, remove os campos de contato a menos que contactOk seja true e nunca aceita conteúdo de arquivos, nomes de arquivos, caminhos de upload ou texto bruto de erro privado. Quando o analytics está desabilitado, retorna { "ok": true, "accepted": false }.
PUT/api/v1/settingsAdmin (settings:write)Define o opt-out em toda a instância. Envie um corpo JSON { "analyticsEnabled": "false" } para desligar o analytics para todos, ou "true" para religá-lo.

Recursos / Pacotes de IA

Gerencia os pacotes de recursos de IA (instala/desinstala pacotes de modelos de IA no ambiente Docker). Prefira o endpoint de instalação em nível de ferramenta ao habilitar uma ferramenta a partir de automação personalizada: algumas ferramentas de IA precisam de mais de um pacote compartilhado, e este endpoint pula os pacotes já instalados enquanto enfileira apenas os que faltam.

MétodoCaminhoAcessoDescrição
GET/api/v1/featuresAutenticadoLista todos os pacotes de recursos e seu status de instalação
POST/api/v1/admin/features/:bundleId/installAdmin (features:manage)Instala um pacote de recursos (assíncrono, retorna jobId para acompanhamento de progresso)
POST/api/v1/admin/tools/:toolId/features/installAdmin (features:manage)Instala todos os pacotes que uma ferramenta requer; retorna o status enfileirado/pulado por pacote
POST/api/v1/admin/features/:bundleId/uninstallAdmin (features:manage)Desinstala um pacote de recursos e limpa os arquivos de modelo
GET/api/v1/admin/features/disk-usageAdmin (features:manage)Obtém o uso total de disco dos modelos de IA
POST/api/v1/admin/features/importAdmin (features:manage)Importa um arquivo de pacote de IA offline

Operações Administrativas

Endpoints operacionais para observabilidade, suporte, relatório de uso e status de backup.

MétodoCaminhoAcessoDescrição
GET/api/v1/admin/log-levelAdmin (settings:write)Lê o nível de log de tempo de execução atual
POST/api/v1/admin/log-levelAdmin (settings:write)Altera o nível de log de tempo de execução (fatal, error, warn, info, debug, trace ou silent)
GET/api/v1/metricsAdmin (system:health)Métricas do Prometheus em formato texto
GET/api/v1/admin/support-bundleAdmin (system:health)Baixa um ZIP de pacote de suporte de diagnóstico com dados redigidos
GET/api/v1/admin/usageAdmin (audit:read)Dados do painel de uso, com o parâmetro de consulta opcional days
GET/api/v1/admin/backup-statusAdmin (system:health)Lê os metadados do último backup e o status de atualidade
POST/api/v1/admin/backup-statusAdmin (system:health)Registra um backup concluído (type, sizeBytes opcional, notes opcional)

APIs Enterprise

Essas rotas são restritas por licença de acordo com o recurso enterprise relacionado. Elas ainda exigem a permissão SnapOtter listada.

MétodoCaminhoAcessoDescrição
GET/api/v1/enterprise/audit/exportAdmin (audit:read)Exporta entradas de auditoria como JSON ou CSV com filtros
GET/api/v1/enterprise/config/exportAdmin (system:health)Exporta a configuração da instância redigida, os papéis personalizados e os times
POST/api/v1/enterprise/config/importAdmin (system:health)Importa a configuração, com dry run opcional
GET/api/v1/enterprise/ip-allowlistAdmin (security:manage)Lê a lista de permissões CIDR configurada
PUT/api/v1/enterprise/ip-allowlistAdmin (security:manage)Atualiza a lista de permissões CIDR com prevenção de autobloqueio
GET/api/v1/enterprise/legal-holdAdmin (compliance:manage)Lista as retenções legais de usuários e times
PUT/api/v1/enterprise/legal-holdAdmin (compliance:manage)Aplica ou libera uma retenção legal em um usuário ou time
POST/api/v1/enterprise/scim/tokenAdmin (users:manage)Gera um token bearer SCIM, retornado uma única vez
DELETE/api/v1/enterprise/scim/tokenAdmin (users:manage)Revoga o token bearer SCIM atual
GET/api/v1/enterprise/siem/configAdmin (webhooks:manage)Lê a configuração de encaminhamento SIEM
PUT/api/v1/enterprise/siem/configAdmin (webhooks:manage)Atualiza a configuração de encaminhamento SIEM
GET/api/v1/enterprise/webhooksAdmin (webhooks:manage)Lista os destinos de webhook
POST/api/v1/enterprise/webhooksAdmin (webhooks:manage)Cria um destino de webhook
PUT/api/v1/enterprise/webhooks/:indexAdmin (webhooks:manage)Atualiza um destino de webhook
DELETE/api/v1/enterprise/webhooks/:indexAdmin (webhooks:manage)Exclui um destino de webhook
POST/api/v1/enterprise/webhooks/:index/testAdmin (webhooks:manage)Envia um payload de webhook de teste
POST/api/v1/enterprise/users/:id/exportAdmin (compliance:manage)Inicia um trabalho de exportação de usuário GDPR
GET/api/v1/enterprise/users/:id/export/:jobIdAdmin (compliance:manage)Lê o status da exportação GDPR e a URL de download
DELETE/api/v1/enterprise/users/:id/purgeAdmin (compliance:manage)Purga permanentemente os dados de um usuário após confirmação
DELETE/api/v1/enterprise/teams/:id/purgeAdmin (compliance:manage)Purga permanentemente os dados de um time após confirmação
GET/api/v1/admin/versionAdmin (system:health)Lê os metadados de versão do app, do build, do Node e do schema
GET/api/v1/admin/migrations/pendingAdmin (system:health)Compara as migrações empacotadas com as migrações aplicadas
GET/api/v1/admin/upgrade-checkAdmin (system:health)Executa verificações de prontidão para upgrade

SCIM 2.0

Os endpoints de descoberta SCIM são públicos. Os endpoints de usuários e grupos exigem o token bearer SCIM gerado acima.

MétodoCaminhoAcessoDescrição
GET/api/v1/scim/v2/ServiceProviderConfigPúblicoCapacidades do servidor SCIM
GET/api/v1/scim/v2/SchemasPúblicoDescoberta de schema SCIM
GET/api/v1/scim/v2/ResourceTypesPúblicoDescoberta de tipos de recurso SCIM
GET/api/v1/scim/v2/UsersToken SCIMLista os usuários, com filtro SCIM opcional
POST/api/v1/scim/v2/UsersToken SCIMCria um usuário
GET/api/v1/scim/v2/Users/:idToken SCIMObtém um usuário
PUT/api/v1/scim/v2/Users/:idToken SCIMSubstitui um usuário
DELETE/api/v1/scim/v2/Users/:idToken SCIMDesativa um usuário (soft delete)
GET/api/v1/scim/v2/GroupsToken SCIMLista os times como grupos SCIM
POST/api/v1/scim/v2/GroupsToken SCIMCria um time
GET/api/v1/scim/v2/Groups/:idToken SCIMObtém um time
PUT/api/v1/scim/v2/Groups/:idToken SCIMSubstitui um time e a associação de grupo
DELETE/api/v1/scim/v2/Groups/:idToken SCIMExclui um time

Templates de Meme

API de suporte para a ferramenta geradora de memes.

MétodoCaminhoAcessoDescrição
GET/api/v1/meme-templatesAutenticadoLista todos os templates de meme disponíveis com as posições das caixas de texto
GET/api/v1/meme-templates/full/:filenameAutenticadoServe a imagem do template em tamanho completo
GET/api/v1/meme-templates/thumbs/:filenameAutenticadoServe a miniatura do template
GET/api/v1/meme-templates/fonts/:filenameAutenticadoServe o arquivo de fonte usado para renderizar o texto do meme

Respostas de Erro

Todos os erros retornam JSON:

json
{
  "error": "Human-readable message",
  "code": "MACHINE_READABLE_CODE"
}
StatusSignificado
400Requisição inválida / validação falhou
401Não autenticado
403Permissões insuficientes
404Recurso não encontrado
413Arquivo grande demais (consulte MAX_UPLOAD_SIZE_MB)
422O processamento falhou após a validação
429Limite de taxa atingido (consulte RATE_LIMIT_PER_MIN)
501O pacote de recursos de IA necessário não está instalado (FEATURE_NOT_INSTALLED)
500Erro interno do servidor