Read a value
Totals, dates, names, reference numbers. Declare each one a number or a string and it arrives that way, not as text your code has to coerce.
Visual understanding, on your schema
Routeser reads images and PDFs and answers in the exact shape your code expects. Name what you need — a value, a category, a yes-or-no check — and each answer comes back typed, not as a wall of text to parse.
Free plan: 20 page credits each month, no card required.
// Three questions about one image, answered as typed JSON.
const { result } = await client.extractFile({
file,
idempotencyKey: "doc-2048",
input: { fileName, mediaType, sizeBytes },
schema: {
version: "1",
fields: [
{ name: "document_type", type: "enum",
enumValues: ["invoice", "receipt", "form"] },
{ name: "total_due", type: "number" },
{ name: "is_signed", type: "boolean",
description: "A handwritten signature is visible." }
]
}
});
{
"document_type": "invoice",
"total_due": 1248.5,
"is_signed": true
}
One contract
Most vision APIs hand back what they saw and leave you to find your data in it. Routeser works the other way round: you declare the fields you want, and the response is those fields — same names, same types, every time.
That contract is the product. Models get better and the pipeline behind them changes; what your code integrates against does not.
Totals, dates, names, reference numbers. Declare each one a number or a string and it arrives that way, not as text your code has to coerce.
Give a field the list of categories you use and every image comes back labelled with one of them, never something you did not ask for.
Is it signed? Is the box ticked? Is the plate damaged? Describe what to look for and the answer comes back true or false.
How it works
Use cases
Invoice numbers, vendors, dates, purchase-order references, and totals for accounts payable.
See invoice fieldsMerchant, transaction, date, total, and payment fields for expense reconciliation.
See receipt fieldsLabels, typed values, dates, and visible checkbox states from recurring operational forms.
See form fieldsSecurity
Four things worth knowing before you send anything real. The trust center has the rest — including what we do not have yet.
Files are encrypted in transit and stay encrypted while we hold them. There is no unencrypted hop and no plaintext copy at rest.
Pick a region and your files and their job data stay in it. Today that is us-west-1.
We keep files for 90 days and results for 90 days, then they expire on their own. You can delete either sooner with one call.
We store a one-way hash of your API key, never the key itself. If you lose it we genuinely cannot recover it — you roll a new one and revoke the old.
FAQ
JPEG, PNG, and WebP images, and PDF documents. A PDF is read page by page; an image counts as a single page.
No. Anything you can photograph or scan works the same way: name the fields you want and Routeser answers them. Documents are simply the most common starting point, which is why the examples begin there.
Page credits. One image is one page and costs one credit; a PDF costs one credit for each page it renders.
No. Routeser accepts the job straight away and you collect the answer from a bounded poll or a signed webhook, so nothing in your stack has to hold a connection open.
Next step
Open the console to define a schema and evaluate Routeser with an authenticated workspace.