FileRouter SDK class (your own provider keys, provider’s own limits apply). Understanding which path you’re on determines which size limits apply to your uploads.
Hosted service: 100 MB upload ceiling
The hosted FileRouter API accepts files up to 100 MB per request. When you upload a binary file, it streams securely into storage — FileRouter never buffers the entire file during ingress.Upload a file to the hosted service
In production, FileRouter gives each provider a short-lived, scoped source URL to fetch the document securely. The document is processed directly by the provider and is never re-buffered by the service. After the provider completes, the uploaded source is deleted.
Binary uploads use request headers
When you upload a binary file (rather than a JSON body with a URL), the SDK sets the job parameters as HTTP headers instead of a JSON body. The file bytes become the raw request body. The SDK handles this automatically — you don’t need to construct these headers yourself.URL inputs
Instead of uploading a binary file, you can pass a publicly accessible HTTP or HTTPS URL. FileRouter (or the downstream provider) fetches the document directly from that URL:Parse a document by URL
Files above 100 MB
For files larger than 100 MB, you have two options:- BYOK direct mode (SDK)
- CLI with --local flag
Use the
FileRouter class directly with a provider adapter. This bypasses the hosted service entirely — your document goes straight to the provider using your own API key. The 100 MB ceiling doesn’t apply; each provider’s own file-size limits govern the request.BYOK direct mode — bypasses the hosted ceiling
Provider native file limits
In BYOK direct mode, each provider enforces its own size and format limits independently of FileRouter. Consult each provider’s documentation for their current ceilings. FileRouter normalizes errors from providers intoFileRouterError with a ParseFailed code, so your error handling doesn’t need to be provider-specific.
Result retention
How long are results available?
How long are results available?
Hosted job results are available for 7 days after the job completes. After 7 days, requesting the job returns HTTP 410 Gone. Job records themselves are removed after 30 days.If you need results beyond the 7-day window, retrieve and store the result data in your own storage before it expires.
Handle expired results gracefully