File Processing That Never Leaves Your Cloud.
Enterprise-grade APIs to upload, scan, transform, store, and serve files, including AI steps like transcription and text extraction. One pipeline, one run, on infrastructure you control.
- uploadPresigned, to your bucketrunning
- verifyType check by magic bytes
- scanVirus scan, quarantine on hit
- resizeResize, convert, compress
- serveSigned expiring URL
Filerobot orchestrates the run. Your files and keys never leave your environment.
- Runs in your cloud
- Your buckets, your keys
- Zero data egress
- Virus-scanned
- Signed delivery
One Upload. Many Outputs.
A single run does everything to a file at once. No chaining, no orchestration, just results.
Handle User Uploads. Effortlessly.
Presigned uploads that send files straight to your storage. Built in, ready to drop into any app.
- Direct to your storagePresigned uploads go straight to your bucket and never proxy through our servers.
- One-call SDK ingestA single ingestFile call presigns, uploads, and finalizes the file for you.
- Drag-and-drop dropzoneA polished dropzone via the Filerobot Uppy plugin your users already know.
- Import by URLPull files in from a remote URL, not just local picks.
- Large files via multipartStream multi-gigabyte uploads in presigned parts without timeouts or memory limits.
- Type-detection and hashingEvery file is type-checked by magic bytes and hashed on finalize, automatically.
- JavaScript and TypeScript SDKA typed, drop-in client for any JavaScript or TypeScript app.
Integrate In Minutes.
Upload a file and trigger a run with a few lines. The TypeScript SDK on the web, or the REST API from iOS and Android, all the same typed flow.
import { createFilerobot } from "@filerobot/sdk-core";import { useState } from "react"; const fr = createFilerobot({ baseUrl: "https://api.filebot.dev", apiKey: import.meta.env.VITE_FILEROBOT_KEY,}); export function UploadAndProcess() { const [outputs, setOutputs] = useState([]); async function onDrop(file) { // Ingest the file straight to your storage const upload = await fr.uploads.ingestFile({ file, filename: file.name, }); // Trigger a run and wait for the result const run = await fr.runs.createAndWait({ pipelineId: "avatar", uploadedFileObjectId: upload.fileObjectId, }); setOutputs(run.steps); } return <Dropzone onDrop={onDrop} outputs={outputs} />;}import Foundation let baseUrl = "https://api.filebot.dev"let apiKey = ProcessInfo.processInfo.environment["FILEROBOT_KEY"]! func post(_ path: String, _ body: [String: Any]) async throws -> Data { var req = URLRequest(url: URL(string: baseUrl + path)!) req.httpMethod = "POST" req.setValue("Bearer \(apiKey)", forHTTPHeaderField: "Authorization") req.setValue("application/json", forHTTPHeaderField: "Content-Type") req.httpBody = try JSONSerialization.data(withJSONObject: body) let (data, _) = try await URLSession.shared.data(for: req) return data} func uploadAndProcess(fileObjectId: String) async throws { // POST /v1/runs to process the uploaded file let data = try await post("/v1/runs", [ "pipelineId": "avatar", "uploadedFileObjectId": fileObjectId, ]) print(String(data: data, encoding: .utf8) ?? "")}import okhttp3.* val client = OkHttpClient()val baseUrl = "https://api.filebot.dev"val apiKey = BuildConfig.FILEROBOT_KEY fun uploadAndProcess(fileObjectId: String): String { // POST /v1/runs to process the uploaded file val json = """{"pipelineId":"avatar","uploadedFileObjectId":"$fileObjectId"}""" val request = Request.Builder() .url("$baseUrl/v1/runs") .header("Authorization", "Bearer $apiKey") .post(json.toRequestBody("application/json".toMediaType())) .build() client.newCall(request).execute().use { res -> return res.body!!.string() }}Add AI To Any Pipeline.
Drop AI steps into a run alongside transform and scan. Run them in your own cloud, so files never leave your environment.
Speech Transcription
Turn speech in audio into accurate text.
Whisper · Deepgram · Hugging Face
Text Extraction (OCR)
Pull searchable text out of scans and images.
Tesseract · OpenAI Vision · Ollama
Image Descriptions
Generate alt text and captions for images.
OpenAI Vision · Ollama
Runs In Your Cloud.
The Filerobot agent runs inside your VPC. Your files and keys never leave your environment.
Data residency & sovereignty
Files stay in your region, in your account. Meet residency rules without a side channel.
No third-party data custody
We never hold your bytes. The control plane sees run metadata, never file contents.
Your existing buckets & creds
Point the agent at the storage and keys you already run. Nothing new to trust.
Virus Scanning, Managed.
Scan every file as a step. No ClamAV servers to run, quarantine on a hit before anything is served.
- Add a scan step to a pipeline, that's the whole setup
- Quarantine-on-hit before delivery
- Signatures stay current automatically
Everything A Serious Integration Needs.
Declarative step pipelines
Define steps, not glue code
Signed, tenant-aware delivery
Expiring, scoped URLs
Webhooks & runs
Every run, observable
Scoped API keys
Least-privilege by default
Bring your own bucket
Tenant-scoped org isolation
Works with S3, R2, and S3-compatible storage
Your storage, connected
Simple, Usage-Based Pricing.
Free to start, Pro for production, Enterprise for your cloud.
Ready To Get Started?
Start free in minutes. No credit card needed.
No credit card needed.