Skip to main content

Uploading Documents

NetraOCR accepts documents in three ways. All of them are available both in the console and over the API.

Supported formats & limits​

PropertyValue
File typesPDF, PNG, JPG/JPEG, TIFF, BMP, WebP
Max single file50 MB
Max bulk total600 MB
PDF pagesMulti-page PDFs are fully supported
Page limits

Per-file page caps may apply depending on your plan (and, on Business plans, on the specific template). The console shows the effective limit before you upload.

1. Single upload (synchronous)​

The simplest flow — upload one file and get the result back in the same response.

In the console: Dashboard → Upload → choose a file → select a template → optionally toggle integrity → Submit. The result appears in seconds.

Over the API: POST /ocr/upload with multipart/form-data. See OCR endpoints.

Good for: interactive use, one-off documents, low-latency integrations.

2. Base64 upload (synchronous)​

Identical to single upload, but the file is sent as a Base64 string inside a JSON body instead of multipart form data. Ideal when multipart is inconvenient — for example calling from a serverless function or a system that only speaks JSON.

Over the API: POST /ocr/upload-base64. See OCR endpoints.

3. Bulk upload (asynchronous)​

Submit many files at once — a whole folder of invoices, for example. Bulk uploads are processed in the background and grouped into a batch.

The recommended flow is two steps:

  1. Analyze (POST /ocr/bulk-analyze) — a pre-flight check that validates every file (type, size, page count) and returns an accurate cost estimate. It does not create jobs.
  2. Upload (POST /ocr/bulk-upload) — submits the batch for processing and returns a batch_id. Watch the batch, or poll individual jobs, to collect results.

In the console: Dashboard → Upload → select multiple files / a folder. The UI runs the analysis automatically and shows you the cost before you confirm.

See OCR endpoints, Batches, and Jobs & Results for the API details.

Choosing a template at upload time​

Every OCR upload requires a selected template. Over the API, pass its template_id so the result is returned as structured data keyed to your fields:

  • Pass a global template ID (e.g. gl1) → structured data using a built-in schema.
  • Pass a user template ID → structured data using your custom schema.

Learn how to create templates in Templates.

Enabling document integrity​

Set the integrity option on upload to additionally screen the document for tampering. The check runs in the background and is retrieved separately — see Document Integrity.

What you get back​

FieldDescription
job_idUnique ID for this processing job
structured_dataTyped fields from the selected template
page_countNumber of pages processed
document_typeDetected document type (e.g. invoice)
processing_time_msHow long processing took
coins_consumedUsage charged for this job

Next: review and export results in Results & Exports.