Skip to content
BoringKit

Files

File intents belong only to accepted worker jobs.

In-browser tools do not upload. Worker jobs use private object keys, short-lived upload and download intents, output expiry, and explicit input validation.

Upload intent shape

Example
{
  "method": "PUT",
  "url": "https://object-storage/upload/...",
  "objectKey": "private/temporary/jobs/job_123/input.pdf",
  "expiresAt": "2026-05-02T12:15:00Z",
  "headers": {
    "Content-Type": "application/pdf"
  }
}

Validation

File tools validate MIME type, extension, byte size, unsafe filenames, empty files, and unsupported formats before work is accepted. Expired outputs return a gone error instead of a stale download.

Document conversion engines

word-to-pdf

DOCX or ODT to PDF through LibreOffice.

slides-to-pdf

PPTX or ODP to PDF through LibreOffice.

spreadsheet-to-pdf

XLSX, ODS, or CSV to PDF through LibreOffice.

html-markdown-to-pdf

HTML, Markdown, or text to PDF through the document worker.

pdf-to-images-zip

PDF pages to PNG files packaged as ZIP through Poppler.

pdf-to-text

Machine-readable PDF text extraction through Poppler.

pdf-to-markdown

PDF text extraction wrapped as Markdown with quality metadata.

pdf-to-docx

Text-only DOCX generation from extracted PDF text through Pandoc.

Do not upload early

A client should upload a file only after an accepted job response includes an upload intent. Do not infer an upload URL from a tool slug, pricing tier, or catalog entry. In-browser utilities process local inputs in the web UI, and unavailable tools reject job creation before file upload.

Current boundary

Treat file intents as available only for catalog entries that explicitly accept API jobs. Document conversion, Image Compress API, Trim Video, Compress Video, Video to GIF, and Mute Video use file upload intents. HTML to PDF can accept direct text input or a file upload depending on the request shape.