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
| Action | What it does |
|---|---|
| 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. |
| 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. |
| Add table cell | Add a cell to a table on a document page, at a row and column. |
| 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. |
| Assign documents to reviewer | Assign one or more documents to a member of your Nanonets team to review, by their email address. |
| 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. |
| Create workflow | Create a workflow to extract data from a kind of document. |
| Delete document | Delete a document and its extracted data from a workflow. |
| Delete field value | Remove a wrong value from a page of a document. |
| Delete table | Remove a table from a page of a document. |
| Delete table cell | Remove a cell from a table. |
| Delete workflow | Delete a workflow. |
| Delete workflow field | Remove one field or table column from a workflow, leaving the rest as they are. |
| 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. |
| Get document | Get a document's status and everything Nanonets extracted from it, with any corrections reviewers made, by its ID. |
| Get document page | Get one page of a document, by its ID, with the field values and tables extracted from it. |
| Get workflow | Get a workflow's description, the fields and table columns it extracts with their IDs, and whether it captures tables. |
| 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. |
| 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. |
| 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. |
| List image classification models | List your Nanonets image classification models, with their categories and whether each is ready to classify images. |
| 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. |
| List workflows | List the workflows in your Nanonets account, each with the fields and table columns it extracts. |
| Rename workflow field | Rename one of a workflow's fields or table columns, keeping its ID. |
| 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. |
| Retry document extraction | Have Nanonets extract documents' data again, for example after changing the workflow's fields or AI guidelines. |
| 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. |
| 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. |
| Set workflow fields | Set the fields and table columns a workflow extracts, such as invoice_number, total_amount and the line items' columns. |
| Unapprove document | Take an approved document back to unapproved, so it can be reviewed again. |
| Update field value | Correct a value Nanonets extracted, by its value ID (field_data_id). |
| Update table cell | Correct a table cell's text, by its cell ID. |
| Update workflow | Change 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 workflow
nanonets_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 ID
document_idtextRequired - The document's ID: the document_id of the step that sent it, or of List documents.
- Page ID
page_idtextRequired - The page's ID: the page_id of one of the document's pages, or of a value or table on it.
- Field
field_nametextRequired - The field the value is for, one of the workflow's fields.
- Value
valuetextRequired - The value, as text.
- Position
bboxlist - 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 workflow
nanonets_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 ID
document_idtextRequired - The document's ID: the document_id of the step that sent it, or of List documents.
- Page ID
page_idtextRequired - The page's ID: the page_id of one of the document's pages, or of a value or table on it.
- Rows
rowslistRequired - The table's rows, each a record of column name to text, such as [{"description": "Consulting", "quantity": "1"}].
- Columns
headerslist - The table's columns in order, such as description, quantity. Leave empty to take them from the rows.
- Position
bboxlist - 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 workflow
nanonets_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 ID
document_idtextRequired - The document's ID: the document_id of the step that sent it, or of List documents.
- Page ID
page_idtextRequired - The page's ID: the page_id of one of the document's pages, or of a value or table on it.
- Table ID
table_idtextRequired - The table's ID: the table_id of one of the document's tables.
- Row
rownumberRequired - The cell's row, counting from 0.From 0 to 100000.
- Column
columnnumberRequired - The cell's column, counting from 0.From 0 to 20.
- Column name
headertextRequired - The column the cell is in, one of the workflow's table columns.
- Text
texttextRequired - The cell's text.
- Position
bboxlist - 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 workflow
nanonets_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 ID
document_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 workflow
nanonets_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 IDs
document_idslistRequired - The documents' IDs (document_id), one or more, up to 100.
- Reviewer email
reviewer_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
- Model
model_idtextRequired - The image classification model: pick one, or give its ID. It must be trained in Nanonets first.
- Image
imagetextRequired - 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
- Description
descriptiontextRequired - What the workflow is for, as Nanonets lists it, such as Extract data from supplier invoices.
- Workflow type
workflow_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. - Fields
fieldslist - 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 columns
table_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 workflow
nanonets_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 ID
document_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 workflow
nanonets_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 ID
document_idtextRequired - The document's ID: the document_id of the step that sent it, or of List documents.
- Page ID
page_idtextRequired - The page's ID: the page_id of one of the document's pages, or of a value or table on it.
- Value ID
field_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 workflow
nanonets_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 ID
document_idtextRequired - The document's ID: the document_id of the step that sent it, or of List documents.
- Page ID
page_idtextRequired - The page's ID: the page_id of one of the document's pages, or of a value or table on it.
- Table ID
table_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 workflow
nanonets_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 ID
document_idtextRequired - The document's ID: the document_id of the step that sent it, or of List documents.
- Page ID
page_idtextRequired - The page's ID: the page_id of one of the document's pages, or of a value or table on it.
- Table ID
table_idtextRequired - The table's ID: the table_id of one of the document's tables.
- Cell ID
cell_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 workflow
nanonets_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 workflow
nanonets_workflow_idtextRequired - The Nanonets workflow: pick one, or give its ID (in the workflow's address in Nanonets, and in what List workflows returns).
- Field
field_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 workflow
nanonets_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
documenttextRequired - 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.
- Metadata
metadatatext - 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 results
wait_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 workflow
nanonets_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 ID
document_idtextRequired - The document's ID: the document_id of the step that sent it, or of List documents.
- Wait for results
wait_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 workflow
nanonets_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 ID
document_idtextRequired - The document's ID: the document_id of the step that sent it, or of List documents.
- Page ID
page_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 workflow
nanonets_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 workflow
nanonets_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 list
pagenumber - Which page of the list to get, from 1.From 1 to 100000. Default:
1. - Documents a page
limitnumber - 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 workflow
nanonets_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 date
start_datedate - The first day, in UTC. Leave it empty for the end date.
- End date
end_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 workflow
nanonets_workflow_idtextRequired - The Nanonets workflow: pick one, or give its ID (in the workflow's address in Nanonets, and in what List workflows returns).
- Field
field_idtextRequired - The field or table column: pick one, or give its ID.
- New name
nametextRequired - 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 workflow
nanonets_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 IDs
document_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 workflow
nanonets_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 IDs
document_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 connection
database_connection_idtextRequired - The database, one connected to your Nanonets account: pick one, or give its ID.
- Query
querytextRequired - 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 workflow
nanonets_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 fields
field_instructionstext - How to extract the fields, such as: Write dates as YYYY-MM-DD. Only extract amounts in USD.
- Instructions for tables
table_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 workflow
nanonets_workflow_idtextRequired - The Nanonets workflow: pick one, or give its ID (in the workflow's address in Nanonets, and in what List workflows returns).
- Fields
fieldslistRequired - 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 columns
table_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 workflow
nanonets_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 ID
document_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 workflow
nanonets_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 ID
document_idtextRequired - The document's ID: the document_id of the step that sent it, or of List documents.
- Page ID
page_idtextRequired - The page's ID: the page_id of one of the document's pages, or of a value or table on it.
- Value ID
field_data_idtextRequired - The value's ID: the field_data_id of one of the document's field_values.
- New value
valuetextRequired - 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 workflow
nanonets_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 ID
document_idtextRequired - The document's ID: the document_id of the step that sent it, or of List documents.
- Page ID
page_idtextRequired - The page's ID: the page_id of one of the document's pages, or of a value or table on it.
- Table ID
table_idtextRequired - The table's ID: the table_id of one of the document's tables.
- Cell ID
cell_idtextRequired - The cell's ID: the cell_id of one of the table's cells.
- New text
texttextRequired - 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 workflow
nanonets_workflow_idtextRequired - The Nanonets workflow: pick one, or give its ID (in the workflow's address in Nanonets, and in what List workflows returns).
- Description
descriptiontext - A new description. Leave empty to keep the one it has.
- Capture tables
table_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"
}