Nanonets

App · Document Extraction · 33 actions

Extract data from invoices, receipts, purchase orders, bank statements, passports and any other document with Nanonets: send a PDF, image or spreadsheet to a workflow and get each field's value, every value found with its confidence, and tables such as line items as rows. Review documents (approve, assign, and correct values and tables), manage workflows and the fields they extract, classify images, and query the databases connected to Nanonets. Needs a Nanonets account.

Actions

ActionWhat it does
Add field valueAdd a value for a field to a page of a document, as a reviewer does by hand, for one Nanonets missed.
Add tableAdd a table to a page of a document, such as line items Nanonets missed: give its rows, each a record of column name to text, up to 200 cells in all.
Add table cellAdd a cell to a table on a document page, at a row and column.
Approve documentApprove a document, as the Approve button in Nanonets does: its data, with any corrections, is marked as reviewed and ready for export.
Assign documents to reviewerAssign one or more documents to a member of your Nanonets team to review, by their email address.
Classify imageSort an image into the categories of one of your Nanonets image classification models: the most likely category, and how likely each one is.
Create workflowCreate a workflow to extract data from a kind of document.
Delete documentDelete a document and its extracted data from a workflow.
Delete field valueRemove a wrong value from a page of a document.
Delete tableRemove a table from a page of a document.
Delete table cellRemove a cell from a table.
Delete workflowDelete a workflow.
Delete workflow fieldRemove one field or table column from a workflow, leaving the rest as they are.
Extract data from documentSend a document to a Nanonets workflow and get back what it extracted: each field's value (such as an invoice's number, date and total), every value found with its confidence and position, and each table (such as line items) as rows.
Get documentGet a document's status and everything Nanonets extracted from it, with any corrections reviewers made, by its ID.
Get document pageGet one page of a document, by its ID, with the field values and tables extracted from it.
Get workflowGet a workflow's description, the fields and table columns it extracts with their IDs, and whether it captures tables.
List database connectionsList the databases connected to your Nanonets account for lookups and exports (such as PostgreSQL or MySQL), without their hosts or passwords.
List documentsList a workflow's documents, newest first, up to 100 a page, with each one's status, file name, review stage and page IDs.
List documents by dateList the documents a workflow received between two days, up to 31 days apart (in UTC), with whether each is approved and its final field values after review.
List image classification modelsList your Nanonets image classification models, with their categories and whether each is ready to classify images.
List workflow typesList the kinds of workflow Nanonets can create: instant learning for any document, or one ready made for invoices, receipts, purchase orders, bank statements, passports, driver licenses, bills of lading or tables.
List workflowsList the workflows in your Nanonets account, each with the fields and table columns it extracts.
Rename workflow fieldRename one of a workflow's fields or table columns, keeping its ID.
Retry document exportSend documents to the workflow's exports again (such as a spreadsheet or an accounting system), for example after an export failed.
Retry document extractionHave Nanonets extract documents' data again, for example after changing the workflow's fields or AI guidelines.
Run database queryRun an SQL query on a database connected to your Nanonets account, such as looking up a vendor before approving an invoice, and get back its rows.
Set AI guidelinesGive an instant learning workflow instructions for extracting its fields and tables, such as to write dates as YYYY-MM-DD or to only extract amounts in USD.
Set workflow fieldsSet the fields and table columns a workflow extracts, such as invoice_number, total_amount and the line items' columns.
Unapprove documentTake an approved document back to unapproved, so it can be reviewed again.
Update field valueCorrect a value Nanonets extracted, by its value ID (field_data_id).
Update table cellCorrect a table cell's text, by its cell ID.
Update workflowChange a workflow's description, or turn table capture (such as line items) on or off.

Add field value

Add a value for a field to a page of a document, as a reviewer does by hand, for one Nanonets missed. The field must be one of the workflow's fields.

Inputs

