{
"error": {
"code": "invalid_request",
"detail": null,
"message": "Request body has extra fields that this operation does not accept.",
"request_id": "req-01j9k2n3p4q5r6s7t8v9",
"retryable": false
}
}
{
"error": {
"code": "invalid_request",
"detail": null,
"message": "Request body has extra fields that this operation does not accept.",
"request_id": "req-01j9k2n3p4q5r6s7t8v9",
"retryable": false
}
}
catalog
The metadata catalog ingestion extracted from every document: its tables, or one SELECT’s rows.
Cost class: fast. Answers inline: no job, no credits. Without sql: one table per document
type the workspace holds (invoices, contracts, statements…) with its typed columns, plus
catalog_document over every record. With sql: one read-only SELECT over those tables, its rows
capped and truncated set when cut. A refused or failing statement answers invalid_request with
the reason; so does a workspace whose catalog is too large to query whole.
A record is one document section, spreadsheet tab, recording or JSON section, never one printed line:
the entries a listing, register or ledger prints (each credit note in a credit-note report) are not
records of their own. The listing is one record; read it with read-file, or query a tab’s rows
with run-sql. Every record carries source_path, the path the other file tools take.
{
"error": {
"code": "invalid_request",
"detail": null,
"message": "Request body has extra fields that this operation does not accept.",
"request_id": "req-01j9k2n3p4q5r6s7t8v9",
"retryable": false
}
}
{
"error": {
"code": "invalid_request",
"detail": null,
"message": "Request body has extra fields that this operation does not accept.",
"request_id": "req-01j9k2n3p4q5r6s7t8v9",
"retryable": false
}
}
True when the result had more rows than were returned.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"NDI Platform API","description":"Document intelligence platform API — parse, split, classify, extract, and ground information from any document.","colors":{"primary":"#111111","light":"#737373","dark":"#E5E5E5"},"favicon":"https://mintcdn.com/nace-ai/RoMHjaneGKdnwusm/favicon.png?fit=max\u0026auto=format\u0026n=RoMHjaneGKdnwusm\u0026q=85\u0026s=9b5d6ee38930c58bd4cc7e964e66a5b0","api":{"openapi":"openapi.json","playground":{"display":"interactive"},"examples":{"defaults":"required","languages":["curl"],"autogenerate":true}},"appearance":{"default":"system"},"background":{"decoration":"gradient"},"footer":{"socials":{}},"icons":{"library":"lucide"},"styling":{"eyebrows":"breadcrumbs","codeblocks":"dark","latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"nace-ai","hasAudioNarration":false,"actualSubdomain":"nace-ai","customDomains":["docs.ndi.nace.ai"],"gitSource":{"type":"github","owner":"yeranaceai","repo":"ndi-service-api-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"collectionId":"85e2998e-8c94-42a0-9742-d69edfa8d87c","liveDeploymentHistoryId":"6aecc8640229ed55d56beaa9","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aecc8640229ed55d56beaa9"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6aece5e4df71b2cdc3f2bc40","clientVersion":"0.0.4071","searchFilterCounts":[{"language":"default","tag":"API Reference","count":106},{"language":"default","tag":"Documentation","count":43},{"language":"default","tag":"SDKs","count":36},{"language":"default","tag":"Core methods","count":28},{"language":"default","tag":"Workspaces and files","count":25},{"language":"default","tag":"Guides","count":25},{"language":"default","tag":"Catalog","count":22},{"language":"default","tag":"Tools and search","count":21},{"language":"default","tag":"Jobs and usage","count":16},{"language":"default","tag":"Concepts","count":12}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/tools/catalog","slug":"/api-reference/tools/catalog","pageMetadata":{"title":"catalog","description":"The metadata catalog ingestion extracted from every document: its tables, or one SELECT's rows.\n\n**Cost class: fast.** Answers inline: no job, no credits. Without ``sql``: one table per document\ntype the workspace holds (invoices, contracts, statements...) with its typed columns, plus\n``catalog_document`` over every record. With ``sql``: one read-only SELECT over those tables, its rows\ncapped and ``truncated`` set when cut. A refused or failing statement answers ``invalid_request`` with\nthe reason; so does a workspace whose catalog is too large to query whole.\n\nA record is one document section, spreadsheet tab, recording or JSON section, never one printed line:\nthe entries a listing, register or ledger prints (each credit note in a credit-note report) are not\nrecords of their own. The listing is one record; read it with ``read-file``, or query a tab's rows\nwith ``run-sql``. Every record carries ``source_path``, the path the other file tools take.","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/workspaces/{workspace_id}/tools/catalog","href":"/api-reference/tools/catalog","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"The metadata catalog ingestion extracted from every document: its tables, or one SELECT’s rows.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Cost class: fast.\"\n }), \" Answers inline: no job, no credits. Without \", _jsx(_components.code, {\n children: \"sql\"\n }), \": one table per document\\ntype the workspace holds (invoices, contracts, statements…) with its typed columns, plus\\n\", _jsx(_components.code, {\n children: \"catalog_document\"\n }), \" over every record. With \", _jsx(_components.code, {\n children: \"sql\"\n }), \": one read-only SELECT over those tables, its rows\\ncapped and \", _jsx(_components.code, {\n children: \"truncated\"\n }), \" set when cut. A refused or failing statement answers \", _jsx(_components.code, {\n children: \"invalid_request\"\n }), \" with\\nthe reason; so does a workspace whose catalog is too large to query whole.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"A record is one document section, spreadsheet tab, recording or JSON section, never one printed line:\\nthe entries a listing, register or ledger prints (each credit note in a credit-note report) are not\\nrecords of their own. The listing is one record; read it with \", _jsx(_components.code, {\n children: \"read-file\"\n }), \", or query a tab’s rows\\nwith \", _jsx(_components.code, {\n children: \"run-sql\"\n }), \". Every record carries \", _jsx(_components.code, {\n children: \"source_path\"\n }), \", the path the other file tools take.\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"codeStyling":"dark","config":{},"pageMetadata":{"title":"catalog","description":"The metadata catalog ingestion extracted from every document: its tables, or one SELECT's rows.\n\n**Cost class: fast.** Answers inline: no job, no credits. Without ``sql``: one table per document\ntype the workspace holds (invoices, contracts, statements...) with its typed columns, plus\n``catalog_document`` over every record. With ``sql``: one read-only SELECT over those tables, its rows\ncapped and ``truncated`` set when cut. A refused or failing statement answers ``invalid_request`` with\nthe reason; so does a workspace whose catalog is too large to query whole.\n\nA record is one document section, spreadsheet tab, recording or JSON section, never one printed line:\nthe entries a listing, register or ledger prints (each credit note in a credit-note report) are not\nrecords of their own. The listing is one record; read it with ``read-file``, or query a tab's rows\nwith ``run-sql``. Every record carries ``source_path``, the path the other file tools take.","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/workspaces/{workspace_id}/tools/catalog","href":"/api-reference/tools/catalog","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"description":"The metadata catalog ingestion extracted from every document: its tables, or one SELECT's rows.\n\n**Cost class: fast.** Answers inline: no job, no credits. Without ``sql``: one table per document\ntype the workspace holds (invoices, contracts, statements...) with its typed columns, plus\n``catalog_document`` over every record. With ``sql``: one read-only SELECT over those tables, its rows\ncapped and ``truncated`` set when cut. A refused or failing statement answers ``invalid_request`` with\nthe reason; so does a workspace whose catalog is too large to query whole.\n\nA record is one document section, spreadsheet tab, recording or JSON section, never one printed line:\nthe entries a listing, register or ledger prints (each credit note in a credit-note report) are not\nrecords of their own. The listing is one record; read it with ``read-file``, or query a tab's rows\nwith ``run-sql``. Every record carries ``source_path``, the path the other file tools take.","operationId":"catalog_v1_workspaces__workspace_id__tools_catalog_post","parameters":["48c88566-1b6a-4be7-bbe4-d90c8945cbd5"],"requestBody":"c5ceaa7d-972c-467d-9cfe-d6fc72c6ce13","responses":{"200":"d966fa0e-d6e4-47b5-84be-944ea7824e9b","504":"36758019-b0e7-4dc8-9408-dec22e0a1b70","default":"32a76502-e9e7-403e-9ba8-30287fa5e642"},"security":["0a4c25de-0d53-4726-a198-6b05c8a3ba56"],"summary":"catalog","tags":["tools"],"method":"post","type":"path","servers":["aae424a0-75bd-49d8-a75f-edee40385fb6"],"path":"/v1/workspaces/{workspace_id}/tools/catalog","baseUrlOptions":["https://ndi-api.nace.ai"],"title":"catalog","codeSamples":[],"requestExampleLanguages":["bash"],"requiredOnlyExamples":true,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"48c88566-1b6a-4be7-bbe4-d90c8945cbd5":{"description":"Workspace identifier.","in":"path","name":"workspace_id","required":true,"schema":{"description":"Workspace identifier.","format":"uuid","title":"Workspace Id","type":"string","isRequired":true,"uniqueKey":"","typeLabel":"string\u003cuuid>"}}},"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"description":"``catalog``: no ``sql`` describes the catalog's tables; one ``sql`` runs a read-only SELECT over them.","properties":{"sql":{"oneOf":[{"type":"string","title":"Sql","description":"One read-only SELECT (or WITH ... SELECT) over the catalog tables; omit to list the tables.","minLength":1,"uniqueKey":"sql.oneOf.0","typeLabel":"string"},{"type":"null","title":"Sql","description":"One read-only SELECT (or WITH ... SELECT) over the catalog tables; omit to list the tables.","uniqueKey":"sql.oneOf.1","typeLabel":"null"}],"uniqueKey":"sql","typeLabel":"string | null"}},"title":"CatalogToolRequest","type":"object","uniqueKey":"","typeLabel":"CatalogToolRequest · object"},"examples":{"Example":{"title":"Example","value":{"sql":"\u003cstring>"}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"d966fa0e-d6e4-47b5-84be-944ea7824e9b":{"content":{"application/json":{"schema":{"additionalProperties":false,"description":"A describe fills ``tables``/``empty_tables``; a query fills ``columns``/``rows``/``row_count``/``truncated``.","properties":{"columns":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"columns.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Columns","description":"With `sql`: the result's column names, in order.","uniqueKey":"columns.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Columns","description":"With `sql`: the result's column names, in order.","uniqueKey":"columns.oneOf.1","typeLabel":"null"}],"uniqueKey":"columns","typeLabel":"string[] | null"},"empty_tables":{"oneOf":[{"type":"array","items":{"additionalProperties":false,"properties":{"columns":{"description":"The table's column names; the populated tables describe them.","items":{"type":"string","uniqueKey":"empty_tables.oneOf.0.items.[INDEX].columns.items.[INDEX]","typeLabel":"string"},"title":"Columns","type":"array","isRequired":true,"uniqueKey":"empty_tables.oneOf.0.items.[INDEX].columns","typeLabel":"string[]"},"document_type":{"description":"The document type the table would hold, e.g. `Invoice`.","title":"Document Type","type":"string","isRequired":true,"uniqueKey":"empty_tables.oneOf.0.items.[INDEX].document_type","typeLabel":"string"},"table":{"description":"The table's name, as a catalog SELECT spells it.","title":"Table","type":"string","isRequired":true,"uniqueKey":"empty_tables.oneOf.0.items.[INDEX].table","typeLabel":"string"}},"required":["table","document_type","columns"],"title":"CatalogEmptyTable","type":"object","uniqueKey":"empty_tables.oneOf.0.items.[INDEX]","typeLabel":"CatalogEmptyTable · object"},"title":"Empty Tables","description":"Document types with no records here: queryable, every query over them is empty.","uniqueKey":"empty_tables.oneOf.0","typeLabel":"CatalogEmptyTable · object[]"},{"type":"null","title":"Empty Tables","description":"Document types with no records here: queryable, every query over them is empty.","uniqueKey":"empty_tables.oneOf.1","typeLabel":"null"}],"uniqueKey":"empty_tables","typeLabel":"CatalogEmptyTable · object[] | null"},"row_count":{"oneOf":[{"type":"integer","title":"Row Count","description":"With `sql`: how many rows `rows` holds.","uniqueKey":"row_count.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Row Count","description":"With `sql`: how many rows `rows` holds.","uniqueKey":"row_count.oneOf.1","typeLabel":"null"}],"uniqueKey":"row_count","typeLabel":"integer | null"},"rows":{"oneOf":[{"type":"array","items":{"additionalProperties":{"oneOf":[{}],"uniqueKey":"rows.oneOf.0.items.[INDEX].additionalProperties","typeLabel":"any"},"type":"object","uniqueKey":"rows.oneOf.0.items.[INDEX]","typeLabel":"object"},"title":"Rows","description":"With `sql`: the result rows, each keyed by column name.","uniqueKey":"rows.oneOf.0","typeLabel":"Rows · object[]"},{"type":"null","title":"Rows","description":"With `sql`: the result rows, each keyed by column name.","uniqueKey":"rows.oneOf.1","typeLabel":"null"}],"uniqueKey":"rows","typeLabel":"Rows · object[] | null"},"tables":{"oneOf":[{"type":"array","items":{"additionalProperties":false,"properties":{"columns":{"description":"Every column the table has, in order.","items":{"additionalProperties":false,"properties":{"description":{"description":"What the column holds, and how to filter on it.","title":"Description","type":"string","isRequired":true,"uniqueKey":"tables.oneOf.0.items.[INDEX].columns.items.[INDEX].description","typeLabel":"string"},"kind":{"description":"text, date, money, number, boolean, or identity (`record_id`).","title":"Kind","type":"string","isRequired":true,"uniqueKey":"tables.oneOf.0.items.[INDEX].columns.items.[INDEX].kind","typeLabel":"string"},"name":{"description":"The column's name, as a catalog SELECT spells it.","title":"Name","type":"string","isRequired":true,"uniqueKey":"tables.oneOf.0.items.[INDEX].columns.items.[INDEX].name","typeLabel":"string"}},"required":["name","kind","description"],"title":"CatalogTableColumn","type":"object","uniqueKey":"tables.oneOf.0.items.[INDEX].columns.items.[INDEX]","typeLabel":"CatalogTableColumn · object"},"title":"Columns","type":"array","isRequired":true,"uniqueKey":"tables.oneOf.0.items.[INDEX].columns","typeLabel":"CatalogTableColumn · object[]"},"description":{"description":"Which records the table holds.","title":"Description","type":"string","isRequired":true,"uniqueKey":"tables.oneOf.0.items.[INDEX].description","typeLabel":"string"},"in_scope_components":{"description":"Catalog records (document sections, tabs) the caller may see.","title":"In Scope Components","type":"integer","isRequired":true,"uniqueKey":"tables.oneOf.0.items.[INDEX].in_scope_components","typeLabel":"integer"},"table":{"description":"The table's name, as a catalog SELECT spells it.","title":"Table","type":"string","isRequired":true,"uniqueKey":"tables.oneOf.0.items.[INDEX].table","typeLabel":"string"}},"required":["table","description","in_scope_components","columns"],"title":"CatalogTable","type":"object","uniqueKey":"tables.oneOf.0.items.[INDEX]","typeLabel":"CatalogTable · object"},"title":"Tables","description":"Without `sql`: `catalog_document` and every document-type table with records.","uniqueKey":"tables.oneOf.0","typeLabel":"CatalogTable · object[]"},{"type":"null","title":"Tables","description":"Without `sql`: `catalog_document` and every document-type table with records.","uniqueKey":"tables.oneOf.1","typeLabel":"null"}],"uniqueKey":"tables","typeLabel":"CatalogTable · object[] | null"},"truncated":{"oneOf":[{"type":"boolean","title":"Truncated","description":"True when the result had more rows than were returned.","uniqueKey":"truncated.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Truncated","description":"True when the result had more rows than were returned.","uniqueKey":"truncated.oneOf.1","typeLabel":"null"}],"uniqueKey":"truncated","typeLabel":"boolean | null"}},"title":"CatalogToolResponse","type":"object","uniqueKey":"","typeLabel":"CatalogToolResponse · object"},"examples":{"Example":{"title":"Example","value":{"columns":["\u003cstring>"],"empty_tables":[{"columns":["\u003cstring>"],"document_type":"\u003cstring>","table":"\u003cstring>"}],"row_count":123,"rows":[{}],"tables":[{"columns":[{"description":"\u003cstring>","kind":"\u003cstring>","name":"\u003cstring>"}],"description":"\u003cstring>","in_scope_components":123,"table":"\u003cstring>"}],"truncated":true}}},"exampleType":"generated"}},"description":"Successful Response","exampleType":"generated"},"36758019-b0e7-4dc8-9408-dec22e0a1b70":{"content":{"application/json":{"schema":{"description":"Every non-2xx body on ``/v1``.","example":{"error":{"code":"invalid_request","detail":null,"message":"Request body has extra fields that this operation does not accept.","request_id":"req-01j9k2n3p4q5r6s7t8v9","retryable":false}},"properties":{"error":{"description":"The error object, per spec 12 §1.8.","properties":{"code":{"description":"Every error the ``/v1`` surface can return.\n\nClients must treat this as an **open** enum: a new member is an additive\nchange (spec 12 §9), and a client that crashes on an unknown code makes\nevery future error a breaking change.","enum":["storage_connection_not_found","storage_connection_in_use","storage_limit_exceeded","storage_conflict","storage_auth_required","storage_unavailable","scan_required","scan_rejected","scan_unavailable","invalid_request","unsupported_file_type","file_too_large","invalid_schema","invalid_sql","invalid_path_prefix","command_not_permitted","batch_too_large","domain_validation_failed","default_label_required","wait_required_for_zero_retention","ledger_decision_invalid","tenant_required","partner_required","workspace_not_found","file_not_found","job_not_found","upload_not_found","node_not_found","schema_not_found","domain_not_found","session_not_found","access_label_not_found","ledger_understanding_not_found","ledger_table_not_found","tenant_not_found","path_conflict","schema_version_conflict","access_label_name_taken","workspace_name_taken","access_label_in_use","upload_expired","file_not_ingested","workspace_deleting","workspace_not_deletable","ingestion_in_progress","job_not_cancellable","confirmation_required","domain_not_published","domain_in_use","reserved_domain_slug","kg_not_built","kg_build_in_progress","ledger_understanding_in_progress","ledger_understanding_version_outdated","session_busy","tenant_limit_reached","range_not_satisfiable","result_expired","access_denied","tenant_disabled","access_backstop_violation","access_mode_not_implemented","rate_limited","concurrency_limit_reached","quota_exceeded","corrupt_file","zero_byte_file","encrypted_file","csv_dialect_ambiguous","csv_parse_failed","parse_failed","ocr_failed","conversion_failed","sheetless_workbook","unplayable_media","unclassified_pages","job_cancelled","job_timeout","upstream_unavailable","internal_error","unauthorized","not_implemented"],"title":"ErrorCode","type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"description":"Human- and model-readable; says what to do differently.","title":"Message","type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"retryable":{"description":"Whether retrying the identical request could succeed.","title":"Retryable","type":"boolean","isRequired":true,"uniqueKey":"error.retryable","typeLabel":"boolean"},"detail":{"oneOf":[{"type":"object","title":"Detail","description":"Structured payload, when the code carries one.","additionalProperties":true,"uniqueKey":"error.detail.oneOf.0","typeLabel":"Detail · object"},{"type":"null","title":"Detail","description":"Structured payload, when the code carries one.","uniqueKey":"error.detail.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.detail","typeLabel":"Detail · object | null"},"request_id":{"oneOf":[{"type":"string","title":"Request Id","description":"Per-request correlation id; matches the ``X-Request-Id`` header. Null only when the error was minted outside any HTTP request, e.g. by a worker.","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Request Id","description":"Per-request correlation id; matches the ``X-Request-Id`` header. Null only when the error was minted outside any HTTP request, e.g. by a worker.","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"}},"required":["code","message","retryable"],"title":"Error","type":"object","isRequired":true,"uniqueKey":"error","typeLabel":"Error · object"}},"required":["error"],"title":"ErrorEnvelope","type":"object","uniqueKey":"","typeLabel":"ErrorEnvelope · object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"invalid_request","detail":null,"message":"Request body has extra fields that this operation does not accept.","request_id":"req-01j9k2n3p4q5r6s7t8v9","retryable":false}}}},"exampleType":"generated"}},"description":"Gateway Timeout","exampleType":"generated"},"32a76502-e9e7-403e-9ba8-30287fa5e642":{"content":{"application/json":{"example":{"error":{"code":"invalid_request","detail":null,"message":"Request body has extra fields that this operation does not accept.","request_id":"req-01j9k2n3p4q5r6s7t8v9","retryable":false}},"schema":{"description":"Every non-2xx body on ``/v1``.","example":{"error":{"code":"invalid_request","detail":null,"message":"Request body has extra fields that this operation does not accept.","request_id":"req-01j9k2n3p4q5r6s7t8v9","retryable":false}},"properties":{"error":{"description":"The error object, per spec 12 §1.8.","properties":{"code":{"description":"Every error the ``/v1`` surface can return.\n\nClients must treat this as an **open** enum: a new member is an additive\nchange (spec 12 §9), and a client that crashes on an unknown code makes\nevery future error a breaking change.","enum":["storage_connection_not_found","storage_connection_in_use","storage_limit_exceeded","storage_conflict","storage_auth_required","storage_unavailable","scan_required","scan_rejected","scan_unavailable","invalid_request","unsupported_file_type","file_too_large","invalid_schema","invalid_sql","invalid_path_prefix","command_not_permitted","batch_too_large","domain_validation_failed","default_label_required","wait_required_for_zero_retention","ledger_decision_invalid","tenant_required","partner_required","workspace_not_found","file_not_found","job_not_found","upload_not_found","node_not_found","schema_not_found","domain_not_found","session_not_found","access_label_not_found","ledger_understanding_not_found","ledger_table_not_found","tenant_not_found","path_conflict","schema_version_conflict","access_label_name_taken","workspace_name_taken","access_label_in_use","upload_expired","file_not_ingested","workspace_deleting","workspace_not_deletable","ingestion_in_progress","job_not_cancellable","confirmation_required","domain_not_published","domain_in_use","reserved_domain_slug","kg_not_built","kg_build_in_progress","ledger_understanding_in_progress","ledger_understanding_version_outdated","session_busy","tenant_limit_reached","range_not_satisfiable","result_expired","access_denied","tenant_disabled","access_backstop_violation","access_mode_not_implemented","rate_limited","concurrency_limit_reached","quota_exceeded","corrupt_file","zero_byte_file","encrypted_file","csv_dialect_ambiguous","csv_parse_failed","parse_failed","ocr_failed","conversion_failed","sheetless_workbook","unplayable_media","unclassified_pages","job_cancelled","job_timeout","upstream_unavailable","internal_error","unauthorized","not_implemented"],"title":"ErrorCode","type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"description":"Human- and model-readable; says what to do differently.","title":"Message","type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"retryable":{"description":"Whether retrying the identical request could succeed.","title":"Retryable","type":"boolean","isRequired":true,"uniqueKey":"error.retryable","typeLabel":"boolean"},"detail":{"oneOf":[{"type":"object","title":"Detail","description":"Structured payload, when the code carries one.","additionalProperties":true,"uniqueKey":"error.detail.oneOf.0","typeLabel":"Detail · object"},{"type":"null","title":"Detail","description":"Structured payload, when the code carries one.","uniqueKey":"error.detail.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.detail","typeLabel":"Detail · object | null"},"request_id":{"oneOf":[{"type":"string","title":"Request Id","description":"Per-request correlation id; matches the ``X-Request-Id`` header. Null only when the error was minted outside any HTTP request, e.g. by a worker.","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Request Id","description":"Per-request correlation id; matches the ``X-Request-Id`` header. Null only when the error was minted outside any HTTP request, e.g. by a worker.","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"}},"required":["code","message","retryable"],"title":"Error","type":"object","isRequired":true,"uniqueKey":"error","typeLabel":"Error · object"}},"required":["error"],"title":"ErrorEnvelope","type":"object","uniqueKey":"","typeLabel":"ErrorEnvelope · object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"invalid_request","detail":null,"message":"Request body has extra fields that this operation does not accept.","request_id":"req-01j9k2n3p4q5r6s7t8v9","retryable":false}}}},"exampleType":"examples"}},"description":"Typed error envelope used by every 4xx and 5xx. ``error.code`` distinguishes the failure; HTTP status is a consequence of the code.","exampleType":"examples"}},"security":{"0a4c25de-0d53-4726-a198-6b05c8a3ba56":{"APIKeyHeader":{"in":"header","name":"X-API-Key","type":"apiKey","scopes":[],"schemeName":"APIKeyHeader"}}},"servers":{"aae424a0-75bd-49d8-a75f-edee40385fb6":{"url":"https://ndi-api.nace.ai"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"in":"header","name":"X-API-Key","type":"apiKey","scopes":[],"schemeName":"APIKeyHeader"},"schema":{"title":"X-API-Key","type":"string","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"APIKeyHeader","name":"X-API-Key"}],"title":"APIKeyHeader"}]},"originalFileLocation":"openapi.json"},"subdomain":"nace-ai","siteName":"NDI Platform API","title":"catalog - NDI Platform API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-05T20:24:18.408Z","originalFileLocation":"api-reference/tools/catalog.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"The metadata catalog ingestion extracted from every document: its tables, or one SELECT\u0026#x27;s rows. Cost class: fast. Answers inline: no job, no credits. Without sql: one table per document type the workspace holds (invoices, contracts, statements...) with its typed columns, plus catalog_document over every record. With sql: one read-only SELECT over those tables, its rows capped and truncated set when cut. A refused or failing statement answers invalid_request with the reason; so does a workspace whose catalog is too large to query whole. A record is one document section, spreadsheet tab, recording or JSON section, never one printed line: the entries a listing, register or ledger prints (each credit note in a credit-note report) are not records of their own. The listing is one record; read it with read-file, or query a tab\u0026#x27;s rows with run-sql. Every record carries source_path, the path the other file tools take.\">\u003cmeta data-mint-head name=\"application-name\" content=\"NDI Platform API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/nace-ai/ON_ODtu5ozmA-6iq/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/nace-ai/ON_ODtu5ozmA-6iq/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/nace-ai/ON_ODtu5ozmA-6iq/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/nace-ai/ON_ODtu5ozmA-6iq/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/nace-ai/ON_ODtu5ozmA-6iq/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/nace-ai/ON_ODtu5ozmA-6iq/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/nace-ai/ON_ODtu5ozmA-6iq/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/nace-ai/ON_ODtu5ozmA-6iq/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/nace-ai/ON_ODtu5ozmA-6iq/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"catalog - NDI Platform API\">\u003cmeta data-mint-head property=\"og:description\" content=\"The metadata catalog ingestion extracted from every document: its tables, or one SELECT\u0026#x27;s rows. Cost class: fast. Answers inline: no job, no credits. Without sql: one table per document type the workspace holds (invoices, contracts, statements...) with its typed columns, plus catalog_document over every record. With sql: one read-only SELECT over those tables, its rows capped and truncated set when cut. A refused or failing statement answers invalid_request with the reason; so does a workspace whose catalog is too large to query whole. A record is one document section, spreadsheet tab, recording or JSON section, never one printed line: the entries a listing, register or ledger prints (each credit note in a credit-note report) are not records of their own. The listing is one record; read it with read-file, or query a tab\u0026#x27;s rows with run-sql. Every record carries source_path, the path the other file tools take.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"NDI Platform API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.ndi.nace.ai/api-reference/tools/catalog\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://nace-ai.mintlify.app/_mintlify/api/og/v2?division=Tools+and+search\u0026amp;title=catalog\u0026amp;description=The+metadata+catalog+ingestion+extracted+from+every+document%3A+its+tables%2C+or+one+SELECT%27s+rows.%0A%0A**Cost+class%3A+fast.**+Answers+inline%3A+no+job%2C+no+credits.+Witho\u0026amp;theme=c2c8dd1a1eb024c2dfeaad33\u0026amp;signature=5a80901ef597cba7a582c55bb88f3bd4b8c8a29623c1e1a8b3a2b21daaad83a5\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"catalog - NDI Platform API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"The metadata catalog ingestion extracted from every document: its tables, or one SELECT\u0026#x27;s rows. Cost class: fast. Answers inline: no job, no credits. Without sql: one table per document type the workspace holds (invoices, contracts, statements...) with its typed columns, plus catalog_document over every record. With sql: one read-only SELECT over those tables, its rows capped and truncated set when cut. A refused or failing statement answers invalid_request with the reason; so does a workspace whose catalog is too large to query whole. A record is one document section, spreadsheet tab, recording or JSON section, never one printed line: the entries a listing, register or ledger prints (each credit note in a credit-note report) are not records of their own. The listing is one record; read it with read-file, or query a tab\u0026#x27;s rows with run-sql. Every record carries source_path, the path the other file tools take.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://nace-ai.mintlify.app/_mintlify/api/og/v2?division=Tools+and+search\u0026amp;title=catalog\u0026amp;description=The+metadata+catalog+ingestion+extracted+from+every+document%3A+its+tables%2C+or+one+SELECT%27s+rows.%0A%0A**Cost+class%3A+fast.**+Answers+inline%3A+no+job%2C+no+credits.+Witho\u0026amp;theme=c2c8dd1a1eb024c2dfeaad33\u0026amp;signature=5a80901ef597cba7a582c55bb88f3bd4b8c8a29623c1e1a8b3a2b21daaad83a5\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/nace-ai/ON_ODtu5ozmA-6iq/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"NDI Platform API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#111111\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.ndi.nace.ai/api-reference/tools/catalog\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/tools/catalog.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.ndi.nace.ai/#organization\",\"name\":\"NDI Platform API\",\"url\":\"https://docs.ndi.nace.ai\"},{\"@type\":\"WebSite\",\"@id\":\"https://docs.ndi.nace.ai#website\",\"name\":\"NDI Platform API\",\"url\":\"https://docs.ndi.nace.ai\",\"publisher\":{\"@id\":\"https://docs.ndi.nace.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.ndi.nace.ai/api-reference/tools/catalog#webpage\",\"url\":\"https://docs.ndi.nace.ai/api-reference/tools/catalog\",\"name\":\"catalog\",\"description\":\"The metadata catalog ingestion extracted from every document: its tables, or one SELECT's rows. Cost class: fast. Answers inline: no job, no credits. Without sql: one table per document type the workspace holds (invoices, contracts, statements...) with its typed columns, plus catalog_document over every record. With sql: one read-only SELECT over those tables, its rows capped and truncated set when cut. A refused or failing statement answers invalid_request with the reason; so does a workspace whose catalog is too large to query whole. A record is one document section, spreadsheet tab, recording or JSON section, never one printed line: the entries a listing, register or ledger prints (each credit note in a credit-note report) are not records of their own. The listing is one record; read it with read-file, or query a tab's rows with run-sql. Every record carries source_path, the path the other file tools take.\",\"dateModified\":\"2026-11-05T20:24:18.408Z\",\"isPartOf\":{\"@id\":\"https://docs.ndi.nace.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.ndi.nace.ai/api-reference/tools/catalog#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.ndi.nace.ai/api-reference/tools/catalog#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Tools and search\",\"item\":\"https://docs.ndi.nace.ai/api-reference/file-tools\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"catalog\",\"item\":\"https://docs.ndi.nace.ai/api-reference/tools/catalog\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.ndi.nace.ai/api-reference/tools/catalog#apireference\",\"headline\":\"catalog\",\"name\":\"catalog\",\"description\":\"The metadata catalog ingestion extracted from every document: its tables, or one SELECT's rows. Cost class: fast. Answers inline: no job, no credits. Without sql: one table per document type the workspace holds (invoices, contracts, statements...) with its typed columns, plus catalog_document over every record. With sql: one read-only SELECT over those tables, its rows capped and truncated set when cut. A refused or failing statement answers invalid_request with the reason; so does a workspace whose catalog is too large to query whole. A record is one document section, spreadsheet tab, recording or JSON section, never one printed line: the entries a listing, register or ledger prints (each credit note in a credit-note report) are not records of their own. The listing is one record; read it with read-file, or query a tab's rows with run-sql. Every record carries source_path, the path the other file tools take.\",\"url\":\"https://docs.ndi.nace.ai/api-reference/tools/catalog\",\"mainEntityOfPage\":{\"@id\":\"https://docs.ndi.nace.ai/api-reference/tools/catalog#webpage\"},\"dateModified\":\"2026-11-05T20:24:18.408Z\",\"publisher\":{\"@id\":\"https://docs.ndi.nace.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.ndi.nace.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"NDI Platform API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"NDI Platform API","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/introduction"}]},{"tab":"API Reference","groups":[{"group":"Conventions","pages":[{"title":"API conventions","href":"/api-reference/overview"}]},{"group":"Granular operations","pages":[{"title":"Uploads","href":"/api-reference/uploads"},{"title":"Document operations","href":"/api-reference/document-operations"},{"title":"create_upload","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/uploads","href":"/api-reference/document-operations/create_upload"},{"title":"parse","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/parse","href":"/api-reference/document-operations/parse"},{"title":"split","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/split","href":"/api-reference/document-operations/split"},{"title":"classify","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/classify","href":"/api-reference/document-operations/classify"},{"title":"extract","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/extract","href":"/api-reference/document-operations/extract"},{"title":"validate_extract_schema","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/extract/schema-validation","href":"/api-reference/document-operations/validate_extract_schema"},{"title":"ground","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/ground","href":"/api-reference/document-operations/ground"}]},{"group":"Decisions","pages":[{"title":"Drex (Decision Model)","href":"/api-reference/systemone"},{"title":"evaluate_systemone","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/systemone","href":"/api-reference/systemone/evaluate_systemone"}]},{"group":"Catalog","pages":[{"title":"Domains","href":"/api-reference/domains"},{"title":"Access labels","href":"/api-reference/access-labels"},{"title":"Extraction schemas","href":"/api-reference/extraction-schemas"},{"title":"list_domains","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/domains","href":"/api-reference/domains/list_domains"},{"title":"generate_domain","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/domains/generate","href":"/api-reference/domains/generate_domain"},{"title":"suggest_domain_description","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/domains/suggest-description","href":"/api-reference/domains/suggest_domain_description"},{"title":"create_domain","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/domains","href":"/api-reference/domains/create_domain"},{"title":"get_domain","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/domains/{domain_id}","href":"/api-reference/domains/get_domain"},{"title":"update_domain","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/domains/{domain_id}","href":"/api-reference/domains/update_domain"},{"title":"publish_domain","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/domains/{domain_id}/publish","href":"/api-reference/domains/publish_domain"},{"title":"list_access_labels","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/access-labels","href":"/api-reference/access-labels/list_access_labels"},{"title":"create_access_label","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/access-labels","href":"/api-reference/access-labels/create_access_label"},{"title":"get_access_label","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/access-labels/{access_label_id}","href":"/api-reference/access-labels/get_access_label"},{"title":"update_access_label","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/access-labels/{access_label_id}","href":"/api-reference/access-labels/update_access_label"},{"title":"delete_access_label","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/access-labels/{access_label_id}","href":"/api-reference/access-labels/delete_access_label"},{"title":"list_extraction_schemas","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/extraction-schemas","href":"/api-reference/extraction-schemas/list_extraction_schemas"},{"title":"create_extraction_schema","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/extraction-schemas","href":"/api-reference/extraction-schemas/create_extraction_schema"},{"title":"get_extraction_schema","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/extraction-schemas/{schema_id}","href":"/api-reference/extraction-schemas/get_extraction_schema"},{"title":"delete_extraction_schema","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/extraction-schemas/{schema_id}","href":"/api-reference/extraction-schemas/delete_extraction_schema"},{"title":"list_extraction_schema_versions","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/extraction-schemas/{schema_id}/versions","href":"/api-reference/extraction-schemas/list_extraction_schema_versions"},{"title":"create_extraction_schema_version","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/extraction-schemas/{schema_id}/versions","href":"/api-reference/extraction-schemas/create_extraction_schema_version"},{"title":"get_extraction_schema_version","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/extraction-schemas/{schema_id}/versions/{version}","href":"/api-reference/extraction-schemas/get_extraction_schema_version"}]},{"group":"Workspaces and files","pages":[{"title":"Workspaces","href":"/api-reference/workspaces"},{"title":"Files","href":"/api-reference/files"},{"title":"create_workspace","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/workspaces","href":"/api-reference/workspaces/create_workspace"},{"title":"list_workspaces","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/workspaces","href":"/api-reference/workspaces/list_workspaces"},{"title":"get_workspace","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/workspaces/{workspace_id}","href":"/api-reference/workspaces/get_workspace"},{"title":"update_workspace","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/workspaces/{workspace_id}","href":"/api-reference/workspaces/update_workspace"},{"title":"get_workspace_stats","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/workspaces/{workspace_id}/stats","href":"/api-reference/workspaces/get_workspace_stats"},{"title":"delete_workspace","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/workspaces/{workspace_id}","href":"/api-reference/workspaces/delete_workspace"},{"title":"create_upload_grant","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/workspaces/{workspace_id}/upload-grants","href":"/api-reference/files/create_upload_grant"},{"title":"upload_file","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/workspaces/{workspace_id}/files","href":"/api-reference/files/upload_file"},{"title":"list_files","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/workspaces/{workspace_id}/files","href":"/api-reference/files/list_files"},{"title":"get_file","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/workspaces/{workspace_id}/files/{file_id}","href":"/api-reference/files/get_file"},{"title":"get_file_metadata","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/workspaces/{workspace_id}/files/{file_id}/metadata","href":"/api-reference/files/get_file_metadata"},{"title":"get_file_output","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/workspaces/{workspace_id}/files/{file_id}/outputs/{output_id}","href":"/api-reference/files/get_file_output"},{"title":"list_output_members","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/workspaces/{workspace_id}/files/{file_id}/outputs/{output_id}/members","href":"/api-reference/files/list_output_members"},{"title":"get_file_versions","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/workspaces/{workspace_id}/files/{file_id}/versions","href":"/api-reference/files/get_file_versions"},{"title":"replace_file","deprecated":null,"version":null,"openapi":"/openapi.json put /v1/workspaces/{workspace_id}/files/{file_id}","href":"/api-reference/files/replace_file"},{"title":"delete_file","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/workspaces/{workspace_id}/files/{file_id}","href":"/api-reference/files/delete_file"},{"title":"create_upload_session","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/workspaces/{workspace_id}/upload-sessions","href":"/api-reference/files/create_upload_session"},{"title":"upload_session_part","deprecated":null,"version":null,"openapi":"/openapi.json put /v1/workspaces/{workspace_id}/upload-sessions/{session_id}/parts/{part_number}","href":"/api-reference/files/upload_session_part"},{"title":"get_upload_session","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/workspaces/{workspace_id}/upload-sessions/{session_id}","href":"/api-reference/files/get_upload_session"},{"title":"complete_upload_session","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/workspaces/{workspace_id}/upload-sessions/{session_id}/complete","href":"/api-reference/files/complete_upload_session"},{"title":"abort_upload_session","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/workspaces/{workspace_id}/upload-sessions/{session_id}","href":"/api-reference/files/abort_upload_session"},{"title":"get_artifact_content","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/workspaces/{workspace_id}/artifacts/content","href":"/api-reference/artifacts/get_artifact_content"},{"title":"get_artifact_rows","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/workspaces/{workspace_id}/artifacts/rows","href":"/api-reference/artifacts/get_artifact_rows"}]},{"group":"Ingestion and graph","pages":[{"title":"Ingestion","href":"/api-reference/ingestion"},{"title":"Knowledge graph build","href":"/api-reference/knowledge-graph"},{"title":"ingest","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/workspaces/{workspace_id}/ingestions","href":"/api-reference/ingestion/ingest"},{"title":"reconcile","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/workspaces/{workspace_id}/reconciliations","href":"/api-reference/ingestion/reconcile"},{"title":"build_knowledge_graph","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/workspaces/{workspace_id}/knowledge-graph/builds","href":"/api-reference/knowledge-graph/build_knowledge_graph"}]},{"group":"Tools and search","pages":[{"title":"File tools","href":"/api-reference/file-tools"},{"title":"Fact and deep search (deprecated)","href":"/api-reference/intelligent-search"},{"title":"Filtered search (deprecated)","href":"/api-reference/filtered-search"},{"title":"Journal-entry testing","href":"/api-reference/je-testing"},{"title":"Ledger understanding","href":"/api-reference/ledger-understanding"},{"title":"Automatic search","href":"/api-reference/automatic-search"},{"title":"QA","href":"/api-reference/qa"},{"title":"folder_metadata","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/workspaces/{workspace_id}/tools/folder-metadata","href":"/api-reference/tools/folder_metadata"},{"title":"file_metadata","description":"Describe one uploaded file without opening it: what it is, its category, and the parts you can ask about.\n\n**Cost class: fast.**\n\n``path`` is the file's full path relative to the workspace root, exactly\nas it was uploaded and as ``folder-metadata``, ``GET .../files`` and search\nresults (``source_path``) print it — for example\n``evidence/doc-7f83/contract.pdf``. A bare file name (``contract.pdf``), a\nfolder, a file id, or a path that starts with the workspace id is not\nfound. ``file_not_found`` is final for that value: do not retry it or guess\nvariants — list the folder with ``folder-metadata`` (``name_contains=`` a\npart of the name) and use the path it prints.\n\nThe response gives the file's ``category``, a ``summary`` of its first\nsection or tab, page or tab counts, and its ``components``: each section,\ntab, image or recording with its own summary, categories, page range or\ntable shape, and ``key_terms`` — keywords whose role the source states\n(who a name is, what a date marks). A recording reports its duration.\n``readable`` means ``qa-file`` can answer from the component's text;\n``queryable`` means it is a table ``query-tables`` can compute over. Pass a\ncomponent's ``name`` as ``component`` to scope either tool to it.\n\n``component`` narrows this response to one section or tab by name; a name\nthat matches nothing is refused with ``invalid_request`` listing the valid\nnames. A file that is not ingested yet answers 200 with its\n``ingestion_status`` and no components; a failed one carries\n``ingestion_error``.","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/workspaces/{workspace_id}/tools/file-metadata","href":"/api-reference/tools/file_metadata"},{"title":"catalog","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/workspaces/{workspace_id}/tools/catalog","href":"/api-reference/tools/catalog"},{"title":"locate","description":"Find the pages and tables that hold a piece of information.\n\n**Cost class: medium** — a few seconds on a workspace the navigator has seen; the first call after an\ningestion change reads the workspace's ingestion outputs first.\n\nA decision model walks the workspace's files, sections and pages (built at ingestion) and names the pieces to\nread, best first, with the tables to query — the locate NDI's own navigate-mode agent runs. ``text`` is that\nagent's reply, word for word. Only files the key may see are considered, cut to ``path_prefix`` / ``paths``.\n\nStateless: send back the pieces a previous call offered (``exclude``) and what you have read (``already_read``)\nto be shown something new.","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/workspaces/{workspace_id}/tools/locate","href":"/api-reference/tools/locate"},{"title":"read_file","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/workspaces/{workspace_id}/tools/read-file","href":"/api-reference/tools/read_file"},{"title":"run_sql","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/workspaces/{workspace_id}/tools/run-sql","href":"/api-reference/tools/run_sql"},{"title":"qa_file","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/workspaces/{workspace_id}/tools/qa-file","href":"/api-reference/tools/qa_file"},{"title":"query_tables","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/workspaces/{workspace_id}/tools/query-tables","href":"/api-reference/tools/query_tables"},{"title":"deep_search","deprecated":true,"version":null,"openapi":"/openapi.json post /v1/workspaces/{workspace_id}/deep-search","href":"/api-reference/intelligent-search/deep_search"},{"title":"fact_search","deprecated":true,"version":null,"openapi":"/openapi.json post /v1/workspaces/{workspace_id}/fact-search","href":"/api-reference/intelligent-search/fact_search"},{"title":"filtered_search","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/workspaces/{workspace_id}/filtered-search","href":"/api-reference/filtered-search/filtered_search"},{"title":"je_testing","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/workspaces/{workspace_id}/je-testing","href":"/api-reference/je-testing/je_testing"},{"title":"automatic_search","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/workspaces/{workspace_id}/automatic-search","href":"/api-reference/intelligent-search/automatic_search"},{"title":"qa","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/workspaces/{workspace_id}/qa","href":"/api-reference/intelligent-search/qa"}]},{"group":"Jobs and usage","pages":[{"title":"Jobs","href":"/api-reference/jobs"},{"title":"Usage","href":"/api-reference/usage"},{"title":"list_jobs","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/jobs","href":"/api-reference/operations/list_jobs"},{"title":"get_job","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/jobs/{job_id}","href":"/api-reference/operations/get_job"},{"title":"update_job","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/jobs/{job_id}","href":"/api-reference/operations/update_job"},{"title":"delete_job","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/jobs/{job_id}","href":"/api-reference/operations/delete_job"},{"title":"get_job_request","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/jobs/{job_id}/request","href":"/api-reference/operations/get_job_request"},{"title":"cancel_job","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/jobs/{job_id}/cancel","href":"/api-reference/operations/cancel_job"},{"title":"stream_job_events","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/jobs/{job_id}/events","href":"/api-reference/operations/stream_job_events"},{"title":"get_ground_crop_content","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/jobs/{job_id}/ground-crops/{artifact_ref}","href":"/api-reference/operations/get_ground_crop_content"},{"title":"get_ground_transcript_content","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/jobs/{job_id}/ground-transcript/{artifact_ref}","href":"/api-reference/operations/get_ground_transcript_content"},{"title":"get_parse_transcript_content","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/jobs/{job_id}/parse-transcript/{artifact_ref}","href":"/api-reference/operations/get_parse_transcript_content"},{"title":"get_converted_pdf_content","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/jobs/{job_id}/converted-pdf/{artifact_ref}","href":"/api-reference/operations/get_converted_pdf_content"},{"title":"get_spreadsheet_cell_map_content","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/jobs/{job_id}/spreadsheet-cell-maps/{artifact_ref}","href":"/api-reference/operations/get_spreadsheet_cell_map_content"},{"title":"get_usage","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/usage","href":"/api-reference/operations/get_usage"},{"title":"get_usage_overview","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/usage/overview","href":"/api-reference/operations/get_usage_overview"}]},{"group":"Partners","pages":[{"title":"Tenants","href":"/api-reference/tenants"},{"title":"list_tenants","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/tenants","href":"/api-reference/tenants/list_tenants"},{"title":"put_tenant","deprecated":null,"version":null,"openapi":"/openapi.json put /v1/tenants/{external_ref}","href":"/api-reference/tenants/put_tenant"},{"title":"get_tenant","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/tenants/{external_ref}","href":"/api-reference/tenants/get_tenant"},{"title":"delete_tenant","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/tenants/{external_ref}","href":"/api-reference/tenants/delete_tenant"}]}]},{"tab":"SDKs","versions":[{"version":"Python","groups":[{"group":"Get started","pages":[{"title":"Python SDK","href":"/sdks/python"}]},{"group":"Core methods","pages":[{"title":"Upload","href":"/sdks/python/upload"},{"title":"Parse","href":"/sdks/python/parse"},{"title":"Extract","href":"/sdks/python/extract"},{"title":"Split","href":"/sdks/python/split"},{"title":"Classify","href":"/sdks/python/classify"},{"title":"Ground","href":"/sdks/python/ground"},{"title":"Workspaces","href":"/sdks/python/workspaces"},{"title":"Storage connections","href":"/sdks/python/storage-connections"},{"title":"Deep search (deprecated)","href":"/sdks/python/search"},{"title":"Journal-entry testing","href":"/sdks/python/je-testing"},{"title":"Ledger understanding","href":"/sdks/python/ledger-understanding"},{"title":"Automatic search","href":"/sdks/python/automatic-search"},{"title":"QA","href":"/sdks/python/qa"},{"title":"Drex (Decision Model)","href":"/sdks/python/systemone"}]},{"group":"Async and utilities","pages":[{"title":"Async client","href":"/sdks/python/async"},{"title":"Job management","href":"/sdks/python/job-management"},{"title":"Error handling","href":"/sdks/python/error-handling"}]}]},{"version":"TypeScript","pages":[{"title":"TypeScript","href":"/sdks/typescript"}]}]}]},"basePath":"","title":"catalog - NDI Platform API","buildId":"dpl_GZsjphRpnhWkstV12jxWNcMHFyox","deploymentId":"dpl_GZsjphRpnhWkstV12jxWNcMHFyox","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-B5zPa4Vr.js","utils-CVjrr8Yd.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DTgURWzl.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DxTHtkdZ.js","snippetPresets-Cx47o5Vx.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-4Fr6y9N_.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-Dq2ElbEk.js","shallow-BfYl9r69.js","getApiPlaygroundDisplay-Ch3xc7i1.js","CodeSnippet-BsBxuJ1v.js","CodeSnippets-CetzeDL8.js","Page-CYZot51e.js","getPastedJson-BxPKFSJx.js","icon-o0J1Ochb.js","MethodPill-Du3usO5m.js","DuplicateIcon-DJypyMzl.js","createIcon-YMA6N8KJ.js","DynamicMarkdown-CWvhfcZc.js","SectionHeading-BdLVaXCd.js","axios-vUo_bRtp.js","Markdown-C4Ez6OeV.js","clsx-DptzKFCt.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-Dt1IougW.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-CZ6Wt2Vb.js"]}