106 live endpoints behind one shape: POST /v1/tools/{slug}. Merge, split, compress, watermark and number PDFs. Convert, resize, compress and strip EXIF from images. Fire and forget with async jobs and HMAC-signed webhooks, from $29 a month. Billed per call, not per conversion minute, and refunded when an upstream call fails.
GET /v1/tools returns this same reference as JSON, availability included, so you never pay for a 501.| Cheapest plan with async jobs + webhooks | Price | Billing unit |
|---|---|---|
| FileOven Business | $29 / mo | Credits per call, fixed and published |
| Zamzar Growth | $99 / mo | Credits per file |
| CloudConvert | from ~$9 / mo | Conversion minutes, so cost varies with file size |
FileOven covers PDF operations, image processing and data utilities. It is not a 200-format transcoder. If you need obscure legacy or CAD formats, CloudConvert is the right tool and we will say so.
# Merge two PDFs (3 credits)
curl -X POST https://fileoven.com/api/v1/tools/pdf-merge \
-H "Authorization: Bearer sk_live_..." \
-F "file=@invoice.pdf" -F "file=@terms.pdf" \
-o merged.pdf
# List every tool and its live availability
curl https://fileoven.com/api/v1/tools
# Inspect one endpoint, parameters included
curl https://fileoven.com/api/v1/tools/pdf-merge
# JSON tool (color converter, free, no key)
curl -X POST https://fileoven.com/api/v1/tools/color-converter \
-H "Content-Type: application/json" \
-d '{"hex":"#3b82f6"}'Paid endpoints take a bearer key generated in your dashboard. Send it on every request; there is no session, cookie or signing step. Free endpoints ignore the header entirely, so you can try them before signing up.
https://fileoven.com/api/v1Retry-After on a 429.x-credits-used.Authorization: Bearer sk_live_... # Verify the key without spending a credit curl https://fileoven.com/api/v1/tools \ -H "Authorization: Bearer sk_live_..."
Queue any available JSON-input tool and get an HTTP 202 back immediately. When the job finishes we POST the result to your URL with x-fileoven-signature: sha256=..., an HMAC-SHA256 of the raw request body keyed with the secret you supplied. Verify it before trusting the payload.
# Queue a job (returns HTTP 202 with a job id)
curl -X POST https://fileoven.com/api/v1/jobs \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{"tool_slug":"color-converter","input":{"hex":"#3b82f6"},"webhook":{"url":"https://client.example/hooks/fileoven","secret":"replace-with-16-plus-characters"}}'
# Poll it instead, if you would rather not run a listener
curl https://fileoven.com/api/v1/jobs/JOB_ID \
-H "Authorization: Bearer sk_live_..."Search, filter, expand. Every entry is generated from the live catalog, so the parameters and examples here are the ones the server actually accepts.
146 endpoints
Click any endpoint to expand it
/v1/tools/pdf-to-mdPDF to Markdown3 creditsExtract text as Markdown, with detected tables as GFM pipe tables.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
| pages | string | all | Page range, e.g. "1,3,5-7". Omit for every page. |
curl -X POST https://fileoven.com/api/v1/tools/pdf-to-md \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.pdf"
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/pdf-to-imagePDF to Image3 creditsRender one PDF page to PNG at a chosen scale.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
| page | number | 1 | 1-indexed page to render. |
| scale | number | 2 | Render scale, up to 4. 2 is roughly 144 dpi. |
| password | string | - | Required only if the PDF is encrypted. |
curl -X POST https://fileoven.com/api/v1/tools/pdf-to-image \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.pdf"
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/image-to-pdfImages to PDF3 creditsCombine images into a PDF.
| Name | Type | Default | Description |
|---|---|---|---|
| filesrequired | file[] | - | One or more images, 15 MB each. |
curl -X POST https://fileoven.com/api/v1/tools/image-to-pdf \ -H "Authorization: Bearer sk_live_..." \ -F "files=@input.pdf" -F "files=@second-input.pdf" \ -o images.pdf
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/scan-to-pdfScan to PDF501 browser-onlyfreeNot available server-side: Captures pages from the device camera, which has no server equivalent. Use /tools/scan-to-pdf.
curl -X POST https://fileoven.com/api/v1/tools/scan-to-pdf
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/pdf-mergePDF Merger3 creditsMerge multiple PDFs into one.
| Name | Type | Default | Description |
|---|---|---|---|
| filesrequired | file[] | - | Two or more PDFs, in order. |
curl -X POST https://fileoven.com/api/v1/tools/pdf-merge \ -H "Authorization: Bearer sk_live_..." \ -F "files=@input.pdf" -F "files=@second-input.pdf" \ -o merged.pdf
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/pdf-splitPDF Splitter3 creditsSplit a PDF into one file per page (zip).
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
curl -X POST https://fileoven.com/api/v1/tools/pdf-split \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.pdf" \ -o pages.zip
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/extract-pdf-pagesExtract PDF Pages3 creditsExtract selected pages into one PDF or a ZIP.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
| pagesrequired | string | all | Page range, e.g. "1,3,5-7". Omit for every page. |
| mode | string | single | single for one PDF, zip for one file per page. |
curl -X POST https://fileoven.com/api/v1/tools/extract-pdf-pages \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.pdf" \ -F "pages=1-3" \ -o extracted.pdf
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/pdf-compressPDF Compressor2 creditsRebuild PDF with object streams; strip metadata.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
curl -X POST https://fileoven.com/api/v1/tools/pdf-compress \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.pdf" \ -o compressed.pdf
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/word-to-pdfWord to PDF4 creditsRender a .docx to a paginated PDF via its extracted text.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
curl -X POST https://fileoven.com/api/v1/tools/word-to-pdf \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.docx" \ -o document.pdf
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/word-textWord ↔ Plain Text2 creditsExtract plain text from a .docx.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
curl -X POST https://fileoven.com/api/v1/tools/word-text \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.docx"
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/word-htmlWord ↔ HTML2 creditsConvert a .docx to semantic HTML, keeping headings, lists and tables.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
curl -X POST https://fileoven.com/api/v1/tools/word-html \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.docx"
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/pdf-to-wordPDF to Word4 creditsExtract text and tables to DOCX as real paragraphs and Word tables.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
| pages | string | all | Page range, e.g. "1,3,5-7". Omit for every page. |
curl -X POST https://fileoven.com/api/v1/tools/pdf-to-word \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.pdf" \ -o extracted.docx
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/ocr-pdfOCR PDF Pro5 creditsOCR a scanned PDF to text with tesseract, up to 10 pages per call.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
| pages | string | all | Page range, e.g. "1,3,5-7". Omit for every page. |
| language | string | eng | Tesseract language codes, e.g. "eng" or "eng+deu". |
| password | string | - | Required only if the PDF is encrypted. |
curl -X POST https://fileoven.com/api/v1/tools/ocr-pdf \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.pdf"
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/pdf-rotatePDF Rotate & Reorder2 creditsRotate selected pages by a multiple of 90 degrees.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
| angle | number | 90 | A multiple of 90. |
| pages | string | all | Page range, e.g. "1,3,5-7". Omit for every page. |
curl -X POST https://fileoven.com/api/v1/tools/pdf-rotate \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.pdf" \ -o rotated.pdf
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/crop-pdfCrop PDF2 creditsTrim page margins by insetting the MediaBox, in points.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
| top | number | 0 | Inset from the top, in points. |
| right | number | 0 | Inset from the right. |
| bottom | number | 0 | Inset from the bottom. |
| left | number | 0 | Inset from the left. |
| pages | string | all | Page range, e.g. "1,3,5-7". Omit for every page. |
curl -X POST https://fileoven.com/api/v1/tools/crop-pdf \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.pdf" \ -o cropped.pdf
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/compare-pdfCompare PDF3 creditsLine-level text comparison of two PDFs (file_a, file_b).
| Name | Type | Default | Description |
|---|---|---|---|
| file_arequired | file | - | The baseline PDF. Lines present here but not in file_b are reported as removed. |
| file_brequired | file | - | The revised PDF. Lines only in this file are reported as added. |
curl -X POST https://fileoven.com/api/v1/tools/compare-pdf \ -H "Authorization: Bearer sk_live_..." \ -F "file_a=@input.pdf" \ -F "file_b=@input.pdf"
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/redact-pdfRedact PDF4 creditsRedact regions by rasterizing each page and painting boxes over them, which removes the underlying text rather than hiding it.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
| regionsrequired | string | - | JSON array of regions in 0-1 page coordinates, measured from the top-left. |
| scale | number | 2 | Raster scale of the output pages, up to 4. |
| password | string | - | Required only if the PDF is encrypted. |
curl -X POST https://fileoven.com/api/v1/tools/redact-pdf \
-H "Authorization: Bearer sk_live_..." \
-F "file=@input.pdf" \
-F 'regions=[{"page":1,"x":0.1,"y":0.1,"width":0.3,"height":0.05}]'200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/repair-pdfRepair PDF3 creditsRebuild a damaged PDF, dropping unreadable objects.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
curl -X POST https://fileoven.com/api/v1/tools/repair-pdf \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.pdf" \ -o repaired.pdf
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/pdf-to-pdfaPDF to PDF/A4 creditsTag a PDF with PDF/A-2b metadata and an sRGB output intent. Content is not re-encoded.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
| title | string | - | Document title for the XMP metadata. |
curl -X POST https://fileoven.com/api/v1/tools/pdf-to-pdfa \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.pdf" \ -o pdfa.pdf
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/pdf-watermarkPDF Watermark3 creditsAdd a positioned text watermark to selected PDF pages.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
| textrequired | string | - | Watermark text. |
| position | string | center | Nine-point grid, e.g. top-left, center, bottom-right. |
| opacity | number | 0.3 | Watermark opacity, 0 (invisible) to 1 (solid). |
| font_size | number | 48 | Watermark text size, in points. |
| rotation | number | 45 | Rotation of the watermark text, in degrees. |
| color | string | #888888 | Watermark text colour, as hex. |
| font | string | helvetica | helvetica, times or courier. |
| pages | string | all | Page range, e.g. "1,3,5-7". Omit for every page. |
curl -X POST https://fileoven.com/api/v1/tools/pdf-watermark \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.pdf" \ -F "text=hello world" \ -o watermarked.pdf
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/pdf-page-numbersPDF Page Numbers2 creditsAdd page numbers to all or selected PDF pages.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
| start | number | 1 | The number to print on the first page. |
| position | string | bottom-center | top/bottom paired with left/center/right. |
| font_size | number | 10 | Page-number text size, in points. |
| pages | string | all | Page range, e.g. "1,3,5-7". Omit for every page. |
curl -X POST https://fileoven.com/api/v1/tools/pdf-page-numbers \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.pdf" \ -o numbered.pdf
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/bates-numberingBates Numbering3 creditsStamp sequential Bates numbers with a prefix, suffix and zero padding.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
| start | number | 1 | The number stamped on the first page. |
| prefix | string | - | Text printed before the Bates number. |
| suffix | string | - | Text printed after the Bates number. |
| padding | number | 6 | Zero padding width, 1-12. |
| size | number | 10 | Bates label text size, in points. |
curl -X POST https://fileoven.com/api/v1/tools/bates-numbering \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.png" \ -o bates.pdf
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/flatten-pdfFlatten PDF2 creditsFlatten interactive form fields into static page content.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
curl -X POST https://fileoven.com/api/v1/tools/flatten-pdf \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.pdf" \ -o flattened.pdf
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/pdf-formsPDF Forms3 creditsList a PDF's form fields, or fill them from a JSON map and optionally flatten.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
| fields | string | - | JSON object of fieldName to value. Omit to list the fields instead. |
| flatten | boolean | false | Flatten after filling so values cannot be edited. |
curl -X POST https://fileoven.com/api/v1/tools/pdf-forms \
-H "Authorization: Bearer sk_live_..." \
-F "file=@input.pdf" \
-F 'fields={"applicant.name":"Ada Lovelace"}' \
-o filled.pdf200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/edit-pdfEdit PDF501 browser-onlyfreeNot available server-side: Interactive page editing is a UI, not a single request. Use /tools/edit-pdf.
curl -X POST https://fileoven.com/api/v1/tools/edit-pdf
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/sign-pdfSign PDF3 creditsStamp a signature image onto a page at a given position and width.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
| signaturerequired | file | - | PNG or JPEG signature image. |
| page | number | last | 1-indexed target page. |
| x | number | - | Left offset in points. Defaults to the bottom right. |
| y | number | 48 | Bottom offset in points. |
| width | number | 150 | Signature width. Height follows the aspect ratio. |
| opacity | number | 1 | Signature opacity, 0 (invisible) to 1 (solid). |
curl -X POST https://fileoven.com/api/v1/tools/sign-pdf \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.pdf" \ -F "signature=@input.pdf" \ -o signed.pdf
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/excel-to-pdfExcel to PDF4 creditsRender a workbook to PDF, one sheet per section, as a monospaced grid.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
curl -X POST https://fileoven.com/api/v1/tools/excel-to-pdf \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.xlsx" \ -o spreadsheet.pdf
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/powerpoint-to-pdfPowerPoint to PDF501 browser-onlyfreeNot available server-side: Needs a rasterizer to draw PDF or Office pages to pixels, which means a canvas dependency we do not run server-side. The text layer is available at /v1/tools/pdf-extract. Use /tools/powerpoint-to-pdf.
curl -X POST https://fileoven.com/api/v1/tools/powerpoint-to-pdf
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/powerpoint-imagesPowerPoint and Images501 browser-onlyfreeNot available server-side: Needs a rasterizer to draw PDF or Office pages to pixels, which means a canvas dependency we do not run server-side. The text layer is available at /v1/tools/pdf-extract. Use /tools/powerpoint-images.
curl -X POST https://fileoven.com/api/v1/tools/powerpoint-images
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/pdf-to-powerpointPDF to PowerPoint501 browser-onlyfreeNot available server-side: Needs a rasterizer to draw PDF or Office pages to pixels, which means a canvas dependency we do not run server-side. The text layer is available at /v1/tools/pdf-extract. Use /tools/pdf-to-powerpoint.
curl -X POST https://fileoven.com/api/v1/tools/pdf-to-powerpoint
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/pdf-to-excelPDF to Excel4 creditsExtract detected tables to XLSX, one sheet per table.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
| pages | string | all | Page range, e.g. "1,3,5-7". Omit for every page. |
curl -X POST https://fileoven.com/api/v1/tools/pdf-to-excel \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.pdf" \ -o extracted.xlsx
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/pdf-password-removePDF Password Remover3 creditsRemove encryption from a PDF you have the password for. Requires the correct password; this is not a cracker.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
| passwordrequired | string | - | The password that opens the document. |
curl -X POST https://fileoven.com/api/v1/tools/pdf-password-remove \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.pdf" \ -F "password=your-password"
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/protect-pdfProtect PDF3 creditsEncrypt a PDF with AES-256 or RC4 and set permission flags.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
| passwordrequired | string | - | User password, at least 4 characters. |
| owner_password | string | - | Permissions password. Defaults to the user password. |
| algorithm | string | aes256 | aes256 or rc4. |
| allow_printing | boolean | false | Permissions default to denied. |
| allow_copying | boolean | false | Allow text copying. |
| allow_modifying | boolean | false | Allow edits. |
| allow_annotating | boolean | false | Allow annotations. |
| allow_filling_forms | boolean | false | Allow form filling. |
| allow_extraction | boolean | false | Allow accessibility extraction. |
| allow_assembly | boolean | false | Allow page assembly. |
| allow_high_quality_print | boolean | false | Allow high-resolution printing. |
curl -X POST https://fileoven.com/api/v1/tools/protect-pdf \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.pdf" \ -F "password=your-password" \ -o protected.pdf
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/html-to-pdfHTML to PDF501 browser-onlyfreeNot available server-side: Needs a rasterizer to draw PDF or Office pages to pixels, which means a canvas dependency we do not run server-side. The text layer is available at /v1/tools/pdf-extract. Use /tools/html-to-pdf.
curl -X POST https://fileoven.com/api/v1/tools/html-to-pdf
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/markdown-to-pdfMarkdown to PDF3 creditsRender Markdown to a paginated PDF with wrapped text.
| Name | Type | Default | Description |
|---|---|---|---|
| markdownrequired | string | - | Markdown source, as a field or a file. |
curl -X POST https://fileoven.com/api/v1/tools/markdown-to-pdf \ -H "Authorization: Bearer sk_live_..." \ -F "markdown=# Title" \ -o document.pdf
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/markdown-to-wordMarkdown to Word501 browser-onlyfreeNot available server-side: Needs a rasterizer to draw PDF or Office pages to pixels, which means a canvas dependency we do not run server-side. The text layer is available at /v1/tools/pdf-extract. Use /tools/markdown-to-word.
curl -X POST https://fileoven.com/api/v1/tools/markdown-to-word
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/epub-to-pdfEPUB to PDF4 creditsRender an EPUB to PDF, following the spine order.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
curl -X POST https://fileoven.com/api/v1/tools/epub-to-pdf \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.epub" \ -o book.pdf
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/pdf-to-epubPDF to EPUB4 creditsConvert a text-layer PDF to a reflowable EPUB, one chapter per page.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
curl -X POST https://fileoven.com/api/v1/tools/pdf-to-epub \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.pdf" \ -o book.epub
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/pdf-to-images-zipPDF to Images (ZIP)4 creditsRender a range of PDF pages to PNGs, returned as a ZIP.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
| pages | string | all | Page range, e.g. "1,3,5-7". Omit for every page. |
| scale | number | 2 | Render scale, up to 4. |
| password | string | - | Required only if the PDF is encrypted. |
curl -X POST https://fileoven.com/api/v1/tools/pdf-to-images-zip \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.pdf"
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/pdf-extractPDF to JSON5 creditsExtract text, reconstructed tables, and document metadata as structured JSON. Sets needs_ocr when the PDF is scanned images.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
| pages | string | all | Page range, e.g. "1,3,5-7". Omit for every page. |
| geometry | boolean | false | Include per-line y and per-cell x coordinates. |
curl -X POST https://fileoven.com/api/v1/tools/pdf-extract \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.pdf"
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/pdf-reorderPDF Reorder Pages3 creditsReorder or subset pages with an explicit 1-indexed page sequence.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
| orderrequired | string | - | 1-indexed sequence, e.g. "3,1,2". Doubles as page removal. |
curl -X POST https://fileoven.com/api/v1/tools/pdf-reorder \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.pdf" \ -F "order=3,1,2" \ -o reordered.pdf
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/pdf-to-textPDF to Text2 creditsExtract plain text, in reading order, for search indexing and RAG chunking.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
| pages | string | all | Page range, e.g. "1,3,5-7". Omit for every page. |
curl -X POST https://fileoven.com/api/v1/tools/pdf-to-text \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.pdf"
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/pdf-infoPDF Info1 creditRead document properties, page count, and page size without a full text pass.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
curl -X POST https://fileoven.com/api/v1/tools/pdf-info \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.pdf"
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/image-converterImage Format Converter2 creditsConvert JPG / PNG / WebP.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
| formatrequired | string | - | Output format: jpg, png or webp. |
| quality | number | 85 | Encoder quality, 1-100. Ignored for PNG. |
curl -X POST https://fileoven.com/api/v1/tools/image-converter \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.png" \ -F "format=webp" \ -o converted.png
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/image-resizeImage Resizer2 creditsResize an image.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
| width | number | - | Target width in px. Supply width, height, or both. |
| height | number | - | Target height in px. Aspect ratio is kept when only one is given. |
| format | string | png | Output format: jpg, png or webp. |
| quality | number | 90 | Encoder quality, 1-100. Ignored for PNG. |
curl -X POST https://fileoven.com/api/v1/tools/image-resize \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.png" \ -o resized.png
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/ecommerce-image-batchE-commerce Image Batch Processor3 creditsFit or fill a batch of product images onto one marketplace canvas size with padding and a background colour, returned as a ZIP.
| Name | Type | Default | Description |
|---|---|---|---|
| filesrequired | file[] | - | Up to 50 images, 40 MB total. |
| width | number | 2000 | Canvas width, 1-5000. |
| height | number | 2000 | Canvas height, 1-5000. |
| mode | string | contain | contain fits inside; cover fills and crops. |
| padding | number | 0.05 | Margin as a fraction of the canvas, 0 to 0.5. |
| background | string | #ffffff | Hex background colour. |
| format | string | jpeg | jpeg, png or webp. |
| quality | number | 88 | Encoder quality, 1-100. |
curl -X POST https://fileoven.com/api/v1/tools/ecommerce-image-batch \ -H "Authorization: Bearer sk_live_..." \ -F "files=@input.png" -F "files=@second-input.png" \ -o product-images.zip
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/image-compressImage Compressor2 creditsRe-encode with quality control.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
| quality | number | 80 | Encoder quality, 1-100. Ignored for PNG. |
| format | string | png | Output format: jpg, png or webp. |
curl -X POST https://fileoven.com/api/v1/tools/image-compress \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.png" \ -o compressed.jpg
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/heic-to-jpgHEIC to JPG2 creditsConvert an iPhone HEIC/HEIF photo to JPEG, PNG or WebP.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
| format | string | jpeg | Output format: jpeg, png or webp. |
| quality | number | 88 | Encoder quality, 1-100. Ignored for PNG. |
curl -X POST https://fileoven.com/api/v1/tools/heic-to-jpg \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.png"
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/svg-to-pngSVG to PNG2 creditsRasterize an SVG to PNG. External references are not fetched.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The SVG document to rasterize. |
| width | number | - | Render width in px, 1-8000. Defaults to the SVG's own size. |
curl -X POST https://fileoven.com/api/v1/tools/svg-to-png \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.png"
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/favicon-generatorFavicon Generator2 creditsBuild a multi-size favicon.ico.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
curl -X POST https://fileoven.com/api/v1/tools/favicon-generator \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.png" \ -o favicon.ico
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/exif-removeEXIF Data Remover1 creditStrip EXIF/GPS metadata.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
curl -X POST https://fileoven.com/api/v1/tools/exif-remove \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.png" \ -o clean.jpg
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/image-exifImage EXIF Viewer1 creditRead EXIF/IPTC/XMP metadata.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
curl -X POST https://fileoven.com/api/v1/tools/image-exif \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.png"
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/color-paletteColor Palette Extractor1 creditExtract dominant colors from an image.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
| count | number | 6 | How many dominant colours. |
curl -X POST https://fileoven.com/api/v1/tools/color-palette \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.png"
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/image-cropImage Cropper2 creditsCrop an image to a pixel rectangle.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
| x | number | 0 | Left offset of the crop origin, in px. |
| y | number | 0 | Top offset of the crop origin, in px. |
| width | number | - | Crop width in px, clamped to the image bounds. |
| height | number | - | Crop height in px, clamped to the image bounds. |
| format | string | png | Output format: jpg, png or webp. |
| quality | number | 90 | Encoder quality, 1-100. Ignored for PNG. |
curl -X POST https://fileoven.com/api/v1/tools/image-crop \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.png" \ -o cropped.png
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/image-watermarkImage Watermark2 creditsStamp a text watermark onto an image, positioned on a nine-point grid.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
| textrequired | string | - | Watermark text, up to 200 characters. |
| position | string | bottom-right | Nine-point grid: top/center/bottom paired with left/center/right. |
| size | number | - | Type size in px. Defaults to a proportion of the image. |
| color | string | #ffffff | Text colour as hex. |
| opacity | number | 0.5 | Text opacity, 0 to 1. |
| rotation | number | 0 | Rotation of the watermark, in degrees. |
| margin | number | - | Inset from the edges in px. Defaults to 0.75x the type size. |
| format | string | png | Output format: png, jpg or webp. |
| quality | number | 90 | Encoder quality for jpg and webp, 1-100. |
curl -X POST https://fileoven.com/api/v1/tools/image-watermark \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.png" \ -F "text=FileOven"
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/image-to-svgImage to SVG (Trace)3 creditsTrace a raster image into vector paths. Best on flat art, not photographs.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
| colors | number | 12 | Palette size, 2-64. Source capped at 4 megapixels. |
curl -X POST https://fileoven.com/api/v1/tools/image-to-svg \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.png" \ -o traced.svg
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/webp-converterWebP Converter2 creditsEncode any supported image as WebP.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
| quality | number | 82 | Encoder quality, 1-100. Ignored for PNG. |
curl -X POST https://fileoven.com/api/v1/tools/webp-converter \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.png" \ -o converted.webp
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/meme-generatorMeme Generator2 creditsAdd top and bottom meme captions with a black outline.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
| top | string | - | Top caption. Provide top, bottom, or both. |
| bottom | string | - | Bottom caption, up to 120 characters. |
| size | number | - | Caption size in px. Defaults to a tenth of the image height. |
curl -X POST https://fileoven.com/api/v1/tools/meme-generator \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.png"
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/avif-converterAVIF Converter2 creditsEncode any supported image as AVIF.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
| quality | number | 50 | Encoder quality, 1-100. Ignored for PNG. |
curl -X POST https://fileoven.com/api/v1/tools/avif-converter \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.png" \ -o converted.avif
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/images-to-gifImages to GIF501 browser-onlyfreeNot available server-side: Needs pixel work the server-side codecs do not cover. Use /tools/images-to-gif.
curl -X POST https://fileoven.com/api/v1/tools/images-to-gif
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/upscale-imageImage Upscaler2 creditsEnlarge 2x, 3x or 4x with bilinear interpolation. Not a neural upscaler.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
| scale | number | 2 | 2, 3 or 4. Bilinear interpolation, not a neural upscaler. |
| format | string | png | Output format: jpg, png or webp. |
| quality | number | 90 | Encoder quality, 1-100. Ignored for PNG. |
curl -X POST https://fileoven.com/api/v1/tools/upscale-image \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.png" \ -o upscaled.png
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/ico-to-pngICO to PNG2 creditsExtract the largest PNG-encoded image from an .ico file.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
curl -X POST https://fileoven.com/api/v1/tools/ico-to-png \ -H "Authorization: Bearer sk_live_..." \ -F "file=@favicon.ico" \ -o icon.png
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/qr-generatorQR Code GeneratorfreeGenerate a QR code (PNG data URL or SVG).
| Name | Type | Default | Description |
|---|---|---|---|
| textrequired | string | - | The text or URL to encode in the QR code. |
| format | string | png | png (data URL) or svg. |
| size | number | 256 | QR code size, in pixels. |
| margin | number | 4 | Quiet-zone width in modules. |
curl -X POST https://fileoven.com/api/v1/tools/qr-generator \
-H "Content-Type: application/json" \
-d '{"text":"hello world"}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/code-readerQR & Barcode Reader501 browser-onlyfreeNot available server-side: Reads a camera or image stream through a browser-only barcode decoder. Use /tools/code-reader.
curl -X POST https://fileoven.com/api/v1/tools/code-reader
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/unit-converterUnit ConverterfreeConvert length, weight, volume, area, speed, time, data, pressure, energy, power, angle, frequency or temperature.
| Name | Type | Default | Description |
|---|---|---|---|
| categoryrequired | string | - | length, weight, volume, area, speed, time, data, pressure, energy, power, angle, frequency or temperature. |
| fromrequired | string | - | Source unit symbol, e.g. m or kg. |
| torequired | string | - | Target unit symbol, e.g. km or lb. |
| valuerequired | number | - | The numeric value to convert. |
curl -X POST https://fileoven.com/api/v1/tools/unit-converter \
-H "Content-Type: application/json" \
-d '{"category":"length","from":"m","to":"km","value":255}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/currency-converterCurrency Converter501 browser-onlyfreeNot available server-side: Needs a live third-party exchange-rate API, so our uptime and per-call cost would depend on someone else's. Use /tools/currency-converter.
curl -X POST https://fileoven.com/api/v1/tools/currency-converter
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/color-converterColor ConverterfreeConvert HEX / RGB / HSL.
| Name | Type | Default | Description |
|---|---|---|---|
| hex | string | - | Hex colour, e.g. "#3b82f6". Supply exactly one of hex, rgb or hsl. |
| rgb | json | - | RGB triple, e.g. [59, 130, 246]. |
| hsl | json | - | HSL triple, e.g. [217, 91, 60]. |
curl -X POST https://fileoven.com/api/v1/tools/color-converter \
-H "Content-Type: application/json" \
-d '{"hex":"#3b82f6"}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/percentage-calculatorPercentage CalculatorfreePercentage of a number, percent relationship, or percent change.
| Name | Type | Default | Description |
|---|---|---|---|
| moderequired | string | - | of (X% of Y), is_what_percent (X is what % of Y), or change (percent change X to Y). |
| xrequired | number | - | First value. |
| yrequired | number | - | Second value. |
curl -X POST https://fileoven.com/api/v1/tools/percentage-calculator \
-H "Content-Type: application/json" \
-d '{"mode":"of","x":20,"y":50}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/age-calculatorAge CalculatorfreeExact date difference in years, months, days, and totals.
| Name | Type | Default | Description |
|---|---|---|---|
| fromrequired | string | - | Start date, e.g. a birth date, in ISO 8601 format. |
| to | string | today | End date in ISO 8601 format. Defaults to today. |
curl -X POST https://fileoven.com/api/v1/tools/age-calculator \
-H "Content-Type: application/json" \
-d '{"from":"2000-01-01"}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/bmi-calculatorBMI CalculatorfreeBody Mass Index and WHO weight category.
| Name | Type | Default | Description |
|---|---|---|---|
| unitsrequired | string | - | metric (kg/cm) or imperial (lb/in). |
| weightrequired | number | - | Body weight. |
| heightrequired | number | - | Body height. |
curl -X POST https://fileoven.com/api/v1/tools/bmi-calculator \
-H "Content-Type: application/json" \
-d '{"units":"metric","weight":70,"height":175}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/loan-calculatorLoan / EMI CalculatorfreeMonthly payment, total interest, and total paid for a loan.
| Name | Type | Default | Description |
|---|---|---|---|
| principalrequired | number | - | Total loan amount. |
| annual_rate_percentrequired | number | - | Annual interest rate as a percentage. |
| yearsrequired | number | - | Loan term in years. |
curl -X POST https://fileoven.com/api/v1/tools/loan-calculator \
-H "Content-Type: application/json" \
-d '{"principal":20000,"annual_rate_percent":6.5,"years":5}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/css-gradient-generatorCSS Gradient GeneratorfreeBuild a linear or radial CSS gradient from color stops.
| Name | Type | Default | Description |
|---|---|---|---|
| typerequired | string | - | linear or radial. |
| angle | number | 90 | Angle in degrees for linear gradients. |
| stopsrequired | json | - | At least two color stops: [{ color, pos: 0-100 }]. |
curl -X POST https://fileoven.com/api/v1/tools/css-gradient-generator \
-H "Content-Type: application/json" \
-d '{"type":"linear","stops":[{"color":"#3ad5c8","pos":0},{"color":"#6366f1","pos":100}]}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/meta-tag-generatorMeta Tag GeneratorfreeGenerate SEO, Open Graph, and Twitter Card meta tags.
| Name | Type | Default | Description |
|---|---|---|---|
| title | string | - | Page title. |
| description | string | - | Page description, under 160 characters. |
| url | string | - | Canonical page URL. |
| image | string | - | Preview image URL for social shares. |
| site_name | string | - | Site or brand name. |
| twitter_handle | string | - | Twitter/X handle, with or without the @. |
curl -X POST https://fileoven.com/api/v1/tools/meta-tag-generator \
-H "Content-Type: application/json" \
-d '{"title":"My Awesome Page","description":"A short summary of the page."}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/json-csvJSON ⇄ CSVfreeJSON ↔ CSV conversion.
| Name | Type | Default | Description |
|---|---|---|---|
| directionrequired | string | - | json2csv or csv2json. |
| datarequired | json | - | An array of objects for json2csv, or a CSV string for csv2json. |
curl -X POST https://fileoven.com/api/v1/tools/json-csv \
-H "Content-Type: application/json" \
-d '{"direction":"json2csv","data":[{"name":"Ada","qty":2}]}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/base64Base64 Encoder / DecoderfreeBase64 encode / decode.
| Name | Type | Default | Description |
|---|---|---|---|
| textrequired | string | - | Text to encode, or base64 to decode. |
| moderequired | string | - | Whether to encode or decode the text. |
curl -X POST https://fileoven.com/api/v1/tools/base64 \
-H "Content-Type: application/json" \
-d '{"text":"hello world","mode":"encode"}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/timestampUnix Timestamp ConverterfreeUnix timestamp ↔ ISO date.
| Name | Type | Default | Description |
|---|---|---|---|
| valuerequired | string | - | A Unix timestamp, or a date string. |
| mode | string | auto | to-date or to-unix. |
curl -X POST https://fileoven.com/api/v1/tools/timestamp \
-H "Content-Type: application/json" \
-d '{"value":"255"}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/password-generatorPassword GeneratorfreeGenerate passwords from a chosen character set, with an entropy estimate.
| Name | Type | Default | Description |
|---|---|---|---|
| length | number | 20 | Password length, 8-256. |
| count | number | 1 | How many passwords, 1-100. |
| lower | boolean | true | Include lowercase letters. |
| upper | boolean | true | Include uppercase letters. |
| digits | boolean | true | Include digits. |
| symbols | boolean | false | Include punctuation. |
curl -X POST https://fileoven.com/api/v1/tools/password-generator \
-H "Content-Type: application/json" \
-d '{"length":20,"count":1}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/uuid-generatorUUID GeneratorfreeGenerate 1-1000 v4 UUIDs.
| Name | Type | Default | Description |
|---|---|---|---|
| count | number | 1 | How many v4 UUIDs, 1-1000. |
curl -X POST https://fileoven.com/api/v1/tools/uuid-generator \
-H "Content-Type: application/json" \
-d '{"count":1}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/hash-generatorHash GeneratorfreeSHA-1/256/384/512 digest of a string, as hex.
| Name | Type | Default | Description |
|---|---|---|---|
| textrequired | string | - | The text to compute a digest for. |
| algorithm | string | sha-256 | sha-1, sha-256, sha-384 or sha-512. MD5 is not offered. |
curl -X POST https://fileoven.com/api/v1/tools/hash-generator \
-H "Content-Type: application/json" \
-d '{"text":"hello world"}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/word-counterWord & Character CounterfreeCharacters, words, lines, paragraphs, sentences, and reading time.
| Name | Type | Default | Description |
|---|---|---|---|
| textrequired | string | - | The text to count words and characters in. |
curl -X POST https://fileoven.com/api/v1/tools/word-counter \
-H "Content-Type: application/json" \
-d '{"text":"hello world"}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/json-formatterJSON Formatter & ValidatorfreePretty-print or minify a JSON document.
| Name | Type | Default | Description |
|---|---|---|---|
| jsonrequired | string | - | The JSON document to format. |
| indent | number | 2 | Indent width, 0-8. |
| minify | boolean | false | Minify instead of pretty-printing. |
curl -X POST https://fileoven.com/api/v1/tools/json-formatter \
-H "Content-Type: application/json" \
-d '{"json":"{\"id\":1,\"name\":\"Ada\"}"}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/case-converterText Case ConverterfreeConvert between lower, upper, title, sentence, camel, pascal, snake, kebab, constant.
| Name | Type | Default | Description |
|---|---|---|---|
| textrequired | string | - | The text to change the case of. |
| caserequired | string | - | lower, upper, title, sentence, camel, pascal, snake, kebab or constant. |
curl -X POST https://fileoven.com/api/v1/tools/case-converter \
-H "Content-Type: application/json" \
-d '{"text":"hello world","case":"snake"}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/url-encoderURL Encoder / DecoderfreePercent-encode or decode, whole-URI or component.
| Name | Type | Default | Description |
|---|---|---|---|
| textrequired | string | - | Text to encode or decode. |
| mode | string | encode | Whether to encode or decode the text. |
| component | boolean | true | Component encoding rather than whole-URI. |
curl -X POST https://fileoven.com/api/v1/tools/url-encoder \
-H "Content-Type: application/json" \
-d '{"text":"hello world"}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/jwt-decoderJWT DecoderfreeDecode JWT header and payload, with expiry. Does not verify the signature.
| Name | Type | Default | Description |
|---|---|---|---|
| tokenrequired | string | - | The JWT. The signature is not verified. |
curl -X POST https://fileoven.com/api/v1/tools/jwt-decoder \
-H "Content-Type: application/json" \
-d '{"token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxIn0.sig"}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/regex-testerRegex Tester501 browser-onlyfreeNot available server-side: Refused on purpose: running a caller's regex on our servers is a catastrophic-backtracking denial of service, and Node has no way to time a regex out. Use /tools/regex-tester.
curl -X POST https://fileoven.com/api/v1/tools/regex-tester
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/text-diffText Diff CheckerfreeLine-level LCS diff of two texts, up to 5,000 lines a side.
| Name | Type | Default | Description |
|---|---|---|---|
| arequired | string | - | The baseline text, up to 5,000 lines. |
| brequired | string | - | The revised text to compare against the first. |
curl -X POST https://fileoven.com/api/v1/tools/text-diff \
-H "Content-Type: application/json" \
-d '{"a":"one\ntwo","b":"one\ntwo point five"}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/lorem-ipsumLorem Ipsum GeneratorfreeGenerate placeholder paragraphs.
| Name | Type | Default | Description |
|---|---|---|---|
| paragraphs | number | 3 | How many paragraphs, 1-50. |
| sentences | number | 4 | Sentences per paragraph, 1-20. |
curl -X POST https://fileoven.com/api/v1/tools/lorem-ipsum \
-H "Content-Type: application/json" \
-d '{"paragraphs":3,"sentences":4}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/base-converterNumber Base ConverterfreeConvert a number between bases 2-36, using BigInt so large values keep precision.
| Name | Type | Default | Description |
|---|---|---|---|
| valuerequired | string | - | The number, as a string. |
| fromrequired | number | - | Source base, 2-36. |
| torequired | number | - | Target base, 2-36. |
curl -X POST https://fileoven.com/api/v1/tools/base-converter \
-H "Content-Type: application/json" \
-d '{"value":"255","from":null,"to":1}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/text-to-speechText to Speech501 browser-onlyfreeNot available server-side: Uses the browser's speech synthesis voices; nothing equivalent runs server-side. Use /tools/text-to-speech.
curl -X POST https://fileoven.com/api/v1/tools/text-to-speech
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/timezone-converterTimezone ConverterfreeConvert an instant between IANA timezones.
| Name | Type | Default | Description |
|---|---|---|---|
| torequired | string | - | Target IANA timezone. |
| datetime | string | now | ISO 8601 instant. |
| from | string | - | Source IANA timezone, for the comparison line. |
curl -X POST https://fileoven.com/api/v1/tools/timezone-converter \
-H "Content-Type: application/json" \
-d '{"to":"Europe/Berlin"}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/csv-excelCSV ⇄ Excel2 creditsCSV to XLSX, or XLSX to CSV.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
| to | string | xlsx | xlsx or csv. |
| sheet | string | - | Sheet name when converting to CSV. Defaults to the first. |
curl -X POST https://fileoven.com/api/v1/tools/csv-excel \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.csv" \ -F "to=xlsx" \ -o converted.xlsx
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/csv-cleanerCSV Cleaner & Deduper1 creditNormalize, deduplicate, validate, and safely export CSV data.
| Name | Type | Default | Description |
|---|---|---|---|
| csvrequired | string | - | The CSV document to clean. |
| options | json | - | Trim, deduplicate and normalization flags. |
| validation | json | - | { column, rule } to flag invalid rows. |
curl -X POST https://fileoven.com/api/v1/tools/csv-cleaner \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{"csv":"name,qty\nwidget,3"}'200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/yaml-jsonYAML ⇄ JSONfreeYAML to JSON, or JSON to YAML.
| Name | Type | Default | Description |
|---|---|---|---|
| yaml | string | - | YAML to convert to JSON. Supply yaml or json. |
| json | string | - | JSON to convert to YAML. |
| indent | number | 2 | Indent width. |
curl -X POST https://fileoven.com/api/v1/tools/yaml-json \
-H "Content-Type: application/json" \
-d '{"yaml":"name: FileOven\nversion: 1"}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/xml-jsonXML ⇄ JSONfreeXML to JSON, or JSON to XML. Attributes map to @-prefixed keys.
| Name | Type | Default | Description |
|---|---|---|---|
| xml | string | - | XML to convert. Supply xml or json. |
| json | string | - | JSON to convert to XML. |
| root | string | - | Root element name when converting JSON. |
curl -X POST https://fileoven.com/api/v1/tools/xml-json \
-H "Content-Type: application/json" \
-d '{"xml":"<order id=\"7\"><item>Widget</item></order>"}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/markdown-htmlMarkdown to HTMLfreeRender Markdown to HTML.
| Name | Type | Default | Description |
|---|---|---|---|
| markdownrequired | string | - | The Markdown to render as HTML. |
curl -X POST https://fileoven.com/api/v1/tools/markdown-html \
-H "Content-Type: application/json" \
-d '{"markdown":"# Title"}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/html-markdownHTML to Markdown501 browser-onlyfreeNot available server-side: Needs a DOM parser to walk the document; Node has no DOMParser. Use /tools/html-markdown.
curl -X POST https://fileoven.com/api/v1/tools/html-markdown
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/cron-parserCron Expression ParserfreeDescribe a cron expression in plain English.
| Name | Type | Default | Description |
|---|---|---|---|
| expressionrequired | string | - | A cron expression, e.g. "0 9 * * 1-5". |
curl -X POST https://fileoven.com/api/v1/tools/cron-parser \
-H "Content-Type: application/json" \
-d '{"expression":"0 9 * * 1-5"}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/subnet-calculatorIP Subnet CalculatorfreeCIDR network, broadcast, mask, host range and counts.
| Name | Type | Default | Description |
|---|---|---|---|
| cidrrequired | string | - | CIDR block, e.g. "192.168.1.0/24". |
curl -X POST https://fileoven.com/api/v1/tools/subnet-calculator \
-H "Content-Type: application/json" \
-d '{"cidr":"192.168.1.0/24"}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/ip-lookupGeo/IP Lookup501 browser-onlyfreeNot available server-side: Needs a third-party geolocation API for every call. Use /tools/ip-lookup.
curl -X POST https://fileoven.com/api/v1/tools/ip-lookup
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/json-diffJSON DifffreeStructural, key-path level diff of two JSON values.
| Name | Type | Default | Description |
|---|---|---|---|
| arequired | json | - | The baseline value. |
| brequired | json | - | The value to compare the first against. |
curl -X POST https://fileoven.com/api/v1/tools/json-diff \
-H "Content-Type: application/json" \
-d '{"a":{"version":1,"active":true},"b":{"version":2,"active":true}}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/csv-diffCSV DifffreeRow-level diff of two CSV documents.
| Name | Type | Default | Description |
|---|---|---|---|
| arequired | string | - | The baseline CSV document. |
| brequired | string | - | The revised CSV to compare against the first. |
curl -X POST https://fileoven.com/api/v1/tools/csv-diff \
-H "Content-Type: application/json" \
-d '{"a":"one\ntwo","b":"one\ntwo point five"}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/barcode-generatorBarcode GeneratorfreeGenerate a Code 128 barcode as SVG.
| Name | Type | Default | Description |
|---|---|---|---|
| textrequired | string | - | Printable ASCII, up to 80 characters. |
| height | number | 100 | Barcode height in px, 20-400. |
| module_width | number | 2 | Narrow-bar width in px, 1-8. |
curl -X POST https://fileoven.com/api/v1/tools/barcode-generator \
-H "Content-Type: application/json" \
-d '{"text":"hello world"}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/markdown-tableMarkdown Table GeneratorfreeAlign a Markdown table's columns.
| Name | Type | Default | Description |
|---|---|---|---|
| markdownrequired | string | - | A Markdown table to align. |
curl -X POST https://fileoven.com/api/v1/tools/markdown-table \
-H "Content-Type: application/json" \
-d '{"markdown":"# Title"}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/slug-generatorSlug GeneratorfreeURL-safe slug, with accents folded rather than dropped.
| Name | Type | Default | Description |
|---|---|---|---|
| textrequired | string | - | The text to turn into a URL-safe slug. |
| separator | string | - | Single separator character. |
curl -X POST https://fileoven.com/api/v1/tools/slug-generator \
-H "Content-Type: application/json" \
-d '{"text":"hello world"}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/text-encryptText Encrypt / Decrypt1 creditAES-GCM encrypt or decrypt a string with a password-derived key.
| Name | Type | Default | Description |
|---|---|---|---|
| text | string | - | Plaintext to encrypt. Supply text or ciphertext. |
| ciphertext | string | - | Ciphertext to decrypt. |
| passwordrequired | string | - | At least 8 characters. |
curl -X POST https://fileoven.com/api/v1/tools/text-encrypt \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{"text":"hello world","password":"your-password"}'200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/vcard-generatorvCard GeneratorfreeBuild an RFC 6350 vCard 3.0 from contact fields.
| Name | Type | Default | Description |
|---|---|---|---|
| first_name | string | - | Given name. Supply at least one of first_name or last_name. |
| last_name | string | - | Family name, used for the N and FN fields. |
| organization | string | - | Organization name for the ORG field. |
| title | string | - | Job title for the TITLE field. |
| string | - | Email address for the EMAIL field. | |
| phone | string | - | Phone number for the TEL field. |
| url | string | - | Website URL for the URL field. |
| note | string | - | Free-text note. |
curl -X POST https://fileoven.com/api/v1/tools/vcard-generator \
-H "Content-Type: application/json" \
-d '{"first_name":"Ada","last_name":"Lovelace","email":"ada@example.com"}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/json-to-tsJSON to TypeScriptfreeGenerate TypeScript interfaces from a JSON sample.
| Name | Type | Default | Description |
|---|---|---|---|
| jsonrequired | string | - | A representative JSON sample to generate types from. |
| name | string | Root | Name for the root interface. |
curl -X POST https://fileoven.com/api/v1/tools/json-to-ts \
-H "Content-Type: application/json" \
-d '{"json":"{\"id\":1,\"name\":\"Ada\"}"}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/sql-formatterSQL FormatterfreePretty-print SQL for a chosen dialect.
| Name | Type | Default | Description |
|---|---|---|---|
| sqlrequired | string | - | The SQL query to format. |
| dialect | string | sql | sql, postgresql, mysql, sqlite, bigquery and others. |
curl -X POST https://fileoven.com/api/v1/tools/sql-formatter \
-H "Content-Type: application/json" \
-d '{"sql":"select id, name from users where active = 1"}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/minifierJS / CSS / HTML MinifierfreeMinify JavaScript (terser), CSS, or HTML.
| Name | Type | Default | Description |
|---|---|---|---|
| coderequired | string | - | The source code to minify. |
| language | string | js | js, css or html. |
curl -X POST https://fileoven.com/api/v1/tools/minifier \
-H "Content-Type: application/json" \
-d '{"code":"const a = 1;"}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/contrast-checkerColor Contrast CheckerfreeWCAG contrast ratio with AA/AAA pass flags.
| Name | Type | Default | Description |
|---|---|---|---|
| foregroundrequired | string | - | Colour as a hex string, e.g. #1a1a1a. |
| backgroundrequired | string | - | Colour as a hex string, e.g. #1a1a1a. |
| font_size | number | 16 | Font size in px, for the large-text threshold. |
| bold | boolean | false | Whether the text is bold. |
curl -X POST https://fileoven.com/api/v1/tools/contrast-checker \
-H "Content-Type: application/json" \
-d '{"foreground":"#111111","background":"#ffffff"}'200 JSON result body.{"error": "..."} with the status codes listed under Errors./v1/tools/zip-toolZIP Creator & Extractor2 creditsCreate a ZIP from uploaded files, or extract one to base64 contents.
| Name | Type | Default | Description |
|---|---|---|---|
| files | file[] | - | Files to compress into an archive. Supply files to create, or file to extract. |
| file | file | - | A ZIP to extract, returned as base64 contents. |
| mode | string | auto | extract to force extraction. |
curl -X POST https://fileoven.com/api/v1/tools/zip-tool \ -H "Authorization: Bearer sk_live_..." \ -F "files=@input.zip" -F "files=@second-input.zip" \ -o archive.zip
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/bulk-renameBulk File Renamer2 creditsFind/replace, prefix, suffix and sequence-number a batch of files into a ZIP.
| Name | Type | Default | Description |
|---|---|---|---|
| filesrequired | file[] | - | Files to rename, 40 MB total. |
| find | string | - | Literal substring to replace. Never treated as a pattern. |
| replace | string | - | Text that replaces each match of find. |
| prefix | string | - | Text prepended to every renamed file. |
| suffix | string | - | Text appended before the file extension. |
| sequence | boolean | false | Whether to append an incrementing sequence number. |
| start | number | 1 | The first number in the sequence. |
| padding | number | 3 | Sequence zero padding, 1-12. |
curl -X POST https://fileoven.com/api/v1/tools/bulk-rename \ -H "Authorization: Bearer sk_live_..." \ -F "files=@input.png" -F "files=@second-input.png" \ -o renamed.zip
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/stl-to-glbSTL to GLB Converter3 creditsConvert STL to glTF binary. Geometry only, no materials.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
curl -X POST https://fileoven.com/api/v1/tools/stl-to-glb \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.png"
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/glb-to-stlGLB to STL Converter3 creditsConvert the first mesh of a GLB to binary STL, with computed facet normals.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
curl -X POST https://fileoven.com/api/v1/tools/glb-to-stl \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.png"
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/obj-to-glbOBJ to GLB Converter3 creditsConvert Wavefront OBJ to glTF binary. N-gons are triangulated.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
curl -X POST https://fileoven.com/api/v1/tools/obj-to-glb \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.png"
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/fbx-to-glbFBX to GLB Converter501 browser-onlyfreeNot available server-side: FBX is a proprietary binary scene tree with its own compression; converting it needs a real scene graph, not a mesh reader. Use /tools/fbx-to-glb.
curl -X POST https://fileoven.com/api/v1/tools/fbx-to-glb
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/usdz-converterUSDZ Converter501 browser-onlyfreeNot available server-side: USDZ is a zipped USD stage, which needs a full scene graph rather than the mesh geometry our 3D endpoints handle. Use /tools/usdz-converter.
curl -X POST https://fileoven.com/api/v1/tools/usdz-converter
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/model-optimizer3D Web & AR Optimizer2 creditsReport mesh statistics and what deduplication would save. Analysis only; does not rewrite the model.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
curl -X POST https://fileoven.com/api/v1/tools/model-optimizer \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.png"
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/glb-to-objGLB to OBJ Converter3 creditsExtract the first mesh from a GLB into OBJ. Geometry only, no materials.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
curl -X POST https://fileoven.com/api/v1/tools/glb-to-obj \ -H "Authorization: Bearer sk_live_..." \ -F "file=@model.glb" \ -o model.obj
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/stl-to-objSTL to OBJ Converter3 creditsConvert binary or ASCII STL to OBJ. Geometry only, no materials.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
curl -X POST https://fileoven.com/api/v1/tools/stl-to-obj \ -H "Authorization: Bearer sk_live_..." \ -F "file=@model.stl" \ -o model.obj
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/model-viewer3D Model Viewer501 browser-onlyfreeNot available server-side: A viewer is a UI, not a conversion. Use /tools/model-viewer.
curl -X POST https://fileoven.com/api/v1/tools/model-viewer
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/audio-metadataAudio Metadata Viewer1 creditRead ID3 / Vorbis / MP4 audio tags.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
curl -X POST https://fileoven.com/api/v1/tools/audio-metadata \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.mp3"
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/audio-stripAudio Metadata Remover1 creditStrip ID3v1/ID3v2 tags from MP3.
| Name | Type | Default | Description |
|---|---|---|---|
| filerequired | file | - | The file to process. |
curl -X POST https://fileoven.com/api/v1/tools/audio-strip \ -H "Authorization: Bearer sk_live_..." \ -F "file=@input.mp3"
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.x-credits-used reports what the call cost.{"error": "..."} with the status codes listed under Errors./v1/tools/audio-converterAudio Converter501 browser-onlyfreeNot available server-side: Audio transcoding runs on ffmpeg in the browser. Reading and stripping tags is available server-side; re-encoding is not. Use /tools/audio-converter.
curl -X POST https://fileoven.com/api/v1/tools/audio-converter
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/audio-trimAudio Trimmer501 browser-onlyfreeNot available server-side: Audio transcoding runs on ffmpeg in the browser. Reading and stripping tags is available server-side; re-encoding is not. Use /tools/audio-trim.
curl -X POST https://fileoven.com/api/v1/tools/audio-trim
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/audio-mergeAudio Merger501 browser-onlyfreeNot available server-side: Audio transcoding runs on ffmpeg in the browser. Reading and stripping tags is available server-side; re-encoding is not. Use /tools/audio-merge.
curl -X POST https://fileoven.com/api/v1/tools/audio-merge
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/audio-silence-removeAudio Silence Remover501 browser-onlyfreeNot available server-side: Audio transcoding runs on ffmpeg in the browser. Reading and stripping tags is available server-side; re-encoding is not. Use /tools/audio-silence-remove.
curl -X POST https://fileoven.com/api/v1/tools/audio-silence-remove
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/audio-adjusterAudio Adjuster501 browser-onlyfreeNot available server-side: Audio transcoding runs on ffmpeg in the browser. Reading and stripping tags is available server-side; re-encoding is not. Use /tools/audio-adjuster.
curl -X POST https://fileoven.com/api/v1/tools/audio-adjuster
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/screen-recorderScreen & Camera Recorder501 browser-onlyfreeNot available server-side: Records the user's own screen, which only a browser can do. Use /tools/screen-recorder.
curl -X POST https://fileoven.com/api/v1/tools/screen-recorder
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/video-to-gifVideo to GIF501 browser-onlyfreeNot available server-side: Video transcoding runs on ffmpeg compiled to WebAssembly in the browser. A server version means real per-minute compute cost, which the current pricing does not cover. Use /tools/video-to-gif.
curl -X POST https://fileoven.com/api/v1/tools/video-to-gif
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/video-compressVideo Compressor501 browser-onlyfreeNot available server-side: Video transcoding runs on ffmpeg compiled to WebAssembly in the browser. A server version means real per-minute compute cost, which the current pricing does not cover. Use /tools/video-compress.
curl -X POST https://fileoven.com/api/v1/tools/video-compress
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/mp4-to-webmMP4 to WebM501 browser-onlyfreeNot available server-side: Video transcoding runs on ffmpeg compiled to WebAssembly in the browser. A server version means real per-minute compute cost, which the current pricing does not cover. Use /tools/mp4-to-webm.
curl -X POST https://fileoven.com/api/v1/tools/mp4-to-webm
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/video-trimVideo Trimmer501 browser-onlyfreeNot available server-side: Video transcoding runs on ffmpeg compiled to WebAssembly in the browser. A server version means real per-minute compute cost, which the current pricing does not cover. Use /tools/video-trim.
curl -X POST https://fileoven.com/api/v1/tools/video-trim
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/video-to-audioVideo to Audio501 browser-onlyfreeNot available server-side: Video transcoding runs on ffmpeg compiled to WebAssembly in the browser. A server version means real per-minute compute cost, which the current pricing does not cover. Use /tools/video-to-audio.
curl -X POST https://fileoven.com/api/v1/tools/video-to-audio
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/video-mergeVideo Merger501 browser-onlyfreeNot available server-side: Video transcoding runs on ffmpeg compiled to WebAssembly in the browser. A server version means real per-minute compute cost, which the current pricing does not cover. Use /tools/video-merge.
curl -X POST https://fileoven.com/api/v1/tools/video-merge
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/video-resizeVideo Resizer501 browser-onlyfreeNot available server-side: Video transcoding runs on ffmpeg compiled to WebAssembly in the browser. A server version means real per-minute compute cost, which the current pricing does not cover. Use /tools/video-resize.
curl -X POST https://fileoven.com/api/v1/tools/video-resize
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/video-converterVideo Converter501 browser-onlyfreeNot available server-side: Video transcoding runs on ffmpeg compiled to WebAssembly in the browser. A server version means real per-minute compute cost, which the current pricing does not cover. Use /tools/video-converter.
curl -X POST https://fileoven.com/api/v1/tools/video-converter
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/gif-to-mp4GIF to MP4501 browser-onlyfreeNot available server-side: Video transcoding runs on ffmpeg compiled to WebAssembly in the browser. A server version means real per-minute compute cost, which the current pricing does not cover. Use /tools/gif-to-mp4.
curl -X POST https://fileoven.com/api/v1/tools/gif-to-mp4
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/remove-backgroundAI Background Remover501 browser-onlyfreeNot available server-side: Background removal runs a browser AI model; use /tools/remove-background
curl -X POST https://fileoven.com/api/v1/tools/remove-background
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/image-ocrImage OCR (Text Extractor)501 browser-onlyfreeNot available server-side: AI tools are paused while the provider is swapped; use /tools/image-ocr
curl -X POST https://fileoven.com/api/v1/tools/image-ocr
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/speech-transcribeSpeech to Text Transcription501 browser-onlyfreeNot available server-side: AI tools are paused while the provider is swapped
curl -X POST https://fileoven.com/api/v1/tools/speech-transcribe
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/ai-image-upscalerAI Image Upscaler501 browser-onlyfreeNot available server-side: Paused while the AI provider is replaced. Use /tools/ai-image-upscaler.
curl -X POST https://fileoven.com/api/v1/tools/ai-image-upscaler
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/document-data-extractorDocument Data Extractor501 browser-onlyfreeNot available server-side: Built, but switched off while the AI provider is replaced. See Live Testing/ai-provider-plan.md.
curl -X POST https://fileoven.com/api/v1/tools/document-data-extractor
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/ai-pdf-assistantAI PDF Assistant501 browser-onlyfreeNot available server-side: Built, but switched off while the AI provider is replaced. See Live Testing/ai-provider-plan.md.
curl -X POST https://fileoven.com/api/v1/tools/ai-pdf-assistant
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors./v1/tools/pdf-translatorPDF Translator501 browser-onlyfreeNot available server-side: Built, but switched off while the AI provider is replaced. See Live Testing/ai-provider-plan.md.
curl -X POST https://fileoven.com/api/v1/tools/pdf-translator
200 the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."} with the status codes listed under Errors.Failures answer with {"error": "..."} and one of these codes.
| Status | Meaning | What to do |
|---|---|---|
| 400 | Missing or invalid input | Check the parameter table for that endpoint. |
| 401 | Missing or malformed Authorization header | Send Authorization: Bearer sk_live_... |
| 402 | Invalid API key, or not enough api_credits | Top up credits in the dashboard. |
| 404 | Unknown tool slug | Call GET /v1/tools for the live list. |
| 413 | File too large | Keep multipart uploads under 50 MB. |
| 429 | Rate limit exceeded (60/min per key) | Back off for the Retry-After interval. |
| 501 | Tool is browser-only | Credits are refunded. Use the web tool, or filter on availability. |
| 502 | Upstream provider failure | Credits are refunded. Retry; open a ticket if it persists. |
Generate and manage keys in your dashboard. Purchase API credits any time.
POST
/v1/tools/social-video-toolkitSocial Media Video Toolkit501 browser-onlyfreeNot available server-side: Video editing runs on ffmpeg in the browser. Use /tools/social-video-toolkit.
Example request
Response
200the processed file, with content-disposition naming it, or a JSON result for data endpoints.{"error": "..."}with the status codes listed under Errors.