Nanonets workflownanonets_workflow_idtextRequired
The Nanonets workflow: pick one, or give its ID (in the workflow's address in Nanonets, and in what List workflows returns).
Document IDdocument_idtextRequired
The document's ID: the document_id of the step that sent it, or of List documents.
Page IDpage_idtextRequired
The page's ID: the page_id of one of the document's pages, or of a value or table on it.
Fieldfield_nametextRequired
The field the value is for, one of the workflow's fields.
ValuevaluetextRequired
The value, as text.
Positionbboxlist
Where on the page it is: x1, y1, x2 and y2 in pixels from the page's top left, such as 100, 200, 300, 250. Leave empty for no position.

Outputs

bboxlist
Where on the page it was found: x1, y1, x2 and y2 in pixels from the page's top left.
confidencenumber
How sure Nanonets is of the value, 0 to 1.
document_idtext
The document's ID.
field_data_idtext
The value's ID.
field_nametext
The field the value is for.
page_idtext
The page's ID.
valuetext
The value, as text.
verification_messagetext
Why it failed validation, or the reviewer's note, when there is one.
verification_statustext
Whether it passed the workflow's validation rules (success or failed), or how a reviewer marked it (verified or unverified).
workflow_idtext
The workflow's ID.
Example output
{
  "bbox": [
    0,
    0,
    0,
    0
  ],
  "confidence": 1,
  "document_id": "22222222-2222-4222-8222-222222222222",
  "field_data_id": "44444444-4444-4444-8444-444444444444",
  "field_name": "invoice_number",
  "page_id": "33333333-3333-11f1-8333-333333333333",
  "value": "LODOL-QA-1",
  "verification_message": null,
  "verification_status": "unverified",
  "workflow_id": "11111111-1111-4111-8111-111111111111"
}

Add table

Add a table to a page of a document, such as line items Nanonets missed: give its rows, each a record of column name to text, up to 200 cells in all. Every cell gets an ID, so a later step can correct or delete it.

Inputs

Nanonets workflownanonets_workflow_idtextRequired
The Nanonets workflow: pick one, or give its ID (in the workflow's address in Nanonets, and in what List workflows returns).
Document IDdocument_idtextRequired
The document's ID: the document_id of the step that sent it, or of List documents.
Page IDpage_idtextRequired
The page's ID: the page_id of one of the document's pages, or of a value or table on it.
RowsrowslistRequired
The table's rows, each a record of column name to text, such as [{"description": "Consulting", "quantity": "1"}].
Columnsheaderslist
The table's columns in order, such as description, quantity. Leave empty to take them from the rows.
Positionbboxlist
Where on the page it is: x1, y1, x2 and y2 in pixels from the page's top left, such as 100, 200, 300, 250. Leave empty for no position.

Outputs

bboxlist
Where on the page it was found: x1, y1, x2 and y2 in pixels from the page's top left.
cellslist
Every cell in the table.
document_idtext
The document's ID.
headerslist
The table's columns, in order.
page_idtext
The page's ID.
rowslist
The table's rows, each a record of column name to text, such as {"description": "Consulting", "quantity": "1"}.
table_idtext
The table's ID.
verification_messagetext
Why it failed validation, or the reviewer's note, when there is one.
verification_statustext
Whether it passed the workflow's validation rules (success or failed), or how a reviewer marked it (verified or unverified).
workflow_idtext
The workflow's ID.
Example output
{
  "bbox": [
    0,
    0,
    0,
    0
  ],
  "cells": [
    {
      "bbox": [
        0,
        0,
        0,
        0
      ],
      "cell_id": "00000001-cccc-4ccc-8ccc-000000000001",
      "col": 0,
      "header": "description",
      "is_moderated": false,
      "row": 0,
      "text": "Lodol QA line",
      "verification_message": null,
      "verification_status": "unverified"
    },
    {
      "bbox": [
        0,
        0,
        0,
        0
      ],
      "cell_id": "00000002-cccc-4ccc-8ccc-000000000002",
      "col": 1,
      "header": "quantity",
      "is_moderated": false,
      "row": 0,
      "text": "1",
      "verification_message": null,
      "verification_status": "unverified"
    },
    {
      "bbox": [
        0,
        0,
        0,
        0
      ],
      "cell_id": "00000003-cccc-4ccc-8ccc-000000000003",
      "col": 2,
      "header": "unit_price",
      "is_moderated": false,
      "row": 0,
      "text": "1.00",
      "verification_message": null,
      "verification_status": "unverified"
    },
    {
      "bbox": [
        0,
        0,
        0,
        0
      ],
      "cell_id": "00000004-cccc-4ccc-8ccc-000000000004",
      "col": 3,
      "header": "line_total",
      "is_moderated": false,
      "row": 0,
      "text": "1.00",
      "verification_message": null,
      "verification_status": "unverified"
    }
  ],
  "document_id": "22222222-2222-4222-8222-222222222222",
  "headers": [
    "description",
    "quantity",
    "unit_price",
    "line_total"
  ],
  "page_id": "33333333-3333-11f1-8333-333333333333",
  "rows": [
    {
      "description": "Lodol QA line",
      "line_total": "1.00",
      "quantity": "1",
      "unit_price": "1.00"
    }
  ],
  "table_id": "55555555-5555-11f1-8555-555555555555",
  "verification_message": null,
  "verification_status": null,
  "workflow_id": "11111111-1111-4111-8111-111111111111"
}

Add table cell

Add a cell to a table on a document page, at a row and column.

Inputs

Nanonets workflownanonets_workflow_idtextRequired
The Nanonets workflow: pick one, or give its ID (in the workflow's address in Nanonets, and in what List workflows returns).
Document IDdocument_idtextRequired
The document's ID: the document_id of the step that sent it, or of List documents.
Page IDpage_idtextRequired
The page's ID: the page_id of one of the document's pages, or of a value or table on it.
Table IDtable_idtextRequired
The table's ID: the table_id of one of the document's tables.
RowrownumberRequired
The cell's row, counting from 0.From 0 to 100000.
ColumncolumnnumberRequired
The cell's column, counting from 0.From 0 to 20.
Column nameheadertextRequired
The column the cell is in, one of the workflow's table columns.
TexttexttextRequired
The cell's text.
Positionbboxlist
Where on the page it is: x1, y1, x2 and y2 in pixels from the page's top left, such as 100, 200, 300, 250. Leave empty for no position.

Outputs

bboxlist
Where on the page it was found: x1, y1, x2 and y2 in pixels from the page's top left.
cell_idtext
The cell's ID.
colnumber
The cell's column, counting from 0.
document_idtext
The document's ID.
headertext
The column the cell is in.
page_idtext
The page's ID.
rownumber
The cell's row, counting from 0.
table_idtext
The table's ID.
texttext
The cell's text.
verification_messagetext
Why it failed validation, or the reviewer's note, when there is one.
verification_statustext
Whether it passed the workflow's validation rules (success or failed), or how a reviewer marked it (verified or unverified).
workflow_idtext
The workflow's ID.
Example output
{
  "bbox": [
    0,
    0,
    0,
    0
  ],
  "cell_id": "00000001-cccc-4ccc-8ccc-000000000001",
  "col": 0,
  "document_id": "22222222-2222-4222-8222-222222222222",
  "header": "description",
  "page_id": "33333333-3333-11f1-8333-333333333333",
  "row": 1,
  "table_id": "55555555-5555-11f1-8555-555555555555",
  "text": "Lodol QA second line",
  "verification_message": null,
  "verification_status": "unverified",
  "workflow_id": "11111111-1111-4111-8111-111111111111"
}

Approve document

Approve a document, as the Approve button in Nanonets does: its data, with any corrections, is marked as reviewed and ready for export. A rejected document can't be approved.

Inputs

Nanonets workflownanonets_workflow_idtextRequired
The Nanonets workflow: pick one, or give its ID (in the workflow's address in Nanonets, and in what List workflows returns).
Document IDdocument_idtextRequired
The document's ID: the document_id of the step that sent it, or of List documents.

Outputs

approvedtrue/false
True once approved, false once unapproved.
document_idtext
The document's ID.
messagetext
What Nanonets said, when it said anything.
workflow_idtext
The workflow's ID.
Example output
{
  "approved": true,
  "document_id": "22222222-2222-4222-8222-222222222222",
  "message": null,
  "workflow_id": "11111111-1111-4111-8111-111111111111"
}

Assign documents to reviewer

Assign one or more documents to a member of your Nanonets team to review, by their email address.

Inputs

Nanonets workflownanonets_workflow_idtextRequired
The Nanonets workflow: pick one, or give its ID (in the workflow's address in Nanonets, and in what List workflows returns).
Document IDsdocument_idslistRequired
The documents' IDs (document_id), one or more, up to 100.
Reviewer emailreviewer_emailtextRequired
The email address of the member of your Nanonets team to assign.

Outputs

document_idslist
The documents' IDs.
messagetext
What Nanonets said, when it said anything.
reviewer_emailtext
Who the documents were assigned to.
workflow_idtext
The workflow's ID.
Example output
{
  "document_ids": [
    "22222222-2222-4222-8222-222222222222"
  ],
  "message": "ok",
  "reviewer_email": "reviewer@example.com",
  "workflow_id": "11111111-1111-4111-8111-111111111111"
}

Classify image

Sort an image into the categories of one of your Nanonets image classification models: the most likely category, and how likely each one is. Upload a JPG or PNG, pick one from an earlier step, or give a link.

Inputs

Modelmodel_idtextRequired
The image classification model: pick one, or give its ID. It must be trained in Nanonets first.
ImageimagetextRequired
The image: upload a JPG or PNG, pick one from an earlier step, or give a link for Nanonets to download.

Outputs

imagetext
The image's name or link, as Nanonets read it.
labeltext
The most likely category.
model_idtext
The model that classified the image.
predictionslist
Every category, most likely first.
probabilitynumber
How likely that category is, 0 to 1.
Example output
{
  "image": "string",
  "label": "category1",
  "model_id": "00000000-0000-0000-0000-000000000000",
  "predictions": [
    {
      "label": "category1",
      "probability": 0.9
    },
    {
      "label": "category2",
      "probability": 0.1
    }
  ],
  "probability": 0.9
}

Create workflow

Create a workflow to extract data from a kind of document. Choose a ready made type (invoices, receipts, purchase orders and more come with their fields set up) or instant learning, and name the fields and table columns to extract, such as invoice_number and an invoice's line item columns. How many workflows an account holds depends on its Nanonets plan.

Inputs

DescriptiondescriptiontextRequired
What the workflow is for, as Nanonets lists it, such as Extract data from supplier invoices.
Workflow typeworkflow_typetext
What it reads. A ready made type comes with its fields set up; instant learning reads any document, with the fields you name.One of: instant_learning (Instant learning: any document, with the fields you name), invoice (Invoices), invoices_indian (Indian invoices), invoices_beta (Invoices (beta)), receipts, purchase_orders (Purchase orders), bank_statement (Bank statements), passports, driver_license (Driver licenses), bill_of_lading (Bills of lading), tables. Default: instant_learning.
Fieldsfieldslist
The fields to extract, such as invoice_number, invoice_date and total_amount, up to 30. Names take letters, digits and underscores; spaces become underscores. An instant learning workflow needs at least one before it can read a document.
Table columnstable_headerslist
The columns of the tables to extract, such as an invoice's line items: description, quantity, unit_price. Up to 20.

Outputs

created_attext
When it was created, in UTC.
descriptiontext
What the workflow is for, as it is described.
field_idsobject
Each field's ID by its name, such as {"invoice_number": "550e..."}.
field_nameslist
The names of the fields it extracts.
fieldslist
The fields it extracts.
table_capturetrue/false
Whether it captures tables, such as line items.
table_header_idsobject
Each table column's ID by its name.
table_header_nameslist
The names of its table columns.
table_headerslist
The table columns it extracts.
workflow_idtext
The workflow's ID.
Example output
{
  "created_at": "2026-10-05T20:50:03.3789054Z",
  "description": "Lodol QA workflow, safe to delete",
  "field_ids": {
    "customer_name": "77777777-7777-4777-8777-777777777777",
    "invoice_date": "a0000001-0000-4000-8000-000000000001",
    "invoice_number": "a0000002-0000-4000-8000-000000000002",
    "total_amount": "a0000003-0000-4000-8000-000000000003"
  },
  "field_names": [
    "invoice_number",
    "invoice_date",
    "total_amount",
    "customer_name"
  ],
  "fields": [
    {
      "id": "a0000002-0000-4000-8000-000000000002",
      "name": "invoice_number"
    },
    {
      "id": "a0000001-0000-4000-8000-000000000001",
      "name": "invoice_date"
    },
    {
      "id": "a0000003-0000-4000-8000-000000000003",
      "name": "total_amount"
    },
    {
      "id": "77777777-7777-4777-8777-777777777777",
      "name": "customer_name"
    }
  ],
  "table_capture": true,
  "table_header_ids": {
    "description": "a0000004-0000-4000-8000-000000000004",
    "line_total": "a0000005-0000-4000-8000-000000000005",
    "quantity": "a0000006-0000-4000-8000-000000000006",
    "unit_price": "a0000007-0000-4000-8000-000000000007"
  },
  "table_header_names": [
    "description",
    "quantity",
    "unit_price",
    "line_total"
  ],
  "table_headers": [
    {
      "id": "a0000004-0000-4000-8000-000000000004",
      "name": "description"
    },
    {
      "id": "a0000006-0000-4000-8000-000000000006",
      "name": "quantity"
    },
    {
      "id": "a0000007-0000-4000-8000-000000000007",
      "name": "unit_price"
    },
    {
      "id": "a0000005-0000-4000-8000-000000000005",
      "name": "line_total"
    }
  ],
  "workflow_id": "11111111-1111-4111-8111-111111111111"
}

Delete document

Delete a document and its extracted data from a workflow. This can't be undone.

Inputs

Nanonets workflownanonets_workflow_idtextRequired
The Nanonets workflow: pick one, or give its ID (in the workflow's address in Nanonets, and in what List workflows returns).
Document IDdocument_idtextRequired
The document's ID: the document_id of the step that sent it, or of List documents.

Outputs

deletedtrue/false
True: Nanonets deleted it.
document_idtext
The document's ID.
messagetext
What Nanonets said, when it said anything.
workflow_idtext
The workflow's ID.
Example output
{
  "deleted": true,
  "document_id": "22222222-2222-4222-8222-222222222222",
  "message": "Document deleted successfully",
  "workflow_id": "11111111-1111-4111-8111-111111111111"
}

Delete field value

Remove a wrong value from a page of a document. A page left with no values or tables shows what Nanonets first extracted again.

Inputs

Nanonets workflownanonets_workflow_idtextRequired
The Nanonets workflow: pick one, or give its ID (in the workflow's address in Nanonets, and in what List workflows returns).
Document IDdocument_idtextRequired
The document's ID: the document_id of the step that sent it, or of List documents.
Page IDpage_idtextRequired
The page's ID: the page_id of one of the document's pages, or of a value or table on it.
Value IDfield_data_idtextRequired
The value's ID: the field_data_id of one of the document's field_values.

Outputs

deletedtrue/false
True: Nanonets deleted it.
document_idtext
The document's ID.
field_data_idtext
The deleted value's ID.
messagetext
What Nanonets said, when it said anything.
page_idtext
The page's ID.
workflow_idtext
The workflow's ID.
Example output
{
  "deleted": true,
  "document_id": "22222222-2222-4222-8222-222222222222",
  "field_data_id": "44444444-4444-4444-8444-444444444444",
  "message": "Field value deleted successfully",
  "page_id": "33333333-3333-11f1-8333-333333333333",
  "workflow_id": "11111111-1111-4111-8111-111111111111"
}

Delete table

Remove a table from a page of a document. A page left with no values or tables shows what Nanonets first extracted again.

Inputs

Nanonets workflownanonets_workflow_idtextRequired
The Nanonets workflow: pick one, or give its ID (in the workflow's address in Nanonets, and in what List workflows returns).
Document IDdocument_idtextRequired
The document's ID: the document_id of the step that sent it, or of List documents.
Page IDpage_idtextRequired
The page's ID: the page_id of one of the document's pages, or of a value or table on it.
Table IDtable_idtextRequired
The table's ID: the table_id of one of the document's tables.

Outputs

deletedtrue/false
True: Nanonets deleted it.
document_idtext
The document's ID.
messagetext
What Nanonets said, when it said anything.
page_idtext
The page's ID.
table_idtext
The deleted table's ID.
workflow_idtext
The workflow's ID.
Example output
{
  "deleted": true,
  "document_id": "22222222-2222-4222-8222-222222222222",
  "message": "Table deleted successfully",
  "page_id": "33333333-3333-11f1-8333-333333333333",
  "table_id": "55555555-5555-11f1-8555-555555555555",
  "workflow_id": "11111111-1111-4111-8111-111111111111"
}

Delete table cell

Remove a cell from a table.

Inputs

Nanonets workflownanonets_workflow_idtextRequired
The Nanonets workflow: pick one, or give its ID (in the workflow's address in Nanonets, and in what List workflows returns).
Document IDdocument_idtextRequired
The document's ID: the document_id of the step that sent it, or of List documents.
Page IDpage_idtextRequired
The page's ID: the page_id of one of the document's pages, or of a value or table on it.
Table IDtable_idtextRequired
The table's ID: the table_id of one of the document's tables.
Cell IDcell_idtextRequired
The cell's ID: the cell_id of one of the table's cells.

Outputs

cell_idtext
The deleted cell's ID.
deletedtrue/false
True: Nanonets deleted it.
document_idtext
The document's ID.
messagetext
What Nanonets said, when it said anything.
page_idtext
The page's ID.
table_idtext
The table's ID.
workflow_idtext
The workflow's ID.
Example output
{
  "cell_id": "66666666-6666-11f1-8666-666666666666",
  "deleted": true,
  "document_id": "22222222-2222-4222-8222-222222222222",
  "message": null,
  "page_id": "33333333-3333-11f1-8333-333333333333",
  "table_id": "55555555-5555-11f1-8555-555555555555",
  "workflow_id": "11111111-1111-4111-8111-111111111111"
}

Delete workflow

Delete a workflow. This can't be undone.

Inputs

Nanonets workflownanonets_workflow_idtextRequired
The Nanonets workflow: pick one, or give its ID (in the workflow's address in Nanonets, and in what List workflows returns).

Outputs

deletedtrue/false
True: Nanonets deleted it.
messagetext
What Nanonets said, when it said anything.
workflow_idtext
The workflow's ID.
Example output
{
  "deleted": true,
  "message": "Workflow deleted successfully",
  "workflow_id": "11111111-1111-4111-8111-111111111111"
}

Delete workflow field

Remove one field or table column from a workflow, leaving the rest as they are.

Inputs

Nanonets workflownanonets_workflow_idtextRequired
The Nanonets workflow: pick one, or give its ID (in the workflow's address in Nanonets, and in what List workflows returns).
Fieldfield_idtextRequired
The field or table column: pick one, or give its ID.

Outputs

deletedtrue/false
True: Nanonets deleted it.
field_idtext
The deleted field's or table column's ID.
messagetext
What Nanonets said, when it said anything.
workflow_idtext
The workflow's ID.
Example output
{
  "deleted": true,
  "field_id": "77777777-7777-4777-8777-777777777777",
  "message": null,
  "workflow_id": "11111111-1111-4111-8111-111111111111"
}

Extract data from document

Send a document to a Nanonets workflow and get back what it extracted: each field's value (such as an invoice's number, date and total), every value found with its confidence and position, and each table (such as line items) as rows. Upload a PDF, image or spreadsheet, pick one from an earlier step, or give a link. Nanonets reads documents of up to three pages while the step waits and longer ones in the background, and the step waits for those too, up to the time you set. Each page uses credits from your Nanonets plan.

Inputs

Nanonets workflownanonets_workflow_idtextRequired
The Nanonets workflow: pick one, or give its ID (in the workflow's address in Nanonets, and in what List workflows returns).
DocumentdocumenttextRequired
The document: upload a PDF, image (JPG, PNG or TIFF) or spreadsheet (XLS or XLSX) of up to 20 MB, pick a file from an earlier step, or give a link for Nanonets to download.
Metadatametadatatext
Anything to keep with the document and get back with its data, such as your own reference: text, or a record written as JSON like {"customer_id": "12345"}.
Wait for resultswait_secondsnumber
How many seconds to wait for Nanonets to finish a document it processes in the background (longer than three pages), checking every 10 seconds, up to 600. Set 0 to send the document without waiting; Get document reads its data later.From 0 to 600. Default: 300.

Outputs

assigned_reviewerslist
The email addresses of its reviewers.
document_idtext
The document's ID.
field_valueslist
Every value found, with its page, position and confidence.
fieldsobject
Each field's value at a glance, by field name, such as {"invoice_number": "INV-100"}: the corrected value where a reviewer corrected one, otherwise the one Nanonets is surest of. Every value found is in field_values.
finishedtrue/false
True once Nanonets has finished with the document, whether it succeeded or failed.
metadatatext
The metadata kept with the document when it was sent: text, or a record written as JSON.
original_document_nametext
The file's name, or the link it came from.
page_countnumber
How many pages it has.
pageslist
The document's pages.
raw_document_urltext
Where Nanonets keeps the original file.
statustext
Where processing has got to: success when the data is ready, pending or processing while Nanonets works on it, failure if it could not be read.
tableslist
The tables found, such as an invoice's line items, each with its rows.
uploaded_attext
When it was sent, in UTC.
verification_messagetext
Why it failed validation, or the reviewer's note, when there is one.
verification_stagetext
The ID of the review stage the document is in. ffffffff-ffff-ffff-ffff-ffffffffffff is the approved stage.
verification_statustext
Whether the document passed the workflow's validation rules (success or failed).
workflow_idtext
The workflow's ID.
Example output
{
  "assigned_reviewers": [],
  "document_id": "22222222-2222-4222-8222-222222222222",
  "field_values": [
    {
      "bbox": [
        2173,
        485,
        2396,
        522
      ],
      "confidence": 0.4099999964237213,
      "field_data_id": "a0000008-0000-4000-8000-000000000008",
      "field_name": "invoice_date",
      "is_moderated": false,
      "page_id": "33333333-3333-11f1-8333-333333333333",
      "page_number": 1,
      "value": "2019-11-15",
      "verification_message": null,
      "verification_status": "unverified"
    },
    {
      "bbox": [
        2247,
        427,
        2399,
        457
      ],
      "confidence": 0.9991000294685364,
      "field_data_id": "a0000009-0000-4000-8000-000000000009",
      "field_name": "invoice_number",
      "is_moderated": false,
      "page_id": "33333333-3333-11f1-8333-333333333333",
      "page_number": 1,
      "value": "INV-100",
      "verification_message": null,
      "verification_status": "unverified"
    },
    {
      "bbox": [
        2241,
        2169,
        2376,
        2207
      ],
      "confidence": 0.5799999833106995,
      "field_data_id": "a000000a-0000-4000-8000-00000000000a",
      "field_name": "total_amount",
      "is_moderated": false,
      "page_id": "33333333-3333-11f1-8333-333333333333",
      "page_number": 1,
      "value": "110.00",
      "verification_message": null,
      "verification_status": "unverified"
    }
  ],
  "fields": {
    "invoice_date": "2019-11-15",
    "invoice_number": "INV-100",
    "total_amount": "110.00"
  },
  "finished": true,
  "metadata": "{\"source\": \"lodol-qa\"}",
  "original_document_name": "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-REST-api-samples/master/curl/form-recognizer/sample-invoice.pdf",
  "page_count": 1,
  "pages": [
    {
      "image_url": "https://images.nanonets.com/tr:rt-0,true/uploadedfiles/11111111-1111-4111-8111-111111111111/PredictionImages/a0000010-0000-4000-8000-000000000010-1.jpeg?ik-s=0000&ik-t=0",
      "page_id": "33333333-3333-11f1-8333-333333333333",
      "page_number": 1
    }
  ],
  "raw_document_url": "https://nanonets.s3.us-west-2.amazonaws.com/uploadedfiles/11111111-1111-4111-8111-111111111111/RawPredictions/22222222-2222-4222-8222-222222222222.pdf?X-Amz-Expires=604800&X-Amz-Signature=0000",
  "status": "success",
  "tables": [
    {
      "bbox": [
        178,
        1827,
        2374,
        1865
      ],
      "cells": [
        {
          "bbox": [
            569,
            1829,
            907,
            1862
          ],
          "cell_id": "a000000c-0000-4000-8000-00000000000c",
          "col": 1,
          "header": "description",
          "is_moderated": false,
          "row": 1,
          "text": "Test for 23 fields",
          "verification_message": null,
          "verification_status": "unverified"
        },
        {
          "bbox": [
            2213,
            1827,
            2374,
            1865
          ],
          "cell_id": "a000000d-0000-4000-8000-00000000000d",
          "col": 2,
          "header": "line_total",
          "is_moderated": false,
          "row": 1,
          "text": "$ 100.00",
          "verification_message": null,
          "verification_status": "unverified"
        },
        {
          "bbox": [
            178,
            1831,
            200,
            1859
          ],
          "cell_id": "a000000e-0000-4000-8000-00000000000e",
          "col": 3,
          "header": "quantity",
          "is_moderated": false,
          "row": 1,
          "text": "1",
          "verification_message": null,
          "verification_status": "unverified"
        },
        {
          "bbox": [
            1997,
            1831,
            2021,
            1859
          ],
          "cell_id": "a000000f-0000-4000-8000-00000000000f",
          "col": 4,
          "header": "unit_price",
          "is_moderated": false,
          "row": 1,
          "text": "1",
          "verification_message": null,
          "verification_status": "unverified"
        }
      ],
      "headers": [
        "description",
        "line_total",
        "quantity",
        "unit_price"
      ],
      "page_id": "33333333-3333-11f1-8333-333333333333",
      "page_number": 1,
      "rows": [
        {
          "description": "Test for 23 fields",
          "line_total": "$ 100.00",
          "quantity": "1",
          "unit_price": "1"
        }
      ],
      "table_id": "a000000b-0000-4000-8000-00000000000b",
      "verification_message": null,
      "verification_status": null
    }
  ],
  "uploaded_at": "2026-10-05T20:50:05.8861576Z",
  "verification_message": null,
  "verification_stage": null,
  "verification_status": "failed",
  "workflow_id": "11111111-1111-4111-8111-111111111111"
}

Get document

Get a document's status and everything Nanonets extracted from it, with any corrections reviewers made, by its ID. It can wait for a document still being processed. Use it for a document sent without waiting, or one that arrived another way, such as by email.

Inputs

Nanonets workflownanonets_workflow_idtextRequired
The Nanonets workflow: pick one, or give its ID (in the workflow's address in Nanonets, and in what List workflows returns).
Document IDdocument_idtextRequired
The document's ID: the document_id of the step that sent it, or of List documents.
Wait for resultswait_secondsnumber
How many seconds to wait for a document Nanonets is still processing, checking every 10 seconds, up to 600. Leave it 0 to read it as it is now.From 0 to 600. Default: 0.

Outputs

assigned_reviewerslist
The email addresses of its reviewers.
document_idtext
The document's ID.
field_valueslist
Every value found, with its page, position and confidence.
fieldsobject
Each field's value at a glance, by field name, such as {"invoice_number": "INV-100"}: the corrected value where a reviewer corrected one, otherwise the one Nanonets is surest of. Every value found is in field_values.
finishedtrue/false
True once Nanonets has finished with the document, whether it succeeded or failed.
metadatatext
The metadata kept with the document when it was sent: text, or a record written as JSON.
original_document_nametext
The file's name, or the link it came from.
page_countnumber
How many pages it has.
pageslist
The document's pages.
raw_document_urltext
Where Nanonets keeps the original file.
statustext
Where processing has got to: success when the data is ready, pending or processing while Nanonets works on it, failure if it could not be read.
tableslist
The tables found, such as an invoice's line items, each with its rows.
uploaded_attext
When it was sent, in UTC.
verification_messagetext
Why it failed validation, or the reviewer's note, when there is one.
verification_stagetext
The ID of the review stage the document is in. ffffffff-ffff-ffff-ffff-ffffffffffff is the approved stage.
verification_statustext
Whether the document passed the workflow's validation rules (success or failed).
workflow_idtext
The workflow's ID.
Example output
{
  "assigned_reviewers": [],
  "document_id": "22222222-2222-4222-8222-222222222222",
  "field_values": [
    {
      "bbox": [
        2173,
        485,
        2396,
        522
      ],
      "confidence": 0.4099999964237213,
      "field_data_id": "a0000008-0000-4000-8000-000000000008",
      "field_name": "invoice_date",
      "is_moderated": false,
      "page_id": "33333333-3333-11f1-8333-333333333333",
      "page_number": 1,
      "value": "2019-11-15",
      "verification_message": null,
      "verification_status": "unverified"
    },
    {
      "bbox": [
        2247,
        427,
        2399,
        457
      ],
      "confidence": 0.9991000294685364,
      "field_data_id": "a0000009-0000-4000-8000-000000000009",
      "field_name": "invoice_number",
      "is_moderated": false,
      "page_id": "33333333-3333-11f1-8333-333333333333",
      "page_number": 1,
      "value": "INV-100",
      "verification_message": null,
      "verification_status": "unverified"
    },
    {
      "bbox": [
        2241,
        2169,
        2376,
        2207
      ],
      "confidence": 0.5799999833106995,
      "field_data_id": "a000000a-0000-4000-8000-00000000000a",
      "field_name": "total_amount",
      "is_moderated": false,
      "page_id": "33333333-3333-11f1-8333-333333333333",
      "page_number": 1,
      "value": "110.00",
      "verification_message": null,
      "verification_status": "unverified"
    }
  ],
  "fields": {
    "invoice_date": "2019-11-15",
    "invoice_number": "INV-100",
    "total_amount": "110.00"
  },
  "finished": true,
  "metadata": "{\"source\": \"lodol-qa\"}",
  "original_document_name": "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-REST-api-samples/master/curl/form-recognizer/sample-invoice.pdf",
  "page_count": 1,
  "pages": [
    {
      "image_url": "https://images.nanonets.com/tr:rt-0,true/uploadedfiles/11111111-1111-4111-8111-111111111111/PredictionImages/a0000010-0000-4000-8000-000000000010-1.jpeg?ik-s=0000&ik-t=0",
      "page_id": "33333333-3333-11f1-8333-333333333333",
      "page_number": 1
    }
  ],
  "raw_document_url": "https://nanonets.s3.us-west-2.amazonaws.com/uploadedfiles/11111111-1111-4111-8111-111111111111/RawPredictions/22222222-2222-4222-8222-222222222222.pdf?X-Amz-Expires=604800&X-Amz-Signature=0000",
  "status": "success",
  "tables": [
    {
      "bbox": [
        178,
        1827,
        2374,
        1865
      ],
      "cells": [
        {
          "bbox": [
            569,
            1829,
            907,
            1862
          ],
          "cell_id": "a000000c-0000-4000-8000-00000000000c",
          "col": 1,
          "header": "description",
          "is_moderated": false,
          "row": 1,
          "text": "Test for 23 fields",
          "verification_message": null,
          "verification_status": "unverified"
        },
        {
          "bbox": [
            2213,
            1827,
            2374,
            1865
          ],
          "cell_id": "a000000d-0000-4000-8000-00000000000d",
          "col": 2,
          "header": "line_total",
          "is_moderated": false,
          "row": 1,
          "text": "$ 100.00",
          "verification_message": null,
          "verification_status": "unverified"
        },
        {
          "bbox": [
            178,
            1831,
            200,
            1859
          ],
          "cell_id": "a000000e-0000-4000-8000-00000000000e",
          "col": 3,
          "header": "quantity",
          "is_moderated": false,
          "row": 1,
          "text": "1",
          "verification_message": null,
          "verification_status": "unverified"
        },
        {
          "bbox": [
            1997,
            1831,
            2021,
            1859
          ],
          "cell_id": "a000000f-0000-4000-8000-00000000000f",
          "col": 4,
          "header": "unit_price",
          "is_moderated": false,
          "row": 1,
          "text": "1",
          "verification_message": null,
          "verification_status": "unverified"
        }
      ],
      "headers": [
        "description",
        "line_total",
        "quantity",
        "unit_price"
      ],
      "page_id": "33333333-3333-11f1-8333-333333333333",
      "page_number": 1,
      "rows": [
        {
          "description": "Test for 23 fields",
          "line_total": "$ 100.00",
          "quantity": "1",
          "unit_price": "1"
        }
      ],
      "table_id": "a000000b-0000-4000-8000-00000000000b",
      "verification_message": null,
      "verification_status": null
    }
  ],
  "uploaded_at": "2026-10-05T20:50:05.8861576Z",
  "verification_message": null,
  "verification_stage": null,
  "verification_status": "failed",
  "workflow_id": "11111111-1111-4111-8111-111111111111"
}

Get document page

Get one page of a document, by its ID, with the field values and tables extracted from it. Useful for reading a long document a page at a time.

Inputs

Nanonets workflownanonets_workflow_idtextRequired
The Nanonets workflow: pick one, or give its ID (in the workflow's address in Nanonets, and in what List workflows returns).
Document IDdocument_idtextRequired
The document's ID: the document_id of the step that sent it, or of List documents.
Page IDpage_idtextRequired
The page's ID: the page_id of one of the document's pages, or of a value or table on it.

Outputs

document_idtext
The document's ID.
field_valueslist
Every value found, with its page, position and confidence.
fieldsobject
Each field's value at a glance, by field name, such as {"invoice_number": "INV-100"}: the corrected value where a reviewer corrected one, otherwise the one Nanonets is surest of. Every value found is in field_values.
image_urltext
A link to the page's image.
page_idtext
The page's ID.
page_numbernumber
The page's number, as Nanonets numbers pages.
tableslist
The tables found, such as an invoice's line items, each with its rows.
workflow_idtext
The workflow's ID.
Example output
{
  "document_id": "22222222-2222-4222-8222-222222222222",
  "field_values": [
    {
      "bbox": [
        2173,
        485,
        2396,
        522
      ],
      "confidence": 0.4099999964237213,
      "field_data_id": "a0000008-0000-4000-8000-000000000008",
      "field_name": "invoice_date",
      "is_moderated": false,
      "page_id": "33333333-3333-11f1-8333-333333333333",
      "page_number": 0,
      "value": "2019-11-15",
      "verification_message": null,
      "verification_status": "unverified"
    },
    {
      "bbox": [
        2247,
        427,
        2399,
        457
      ],
      "confidence": 0.9991000294685364,
      "field_data_id": "a0000009-0000-4000-8000-000000000009",
      "field_name": "invoice_number",
      "is_moderated": false,
      "page_id": "33333333-3333-11f1-8333-333333333333",
      "page_number": 0,
      "value": "INV-100",
      "verification_message": null,
      "verification_status": "unverified"
    },
    {
      "bbox": [
        2241,
        2169,
        2376,
        2207
      ],
      "confidence": 0.5799999833106995,
      "field_data_id": "a000000a-0000-4000-8000-00000000000a",
      "field_name": "total_amount",
      "is_moderated": false,
      "page_id": "33333333-3333-11f1-8333-333333333333",
      "page_number": 0,
      "value": "110.00",
      "verification_message": null,
      "verification_status": "unverified"
    }
  ],
  "fields": {
    "invoice_date": "2019-11-15",
    "invoice_number": "INV-100",
    "total_amount": "110.00"
  },
  "image_url": "https://images.nanonets.com/tr:rt-0,true/uploadedfiles/11111111-1111-4111-8111-111111111111/PredictionImages/a0000010-0000-4000-8000-000000000010-1.jpeg?ik-s=0000&ik-t=0",
  "page_id": "33333333-3333-11f1-8333-333333333333",
  "page_number": 0,
  "tables": [
    {
      "bbox": [
        178,
        1827,
        2374,
        1865
      ],
      "cells": [
        {
          "bbox": [
            569,
            1829,
            907,
            1862
          ],
          "cell_id": "a000000c-0000-4000-8000-00000000000c",
          "col": 1,
          "header": "description",
          "is_moderated": false,
          "row": 1,
          "text": "Test for 23 fields",
          "verification_message": null,
          "verification_status": "unverified"
        },
        {
          "bbox": [
            2213,
            1827,
            2374,
            1865
          ],
          "cell_id": "a000000d-0000-4000-8000-00000000000d",
          "col": 2,
          "header": "line_total",
          "is_moderated": false,
          "row": 1,
          "text": "$ 100.00",
          "verification_message": null,
          "verification_status": "unverified"
        },
        {
          "bbox": [
            178,
            1831,
            200,
            1859
          ],
          "cell_id": "a000000e-0000-4000-8000-00000000000e",
          "col": 3,
          "header": "quantity",
          "is_moderated": false,
          "row": 1,
          "text": "1",
          "verification_message": null,
          "verification_status": "unverified"
        },
        {
          "bbox": [
            1997,
            1831,
            2021,
            1859
          ],
          "cell_id": "a000000f-0000-4000-8000-00000000000f",
          "col": 4,
          "header": "unit_price",
          "is_moderated": false,
          "row": 1,
          "text": "1",
          "verification_message": null,
          "verification_status": "unverified"
        }
      ],
      "headers": [
        "description",
        "line_total",
        "quantity",
        "unit_price"
      ],
      "page_id": "33333333-3333-11f1-8333-333333333333",
      "page_number": 0,
      "rows": [
        {
          "description": "Test for 23 fields",
          "line_total": "$ 100.00",
          "quantity": "1",
          "unit_price": "1"
        }
      ],
      "table_id": "a000000b-0000-4000-8000-00000000000b",
      "verification_message": null,
      "verification_status": null
    }
  ],
  "workflow_id": "11111111-1111-4111-8111-111111111111"
}

Get workflow

Get a workflow's description, the fields and table columns it extracts with their IDs, and whether it captures tables.

Inputs

Nanonets workflownanonets_workflow_idtextRequired
The Nanonets workflow: pick one, or give its ID (in the workflow's address in Nanonets, and in what List workflows returns).

Outputs

created_attext
When it was created, in UTC.
descriptiontext
What the workflow is for, as it is described.
field_idsobject
Each field's ID by its name, such as {"invoice_number": "550e..."}.
field_nameslist
The names of the fields it extracts.
fieldslist
The fields it extracts.
table_capturetrue/false
Whether it captures tables, such as line items.
table_header_idsobject
Each table column's ID by its name.
table_header_nameslist
The names of its table columns.
table_headerslist
The table columns it extracts.
workflow_idtext
The workflow's ID.
Example output
{
  "created_at": "2026-10-05T20:50:03.3789054Z",
  "description": "Lodol QA workflow, safe to delete",
  "field_ids": {
    "customer_name": "77777777-7777-4777-8777-777777777777",
    "invoice_date": "a0000001-0000-4000-8000-000000000001",
    "invoice_number": "a0000002-0000-4000-8000-000000000002",
    "total_amount": "a0000003-0000-4000-8000-000000000003"
  },
  "field_names": [
    "customer_name",
    "invoice_date",
    "invoice_number",
    "total_amount"
  ],
  "fields": [
    {
      "id": "77777777-7777-4777-8777-777777777777",
      "name": "customer_name"
    },
    {
      "id": "a0000001-0000-4000-8000-000000000001",
      "name": "invoice_date"
    },
    {
      "id": "a0000002-0000-4000-8000-000000000002",
      "name": "invoice_number"
    },
    {
      "id": "a0000003-0000-4000-8000-000000000003",
      "name": "total_amount"
    }
  ],
  "table_capture": true,
  "table_header_ids": {
    "description": "a0000004-0000-4000-8000-000000000004",
    "line_total": "a0000005-0000-4000-8000-000000000005",
    "quantity": "a0000006-0000-4000-8000-000000000006",
    "unit_price": "a0000007-0000-4000-8000-000000000007"
  },
  "table_header_names": [
    "description",
    "line_total",
    "quantity",
    "unit_price"
  ],
  "table_headers": [
    {
      "id": "a0000004-0000-4000-8000-000000000004",
      "name": "description"
    },
    {
      "id": "a0000005-0000-4000-8000-000000000005",
      "name": "line_total"
    },
    {
      "id": "a0000006-0000-4000-8000-000000000006",
      "name": "quantity"
    },
    {
      "id": "a0000007-0000-4000-8000-000000000007",
      "name": "unit_price"
    }
  ],
  "workflow_id": "11111111-1111-4111-8111-111111111111"
}

List database connections

List the databases connected to your Nanonets account for lookups and exports (such as PostgreSQL or MySQL), without their hosts or passwords.

Inputs

None.

Outputs

connectionslist
The databases connected to the account. Nanonets never shows their hosts or passwords.
countnumber
How many connections there are.
Example output
{
  "connections": [
    {
      "connection_id": "4013d779-c2f9-11eb-ba65-122daa108bc5",
      "database_name": "airtable",
      "is_internal": false,
      "name": "ps1",
      "status": "active",
      "type": "postgresql"
    }
  ],
  "count": 1
}

List documents

List a workflow's documents, newest first, up to 100 a page, with each one's status, file name, review stage and page IDs. Get document returns a document's extracted data. A document just sent can take a few seconds to be listed.

Inputs

Nanonets workflownanonets_workflow_idtextRequired
The Nanonets workflow: pick one, or give its ID (in the workflow's address in Nanonets, and in what List workflows returns).
Page of the listpagenumber
Which page of the list to get, from 1.From 1 to 100000. Default: 1.
Documents a pagelimitnumber
How many documents a page holds, up to 100.From 1 to 100. Default: 10.

Outputs

countnumber
How many documents are on this page.
documentslist
The documents on this page of the list, newest first. Get document has each one's data.
has_moretrue/false
True when a later page has more documents.
pagenumber
Which page of the list this is, from 1.
page_sizenumber
How many documents a page holds.
total_countnumber
How many documents the workflow has.
workflow_idtext
The workflow's ID.
Example output
{
  "count": 1,
  "documents": [
    {
      "assigned_reviewers": [
        "reviewer@example.com"
      ],
      "document_id": "22222222-2222-4222-8222-222222222222",
      "finished": true,
      "metadata": "{\"source\": \"lodol-qa\"}",
      "original_document_name": "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-REST-api-samples/master/curl/form-recognizer/sample-invoice.pdf",
      "page_count": 1,
      "page_ids": [
        "33333333-3333-11f1-8333-333333333333"
      ],
      "raw_document_url": "uploadedfiles/11111111-1111-4111-8111-111111111111/RawPredictions/22222222-2222-4222-8222-222222222222.pdf",
      "status": "success",
      "uploaded_at": "2026-10-05T20:50:05.8861576Z",
      "verification_message": null,
      "verification_stage": "a0000015-0000-4000-8000-000000000015",
      "verification_status": "failed"
    }
  ],
  "has_more": false,
  "page": 1,
  "page_size": 10,
  "total_count": 1,
  "workflow_id": "11111111-1111-4111-8111-111111111111"
}

List documents by date

List the documents a workflow received between two days, up to 31 days apart (in UTC), with whether each is approved and its final field values after review. Good for a daily export of approved documents. Leave the dates empty for today.

Inputs

Nanonets workflownanonets_workflow_idtextRequired
The Nanonets workflow: pick one, or give its ID (in the workflow's address in Nanonets, and in what List workflows returns).
Start datestart_datedate
The first day, in UTC. Leave it empty for the end date.
End dateend_datedate
The last day, in UTC. Leave it empty for today.

Outputs

approved_countnumber
How many of them are approved.
countnumber
How many documents there are.
documentslist
The documents sent between the two days.
end_datetext
The last day listed, YYYY-MM-DD in UTC.
start_datetext
The first day listed, YYYY-MM-DD in UTC.
workflow_idtext
The workflow's ID.
Example output
{
  "approved_count": 0,
  "count": 1,
  "documents": [
    {
      "approval_status": null,
      "approved": false,
      "assigned_reviewers": [
        "reviewer@example.com"
      ],
      "document_id": "22222222-2222-4222-8222-222222222222",
      "export_status": null,
      "fields": {
        "invoice_date": "2019-11-15",
        "invoice_number": "INV-100",
        "total_amount": "110.00"
      },
      "metadata": "{\"source\": \"lodol-qa\"}",
      "original_document_name": "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-REST-api-samples/master/curl/form-recognizer/sample-invoice.pdf",
      "page_count": 1,
      "page_ids": [
        "33333333-3333-11f1-8333-333333333333"
      ],
      "upload_channel": "api",
      "uploaded_by": "reviewer@example.com",
      "uploaded_on": "2026-10-05",
      "verified_by": null
    }
  ],
  "end_date": "2026-10-06",
  "start_date": "2026-10-04",
  "workflow_id": "11111111-1111-4111-8111-111111111111"
}

List image classification models

List your Nanonets image classification models, with their categories and whether each is ready to classify images.

Inputs

None.

Outputs

countnumber
How many models there are.
modelslist
The account's image classification models.
Example output
{
  "count": 1,
  "models": [
    {
      "categories": [
        {
          "count": 0,
          "name": "category1"
        },
        {
          "count": 0,
          "name": "category2"
        }
      ],
      "category_names": [
        "category1",
        "category2"
      ],
      "model_id": "00000000-0000-0000-0000-000000000000",
      "model_type": "classification",
      "ready": false,
      "state": 0,
      "state_label": "Created, with no training images yet"
    }
  ]
}

List workflow types

List the kinds of workflow Nanonets can create: instant learning for any document, or one ready made for invoices, receipts, purchase orders, bank statements, passports, driver licenses, bills of lading or tables.

Inputs

None.

Outputs

countnumber
How many types there are.
workflow_typeslist
The kinds of workflow Nanonets can create.
Example output
{
  "count": 11,
  "workflow_types": [
    {
      "description": "Extract data from invoices. Comes with pre-configured fields.",
      "name": "Invoice",
      "workflow_type": "invoice"
    },
    {
      "description": "Extract data from Indian invoices. Comes with pre-configured fields.",
      "name": "Indian Invoice",
      "workflow_type": "invoices_indian"
    },
    {
      "description": "Extract data from driver licenses. Comes with pre-configured fields.",
      "name": "Driver License",
      "workflow_type": "driver_license"
    },
    {
      "description": "Extract data from bank statements. Comes with pre-configured fields.",
      "name": "Bank Statement",
      "workflow_type": "bank_statement"
    },
    {
      "description": "Train model instantly with a few examples (default workflow type). Requires field configuration.",
      "name": "Instant Learning",
      "workflow_type": "instant_learning"
    },
    {
      "description": "Extract data from invoices using beta features. Comes with pre-configured fields.",
      "name": "Invoice (Beta)",
      "workflow_type": "invoices_beta"
    },
    {
      "description": "Extract tabular data from documents. Comes with pre-configured fields.",
      "name": "Tables",
      "workflow_type": "tables"
    },
    {
      "description": "Extract data from receipts. Comes with pre-configured fields.",
      "name": "Receipt",
      "workflow_type": "receipts"
    },
    {
      "description": "Extract data from purchase orders. Comes with pre-configured fields.",
      "name": "Purchase Order",
      "workflow_type": "purchase_orders"
    },
    {
      "description": "Extract data from passports. Comes with pre-configured fields.",
      "name": "Passport",
      "workflow_type": "passports"
    },
    {
      "description": "Extract data from bills of lading. Comes with pre-configured fields.",
      "name": "Bill of Lading",
      "workflow_type": "bill_of_lading"
    }
  ]
}

List workflows

List the workflows in your Nanonets account, each with the fields and table columns it extracts.

Inputs

None.

Outputs

countnumber
How many workflows there are.
workflowslist
The account's workflows.
Example output
{
  "count": 1,
  "workflows": [
    {
      "created_at": "2026-10-05T20:50:03.3789054Z",
      "description": "Lodol QA workflow, safe to delete",
      "field_ids": {
        "customer_name": "77777777-7777-4777-8777-777777777777",
        "invoice_date": "a0000001-0000-4000-8000-000000000001",
        "invoice_number": "a0000002-0000-4000-8000-000000000002",
        "total_amount": "a0000003-0000-4000-8000-000000000003"
      },
      "field_names": [
        "customer_name",
        "invoice_date",
        "invoice_number",
        "total_amount"
      ],
      "fields": [
        {
          "id": "77777777-7777-4777-8777-777777777777",
          "name": "customer_name"
        },
        {
          "id": "a0000001-0000-4000-8000-000000000001",
          "name": "invoice_date"
        },
        {
          "id": "a0000002-0000-4000-8000-000000000002",
          "name": "invoice_number"
        },
        {
          "id": "a0000003-0000-4000-8000-000000000003",
          "name": "total_amount"
        }
      ],
      "table_capture": true,
      "table_header_ids": {
        "description": "a0000004-0000-4000-8000-000000000004",
        "line_total": "a0000005-0000-4000-8000-000000000005",
        "quantity": "a0000006-0000-4000-8000-000000000006",
        "unit_price": "a0000007-0000-4000-8000-000000000007"
      },
      "table_header_names": [
        "description",
        "line_total",
        "quantity",
        "unit_price"
      ],
      "table_headers": [
        {
          "id": "a0000004-0000-4000-8000-000000000004",
          "name": "description"
        },
        {
          "id": "a0000005-0000-4000-8000-000000000005",
          "name": "line_total"
        },
        {
          "id": "a0000006-0000-4000-8000-000000000006",
          "name": "quantity"
        },
        {
          "id": "a0000007-0000-4000-8000-000000000007",
          "name": "unit_price"
        }
      ],
      "workflow_id": "11111111-1111-4111-8111-111111111111"
    }
  ]
}

Rename workflow field

Rename one of a workflow's fields or table columns, keeping its ID.

Inputs

Nanonets workflownanonets_workflow_idtextRequired
The Nanonets workflow: pick one, or give its ID (in the workflow's address in Nanonets, and in what List workflows returns).
Fieldfield_idtextRequired
The field or table column: pick one, or give its ID.
New namenametextRequired
The new name: letters, digits and underscores; spaces become underscores.

Outputs

field_idtext
The field's or table column's ID.
nametext
Its new name.
workflow_idtext
The workflow's ID.
Example output
{
  "field_id": "77777777-7777-4777-8777-777777777777",
  "name": "customer",
  "workflow_id": "11111111-1111-4111-8111-111111111111"
}

Retry document export

Send documents to the workflow's exports again (such as a spreadsheet or an accounting system), for example after an export failed.

Inputs

Nanonets workflownanonets_workflow_idtextRequired
The Nanonets workflow: pick one, or give its ID (in the workflow's address in Nanonets, and in what List workflows returns).
Document IDsdocument_idslistRequired
The documents' IDs (document_id), one or more, up to 100.

Outputs

document_idslist
The documents' IDs.
messagetext
What Nanonets said, when it said anything.
workflow_idtext
The workflow's ID.
Example output
{
  "document_ids": [
    "22222222-2222-4222-8222-222222222222"
  ],
  "message": null,
  "workflow_id": "11111111-1111-4111-8111-111111111111"
}

Retry document extraction

Have Nanonets extract documents' data again, for example after changing the workflow's fields or AI guidelines. Nanonets refuses a document sent less than five minutes ago. Each page uses credits again.

Inputs

Nanonets workflownanonets_workflow_idtextRequired
The Nanonets workflow: pick one, or give its ID (in the workflow's address in Nanonets, and in what List workflows returns).
Document IDsdocument_idslistRequired
The documents' IDs (document_id), one or more, up to 100.

Outputs

document_idslist
The documents' IDs.
messagetext
What Nanonets said, when it said anything.
workflow_idtext
The workflow's ID.
Example output
{
  "document_ids": [
    "22222222-2222-4222-8222-222222222222"
  ],
  "message": null,
  "workflow_id": "11111111-1111-4111-8111-111111111111"
}

Run database query

Run an SQL query on a database connected to your Nanonets account, such as looking up a vendor before approving an invoice, and get back its rows. The query runs as written, so one that changes data changes it.

Inputs

Database connectiondatabase_connection_idtextRequired
The database, one connected to your Nanonets account: pick one, or give its ID.
QueryquerytextRequired
The SQL query, such as SELECT * FROM vendors WHERE name = 'Contoso'. It runs as written.

Outputs

columnslist
The columns of the first row.
connection_idtext
The connection the query ran on.
countnumber
How many rows it returned.
rowslist
The rows the query returned, each a record.
Example output
{
  "columns": [
    "birthplace",
    "dob",
    "doi",
    "file",
    "firstname",
    "mrz",
    "nationality",
    "passport",
    "sex",
    "surname"
  ],
  "connection_id": "4013d779-c2f9-11eb-ba65-122daa108bc5",
  "count": 1,
  "rows": [
    {
      "birthplace": null,
      "dob": "29/01/2019",
      "doi": "124",
      "file": "passport.jpg",
      "firstname": "Jane",
      "mrz": null,
      "nationality": null,
      "passport": "X1234567",
      "sex": null,
      "surname": "Doe"
    }
  ]
}

Set AI guidelines

Give an instant learning workflow instructions for extracting its fields and tables, such as to write dates as YYYY-MM-DD or to only extract amounts in USD. Both sets of instructions are replaced: leave one empty to clear it.

Inputs

Nanonets workflownanonets_workflow_idtextRequired
The Nanonets workflow: pick one, or give its ID (in the workflow's address in Nanonets, and in what List workflows returns).
Instructions for fieldsfield_instructionstext
How to extract the fields, such as: Write dates as YYYY-MM-DD. Only extract amounts in USD.
Instructions for tablestable_instructionstext
How to extract the tables, such as: Include an item's full description even when it spans lines.

Outputs

field_instructionstext
The instructions for fields.
messagetext
What Nanonets said, when it said anything.
table_instructionstext
The instructions for tables.
workflow_idtext
The workflow's ID.
Example output
{
  "field_instructions": "Write dates as YYYY-MM-DD.",
  "message": null,
  "table_instructions": "Extract every line item, one row each.",
  "workflow_id": "11111111-1111-4111-8111-111111111111"
}

Set workflow fields

Set the fields and table columns a workflow extracts, such as invoice_number, total_amount and the line items' columns. It replaces every field and table column the workflow had: any left out are removed. Up to 30 fields and 20 table columns; names take letters, digits and underscores.

Inputs

Nanonets workflownanonets_workflow_idtextRequired
The Nanonets workflow: pick one, or give its ID (in the workflow's address in Nanonets, and in what List workflows returns).
FieldsfieldslistRequired
Every field to extract, such as invoice_number, invoice_date and total_amount, up to 30. Names take letters, digits and underscores; spaces become underscores.
Table columnstable_headerslist
The columns of the tables to extract, such as an invoice's line items: description, quantity, unit_price. Up to 20.

Outputs

created_attext
When it was created, in UTC.
descriptiontext
What the workflow is for, as it is described.
field_idsobject
Each field's ID by its name, such as {"invoice_number": "550e..."}.
field_nameslist
The names of the fields it extracts.
fieldslist
The fields it extracts.
table_capturetrue/false
Whether it captures tables, such as line items.
table_header_idsobject
Each table column's ID by its name.
table_header_nameslist
The names of its table columns.
table_headerslist
The table columns it extracts.
workflow_idtext
The workflow's ID.
Example output
{
  "created_at": "2026-10-05T20:50:03.3789054Z",
  "description": "Lodol QA workflow, safe to delete",
  "field_ids": {
    "customer_name": "77777777-7777-4777-8777-777777777777",
    "invoice_date": "a0000001-0000-4000-8000-000000000001",
    "invoice_number": "a0000002-0000-4000-8000-000000000002",
    "total_amount": "a0000003-0000-4000-8000-000000000003"
  },
  "field_names": [
    "invoice_number",
    "invoice_date",
    "total_amount",
    "customer_name"
  ],
  "fields": [
    {
      "id": "a0000002-0000-4000-8000-000000000002",
      "name": "invoice_number"
    },
    {
      "id": "a0000001-0000-4000-8000-000000000001",
      "name": "invoice_date"
    },
    {
      "id": "a0000003-0000-4000-8000-000000000003",
      "name": "total_amount"
    },
    {
      "id": "77777777-7777-4777-8777-777777777777",
      "name": "customer_name"
    }
  ],
  "table_capture": true,
  "table_header_ids": {
    "description": "a0000004-0000-4000-8000-000000000004",
    "line_total": "a0000005-0000-4000-8000-000000000005",
    "quantity": "a0000006-0000-4000-8000-000000000006",
    "unit_price": "a0000007-0000-4000-8000-000000000007"
  },
  "table_header_names": [
    "description",
    "quantity",
    "unit_price",
    "line_total"
  ],
  "table_headers": [
    {
      "id": "a0000004-0000-4000-8000-000000000004",
      "name": "description"
    },
    {
      "id": "a0000006-0000-4000-8000-000000000006",
      "name": "quantity"
    },
    {
      "id": "a0000007-0000-4000-8000-000000000007",
      "name": "unit_price"
    },
    {
      "id": "a0000005-0000-4000-8000-000000000005",
      "name": "line_total"
    }
  ],
  "workflow_id": "11111111-1111-4111-8111-111111111111"
}

Unapprove document

Take an approved document back to unapproved, so it can be reviewed again. It can't reject a document.

Inputs

Nanonets workflownanonets_workflow_idtextRequired
The Nanonets workflow: pick one, or give its ID (in the workflow's address in Nanonets, and in what List workflows returns).
Document IDdocument_idtextRequired
The document's ID: the document_id of the step that sent it, or of List documents.

Outputs

approvedtrue/false
True once approved, false once unapproved.
document_idtext
The document's ID.
messagetext
What Nanonets said, when it said anything.
workflow_idtext
The workflow's ID.
Example output
{
  "approved": false,
  "document_id": "22222222-2222-4222-8222-222222222222",
  "message": null,
  "workflow_id": "11111111-1111-4111-8111-111111111111"
}

Update field value

Correct a value Nanonets extracted, by its value ID (field_data_id). Nanonets keeps the original and the correction in the document's moderation history.

Inputs

Nanonets workflownanonets_workflow_idtextRequired
The Nanonets workflow: pick one, or give its ID (in the workflow's address in Nanonets, and in what List workflows returns).
Document IDdocument_idtextRequired
The document's ID: the document_id of the step that sent it, or of List documents.
Page IDpage_idtextRequired
The page's ID: the page_id of one of the document's pages, or of a value or table on it.
Value IDfield_data_idtextRequired
The value's ID: the field_data_id of one of the document's field_values.
New valuevaluetextRequired
The corrected value, as text.

Outputs

bboxlist
Where on the page it was found: x1, y1, x2 and y2 in pixels from the page's top left.
confidencenumber
How sure Nanonets is of the value, 0 to 1.
document_idtext
The document's ID.
field_data_idtext
The value's ID.
field_nametext
The field the value is for.
page_idtext
The page's ID.
valuetext
The value, as text.
verification_messagetext
Why it failed validation, or the reviewer's note, when there is one.
verification_statustext
Whether it passed the workflow's validation rules (success or failed), or how a reviewer marked it (verified or unverified).
workflow_idtext
The workflow's ID.
Example output
{
  "bbox": [
    0,
    0,
    0,
    0
  ],
  "confidence": 1,
  "document_id": "22222222-2222-4222-8222-222222222222",
  "field_data_id": "44444444-4444-4444-8444-444444444444",
  "field_name": "invoice_number",
  "page_id": "33333333-3333-11f1-8333-333333333333",
  "value": "LODOL-QA-2",
  "verification_message": null,
  "verification_status": "unverified",
  "workflow_id": "11111111-1111-4111-8111-111111111111"
}

Update table cell

Correct a table cell's text, by its cell ID.

Inputs

Nanonets workflownanonets_workflow_idtextRequired
The Nanonets workflow: pick one, or give its ID (in the workflow's address in Nanonets, and in what List workflows returns).
Document IDdocument_idtextRequired
The document's ID: the document_id of the step that sent it, or of List documents.
Page IDpage_idtextRequired
The page's ID: the page_id of one of the document's pages, or of a value or table on it.
Table IDtable_idtextRequired
The table's ID: the table_id of one of the document's tables.
Cell IDcell_idtextRequired
The cell's ID: the cell_id of one of the table's cells.
New texttexttextRequired
The cell's corrected text.

Outputs

bboxlist
Where on the page it was found: x1, y1, x2 and y2 in pixels from the page's top left.
cell_idtext
The cell's ID.
colnumber
The cell's column, counting from 0.
document_idtext
The document's ID.
headertext
The column the cell is in.
page_idtext
The page's ID.
rownumber
The cell's row, counting from 0.
table_idtext
The table's ID.
texttext
The cell's text.
verification_messagetext
Why it failed validation, or the reviewer's note, when there is one.
verification_statustext
Whether it passed the workflow's validation rules (success or failed), or how a reviewer marked it (verified or unverified).
workflow_idtext
The workflow's ID.
Example output
{
  "bbox": [
    0,
    0,
    0,
    0
  ],
  "cell_id": "66666666-6666-11f1-8666-666666666666",
  "col": 0,
  "document_id": "22222222-2222-4222-8222-222222222222",
  "header": "description",
  "page_id": "33333333-3333-11f1-8333-333333333333",
  "row": 1,
  "table_id": "55555555-5555-11f1-8555-555555555555",
  "text": "Lodol QA second line, corrected",
  "verification_message": null,
  "verification_status": "unverified",
  "workflow_id": "11111111-1111-4111-8111-111111111111"
}

Update workflow

Change a workflow's description, or turn table capture (such as line items) on or off.

Inputs

Nanonets workflownanonets_workflow_idtextRequired
The Nanonets workflow: pick one, or give its ID (in the workflow's address in Nanonets, and in what List workflows returns).
Descriptiondescriptiontext
A new description. Leave empty to keep the one it has.
Capture tablestable_capturetrue/false
Turn table capture (such as an invoice's line items) on or off. Leave it unset to keep the setting the workflow has.

Outputs

created_attext
When it was created, in UTC.
descriptiontext
What the workflow is for, as it is described.
field_idsobject
Each field's ID by its name, such as {"invoice_number": "550e..."}.
field_nameslist
The names of the fields it extracts.
fieldslist
The fields it extracts.
table_capturetrue/false
Whether it captures tables, such as line items.
table_header_idsobject
Each table column's ID by its name.
table_header_nameslist
The names of its table columns.
table_headerslist
The table columns it extracts.
workflow_idtext
The workflow's ID.
Example output
{
  "created_at": "2026-10-05T20:50:03.3789054Z",
  "description": "Lodol QA workflow, safe to delete (updated)",
  "field_ids": {
    "customer_name": "77777777-7777-4777-8777-777777777777",
    "invoice_date": "a0000001-0000-4000-8000-000000000001",
    "invoice_number": "a0000002-0000-4000-8000-000000000002",
    "total_amount": "a0000003-0000-4000-8000-000000000003"
  },
  "field_names": [
    "customer_name",
    "invoice_date",
    "invoice_number",
    "total_amount"
  ],
  "fields": [
    {
      "id": "77777777-7777-4777-8777-777777777777",
      "name": "customer_name"
    },
    {
      "id": "a0000001-0000-4000-8000-000000000001",
      "name": "invoice_date"
    },
    {
      "id": "a0000002-0000-4000-8000-000000000002",
      "name": "invoice_number"
    },
    {
      "id": "a0000003-0000-4000-8000-000000000003",
      "name": "total_amount"
    }
  ],
  "table_capture": true,
  "table_header_ids": {
    "description": "a0000004-0000-4000-8000-000000000004",
    "line_total": "a0000005-0000-4000-8000-000000000005",
    "quantity": "a0000006-0000-4000-8000-000000000006",
    "unit_price": "a0000007-0000-4000-8000-000000000007"
  },
  "table_header_names": [
    "description",
    "line_total",
    "quantity",
    "unit_price"
  ],
  "table_headers": [
    {
      "id": "a0000004-0000-4000-8000-000000000004",
      "name": "description"
    },
    {
      "id": "a0000005-0000-4000-8000-000000000005",
      "name": "line_total"
    },
    {
      "id": "a0000006-0000-4000-8000-000000000006",
      "name": "quantity"
    },
    {
      "id": "a0000007-0000-4000-8000-000000000007",
      "name": "unit_price"
    }
  ],
  "workflow_id": "11111111-1111-4111-8111-111111111111"
}

On this page