{
"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
}
}
locate
Find the pages and tables that hold a piece of information.
Cost class: medium — a few seconds on a workspace the navigator has seen; the first call after an
ingestion change reads the workspace’s ingestion outputs first.
A decision model walks the workspace’s files, sections and pages (built at ingestion) and names the pieces to
read, best first, with the tables to query — the locate NDI’s own navigate-mode agent runs. text is that
agent’s reply, word for word. Only files the key may see are considered, cut to path_prefix / paths.
Stateless: send back the pieces a previous call offered (exclude) and what you have read (already_read)
to be shown something new.
{
"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
}
}
Replaying a request with the same key returns the original job with 200, never a second job. The key is kept with the job for replay and never cleared, so it must not contain personal data.
Request for locate: where in the workspace a piece of information is.
The navigator NDI's own agent calls as ndi-locate, over the files the caller may see. It is stateless: what a
caller was already offered (exclude) and has read (already_read) is left out of the answer only when sent
back, as a run's memory does it for NDI's agent. A call that leaves out nothing is the caller's opening and rates
more files.
The need names a kind of file and every one is wanted (each invoice, every statement): the navigator rates each file of that kind and lists the members in population.
The reply as NDI's own agent reads it: each piece with the command that reads it and its opening text, then a population's members and the tables to query.
Files in folders rated likely to hold members that the budget ran out before rating: when above 0, population is incomplete; narrow the need to a folder, kind or period and locate again with every.
{"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":"bb7700a9-5e4a-46f9-9f46-425b05d81fdf","liveDeploymentHistoryId":"6ae38b0206fe1d05edcfd465","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae38b0206fe1d05edcfd465"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae38dd6c9558d6be3a07bcb","clientVersion":"0.0.4021","searchFilterCounts":[{"language":"default","tag":"API Reference","count":105},{"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":20},{"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":"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":"pause-universal-search-reconcile","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":"per-site-search-delta","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":"editor-private-page-search","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":"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":"byok-sep-25","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":"billing-updated-9-15","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":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/tools/locate","slug":"/api-reference/tools/locate","pageMetadata":{"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","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: \"Find the pages and tables that hold a piece of information.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Cost class: medium\"\n }), \" — 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 }), \"\\n\", _jsxs(_components.p, {\n children: [\"A 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. \", _jsx(_components.code, {\n children: \"text\"\n }), \" is that\\nagent’s reply, word for word. Only files the key may see are considered, cut to \", _jsx(_components.code, {\n children: \"path_prefix\"\n }), \" / \", _jsx(_components.code, {\n children: \"paths\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Stateless: send back the pieces a previous call offered (\", _jsx(_components.code, {\n children: \"exclude\"\n }), \") and what you have read (\", _jsx(_components.code, {\n children: \"already_read\"\n }), \")\\nto be shown something new.\"]\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":"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","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"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.","operationId":"locate_v1_workspaces__workspace_id__tools_locate_post","parameters":["4d9bdd17-8d5d-4ad3-bc36-60a0da9b9bb0","2630a68c-5f08-4638-8f9c-c5af1c418f9f"],"requestBody":"581b6662-36d0-417b-b993-342b12d4d632","responses":{"200":"c53ffccc-45dd-485f-abfa-f3a974bbb8ba","504":"d3d4f16d-0fe2-4f17-b76b-3f5283191866","default":"576367f2-c119-4a12-a827-85494b34d809"},"security":["47a2b452-7e51-4f5f-ae0a-91b8bf8ffd43"],"summary":"locate","tags":["tools"],"method":"post","type":"path","servers":["eacc9f52-2b49-4ba8-ab98-c9e34e13dac3"],"path":"/v1/workspaces/{workspace_id}/tools/locate","baseUrlOptions":["https://ndi-api.nace.ai"],"title":"locate","codeSamples":[],"requestExampleLanguages":["bash"],"requiredOnlyExamples":true,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"4d9bdd17-8d5d-4ad3-bc36-60a0da9b9bb0":{"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>"}},"2630a68c-5f08-4638-8f9c-c5af1c418f9f":{"description":"Replaying a request with the same key returns the original job with 200, never a second job. The key is kept with the job for replay and never cleared, so it must not contain personal data.","in":"header","name":"Idempotency-Key","required":false,"schema":{"oneOf":[{"type":"string","title":"Idempotency-Key","description":"Replaying a request with the same key returns the original job with 200, never a second job. The key is kept with the job for replay and never cleared, so it must not contain personal data.","maxLength":200,"uniqueKey":"oneOf.0","typeLabel":"string"},{"type":"null","title":"Idempotency-Key","description":"Replaying a request with the same key returns the original job with 200, never a second job. The key is kept with the job for replay and never cleared, so it must not contain personal data.","uniqueKey":"oneOf.1","typeLabel":"null"}],"isRequired":false,"uniqueKey":"","typeLabel":"string | null"}}},"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"description":"Request for ``locate``: where in the workspace a piece of information is.\n\nThe navigator NDI's own agent calls as ``ndi-locate``, over the files the caller may see. It is stateless: what a\ncaller was already offered (``exclude``) and has read (``already_read``) is left out of the answer only when sent\nback, as a run's memory does it for NDI's agent. A call that leaves out nothing is the caller's opening and rates\nmore files.","properties":{"need":{"description":"What is still needed, in a few words: a year, an entity, a line item, a definition.","maxLength":400,"minLength":1,"title":"Need","type":"string","isRequired":true,"uniqueKey":"need","typeLabel":"string"},"already_read":{"description":"Reads already done: their pieces are left out, and the navigator is told they did not settle the need.","items":{"additionalProperties":false,"description":"A read already done: pages of a paged file, a line span of a text file, or the whole file (neither given).","properties":{"path":{"description":"The file's uploaded source path.","maxLength":1024,"minLength":1,"title":"Path","type":"string","isRequired":true,"uniqueKey":"already_read.items.[INDEX].path","typeLabel":"string"},"component":{"oneOf":[{"type":"string","title":"Component","description":"The tab or section read; null for the file's own text, or every tab of a whole read.","maxLength":1024,"uniqueKey":"already_read.items.[INDEX].component.oneOf.0","typeLabel":"string"},{"type":"null","title":"Component","description":"The tab or section read; null for the file's own text, or every tab of a whole read.","uniqueKey":"already_read.items.[INDEX].component.oneOf.1","typeLabel":"null"}],"uniqueKey":"already_read.items.[INDEX].component","typeLabel":"string | null"},"line_end":{"oneOf":[{"type":"integer","title":"Line End","description":"Last line read; null to the end.","minimum":1,"uniqueKey":"already_read.items.[INDEX].line_end.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Line End","description":"Last line read; null to the end.","uniqueKey":"already_read.items.[INDEX].line_end.oneOf.1","typeLabel":"null"}],"uniqueKey":"already_read.items.[INDEX].line_end","typeLabel":"integer | null"},"line_start":{"oneOf":[{"type":"integer","title":"Line Start","description":"First line read; null from line 1.","minimum":1,"uniqueKey":"already_read.items.[INDEX].line_start.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Line Start","description":"First line read; null from line 1.","uniqueKey":"already_read.items.[INDEX].line_start.oneOf.1","typeLabel":"null"}],"uniqueKey":"already_read.items.[INDEX].line_start","typeLabel":"integer | null"},"pages":{"oneOf":[{"type":"array","items":{"minimum":1,"type":"integer","uniqueKey":"already_read.items.[INDEX].pages.oneOf.0.items.[INDEX]","typeLabel":"integer"},"title":"Pages","description":"The page numbers that were read.","maxItems":1000,"minItems":1,"uniqueKey":"already_read.items.[INDEX].pages.oneOf.0","typeLabel":"integer[]"},{"type":"null","title":"Pages","description":"The page numbers that were read.","uniqueKey":"already_read.items.[INDEX].pages.oneOf.1","typeLabel":"null"}],"uniqueKey":"already_read.items.[INDEX].pages","typeLabel":"integer[] | null"}},"required":["path"],"title":"LocateRead","type":"object","uniqueKey":"already_read.items.[INDEX]","typeLabel":"LocateRead · object"},"maxItems":1000,"title":"Already Read","type":"array","uniqueKey":"already_read","typeLabel":"LocateRead · object[]"},"every":{"default":false,"description":"The need names a kind of file and every one is wanted (each invoice, every statement): the navigator rates each file of that kind and lists the members in `population`.","title":"Every","type":"boolean","uniqueKey":"every","typeLabel":"boolean"},"exclude":{"description":"Pieces earlier locates offered, left out of this answer.","items":{"additionalProperties":false,"description":"A piece a previous locate offered, as its `pages[]` entry named it.","properties":{"number":{"description":"The piece's `number`: a page, or a text file's window.","minimum":1,"title":"Number","type":"integer","isRequired":true,"uniqueKey":"exclude.items.[INDEX].number","typeLabel":"integer"},"path":{"description":"The file's uploaded source path.","maxLength":1024,"minLength":1,"title":"Path","type":"string","isRequired":true,"uniqueKey":"exclude.items.[INDEX].path","typeLabel":"string"},"component":{"oneOf":[{"type":"string","title":"Component","description":"The piece's `component` (a tab or section); null when it had none.","maxLength":1024,"uniqueKey":"exclude.items.[INDEX].component.oneOf.0","typeLabel":"string"},{"type":"null","title":"Component","description":"The piece's `component` (a tab or section); null when it had none.","uniqueKey":"exclude.items.[INDEX].component.oneOf.1","typeLabel":"null"}],"uniqueKey":"exclude.items.[INDEX].component","typeLabel":"string | null"}},"required":["path","number"],"title":"LocatePiece","type":"object","uniqueKey":"exclude.items.[INDEX]","typeLabel":"LocatePiece · object"},"maxItems":1000,"title":"Exclude","type":"array","uniqueKey":"exclude","typeLabel":"LocatePiece · object[]"},"k":{"default":12,"description":"How many pieces to name.","maximum":24,"minimum":1,"title":"K","type":"integer","uniqueKey":"k","typeLabel":"integer"},"path_prefix":{"oneOf":[{"type":"string","title":"Path Prefix","description":"Only files under this folder, workspace-relative; `paths` adds files. Omit both for the whole workspace.","uniqueKey":"path_prefix.oneOf.0","typeLabel":"string"},{"type":"null","title":"Path Prefix","description":"Only files under this folder, workspace-relative; `paths` adds files. Omit both for the whole workspace.","uniqueKey":"path_prefix.oneOf.1","typeLabel":"null"}],"uniqueKey":"path_prefix","typeLabel":"string | null"},"paths":{"oneOf":[{"type":"array","items":{"maxLength":1024,"minLength":1,"type":"string","uniqueKey":"paths.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Paths","description":"Only these uploaded files (with `path_prefix`, its folder's files too). Unknown or inaccessible paths are refused.","minItems":1,"uniqueKey":"paths.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Paths","description":"Only these uploaded files (with `path_prefix`, its folder's files too). Unknown or inaccessible paths are refused.","uniqueKey":"paths.oneOf.1","typeLabel":"null"}],"uniqueKey":"paths","typeLabel":"string[] | null"},"question":{"oneOf":[{"type":"string","title":"Question","description":"The whole question the need is part of; every decision weighs the need within it. Omit it and the need is the whole question.","maxLength":4096,"minLength":1,"uniqueKey":"question.oneOf.0","typeLabel":"string"},{"type":"null","title":"Question","description":"The whole question the need is part of; every decision weighs the need within it. Omit it and the need is the whole question.","uniqueKey":"question.oneOf.1","typeLabel":"null"}],"uniqueKey":"question","typeLabel":"string | null"}},"required":["need"],"title":"LocateRequest","type":"object","uniqueKey":"","typeLabel":"LocateRequest · object"},"examples":{"Example":{"title":"Example","value":{"need":"\u003cstring>","already_read":[{"path":"\u003cstring>","component":"\u003cstring>","line_end":2,"line_start":2,"pages":[2]}],"every":false,"exclude":[{"number":2,"path":"\u003cstring>","component":"\u003cstring>"}],"k":12,"path_prefix":"\u003cstring>","paths":["\u003cstring>"],"question":"\u003cstring>"}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"c53ffccc-45dd-485f-abfa-f3a974bbb8ba":{"content":{"application/json":{"schema":{"additionalProperties":false,"description":"Response of ``locate``: the reply NDI's agent reads, and the same findings as fields.","properties":{"pages":{"description":"The pieces named, best first.","items":{"additionalProperties":false,"description":"A piece the navigator named: a page of a paged document, or a line window of a text file.","properties":{"head":{"description":"The piece's opening text, cut where the reply text cuts it.","title":"Head","type":"string","isRequired":true,"uniqueKey":"pages.items.[INDEX].head","typeLabel":"string"},"number":{"description":"The page number, or the window's number in a text file.","title":"Number","type":"integer","isRequired":true,"uniqueKey":"pages.items.[INDEX].number","typeLabel":"integer"},"paged":{"description":"True for a page (read it by `number`); false for a window of lines.","title":"Paged","type":"boolean","isRequired":true,"uniqueKey":"pages.items.[INDEX].paged","typeLabel":"boolean"},"path":{"description":"Uploaded source path of the file.","title":"Path","type":"string","isRequired":true,"uniqueKey":"pages.items.[INDEX].path","typeLabel":"string"},"score":{"description":"How likely the piece holds what is needed, 0 to 1.","title":"Score","type":"number","isRequired":true,"uniqueKey":"pages.items.[INDEX].score","typeLabel":"number"},"component":{"oneOf":[{"type":"string","title":"Component","description":"The tab or section a read of the piece names; null when the file's text is one.","uniqueKey":"pages.items.[INDEX].component.oneOf.0","typeLabel":"string"},{"type":"null","title":"Component","description":"The tab or section a read of the piece names; null when the file's text is one.","uniqueKey":"pages.items.[INDEX].component.oneOf.1","typeLabel":"null"}],"uniqueKey":"pages.items.[INDEX].component","typeLabel":"string | null"},"line_end":{"oneOf":[{"type":"integer","title":"Line End","description":"A window's last line, inclusive.","uniqueKey":"pages.items.[INDEX].line_end.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Line End","description":"A window's last line, inclusive.","uniqueKey":"pages.items.[INDEX].line_end.oneOf.1","typeLabel":"null"}],"uniqueKey":"pages.items.[INDEX].line_end","typeLabel":"integer | null"},"line_start":{"oneOf":[{"type":"integer","title":"Line Start","description":"A window's first line, as read-file numbers lines.","uniqueKey":"pages.items.[INDEX].line_start.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Line Start","description":"A window's first line, as read-file numbers lines.","uniqueKey":"pages.items.[INDEX].line_start.oneOf.1","typeLabel":"null"}],"uniqueKey":"pages.items.[INDEX].line_start","typeLabel":"integer | null"}},"required":["path","paged","number","score","head"],"title":"LocatedPiece","type":"object","uniqueKey":"pages.items.[INDEX]","typeLabel":"LocatedPiece · object"},"title":"Pages","type":"array","isRequired":true,"uniqueKey":"pages","typeLabel":"LocatedPiece · object[]"},"population":{"description":"Set when answering needs every file of a kind (each invoice, every contract): the members, best first.","items":{"additionalProperties":false,"description":"A file rated a member when the question needs every file of a kind.","properties":{"path":{"description":"The file's uploaded source path.","title":"Path","type":"string","isRequired":true,"uniqueKey":"population.items.[INDEX].path","typeLabel":"string"},"score":{"description":"How likely the file is a member, 0 to 1.","title":"Score","type":"number","isRequired":true,"uniqueKey":"population.items.[INDEX].score","typeLabel":"number"}},"required":["path","score"],"title":"LocatedMember","type":"object","uniqueKey":"population.items.[INDEX]","typeLabel":"LocatedMember · object"},"title":"Population","type":"array","isRequired":true,"uniqueKey":"population","typeLabel":"LocatedMember · object[]"},"tables":{"description":"The tables rated for the need, best first.","items":{"additionalProperties":false,"description":"A queryable table the navigator rated for the need.","properties":{"columns":{"description":"Every column of the table, in order.","items":{"type":"string","uniqueKey":"tables.items.[INDEX].columns.items.[INDEX]","typeLabel":"string"},"title":"Columns","type":"array","isRequired":true,"uniqueKey":"tables.items.[INDEX].columns","typeLabel":"string[]"},"path":{"description":"Uploaded source path of the file holding it.","title":"Path","type":"string","isRequired":true,"uniqueKey":"tables.items.[INDEX].path","typeLabel":"string"},"relevant_columns":{"description":"The columns a query for the need reads, when rated.","items":{"type":"string","uniqueKey":"tables.items.[INDEX].relevant_columns.items.[INDEX]","typeLabel":"string"},"title":"Relevant Columns","type":"array","isRequired":true,"uniqueKey":"tables.items.[INDEX].relevant_columns","typeLabel":"string[]"},"score":{"description":"How likely its rows answer the need, 0 to 1.","title":"Score","type":"number","isRequired":true,"uniqueKey":"tables.items.[INDEX].score","typeLabel":"number"},"sql_table":{"description":"The table's name in SQL queries.","title":"Sql Table","type":"string","isRequired":true,"uniqueKey":"tables.items.[INDEX].sql_table","typeLabel":"string"},"tab":{"oneOf":[{"type":"string","title":"Tab","description":"The workbook tab, when it is one.","uniqueKey":"tables.items.[INDEX].tab.oneOf.0","typeLabel":"string"},{"type":"null","title":"Tab","description":"The workbook tab, when it is one.","uniqueKey":"tables.items.[INDEX].tab.oneOf.1","typeLabel":"null"}],"uniqueKey":"tables.items.[INDEX].tab","typeLabel":"string | null"}},"required":["sql_table","path","score","columns","relevant_columns"],"title":"LocatedTableRef","type":"object","uniqueKey":"tables.items.[INDEX]","typeLabel":"LocatedTableRef · object"},"title":"Tables","type":"array","isRequired":true,"uniqueKey":"tables","typeLabel":"LocatedTableRef · object[]"},"text":{"description":"The reply as NDI's own agent reads it: each piece with the command that reads it and its opening text, then a population's members and the tables to query.","title":"Text","type":"string","isRequired":true,"uniqueKey":"text","typeLabel":"string"},"job_id":{"oneOf":[{"type":"string","title":"Job Id","description":"The external operation job.","format":"uuid","uniqueKey":"job_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","title":"Job Id","description":"The external operation job.","uniqueKey":"job_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"job_id","typeLabel":"string\u003cuuid> | null"},"population_unrated":{"default":0,"description":"Files in folders rated likely to hold members that the budget ran out before rating: when above 0, `population` is incomplete; narrow the need to a folder, kind or period and locate again with `every`.","title":"Population Unrated","type":"integer","uniqueKey":"population_unrated","typeLabel":"integer"}},"required":["text","pages","tables","population"],"title":"LocateResponse","type":"object","uniqueKey":"","typeLabel":"LocateResponse · object"},"examples":{"Example":{"title":"Example","value":{"pages":[{"head":"\u003cstring>","number":123,"paged":true,"path":"\u003cstring>","score":123,"component":"\u003cstring>","line_end":123,"line_start":123}],"population":[{"path":"\u003cstring>","score":123}],"tables":[{"columns":["\u003cstring>"],"path":"\u003cstring>","relevant_columns":["\u003cstring>"],"score":123,"sql_table":"\u003cstring>","tab":"\u003cstring>"}],"text":"\u003cstring>","job_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","population_unrated":0}}},"exampleType":"generated"}},"description":"Successful Response","exampleType":"generated"},"d3d4f16d-0fe2-4f17-b76b-3f5283191866":{"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"},"576367f2-c119-4a12-a827-85494b34d809":{"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":{"47a2b452-7e51-4f5f-ae0a-91b8bf8ffd43":{"APIKeyHeader":{"in":"header","name":"X-API-Key","type":"apiKey","scopes":[],"schemeName":"APIKeyHeader"}}},"servers":{"eacc9f52-2b49-4ba8-ab98-c9e34e13dac3":{"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":"locate - NDI Platform API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-29T18:06:04.132Z","originalFileLocation":"api-reference/tools/locate.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=\"Find the pages and tables that hold a piece of information. Cost class: medium — a few seconds on a workspace the navigator has seen; the first call after an ingestion change reads the workspace\u0026#x27;s ingestion outputs first. A decision model walks the workspace\u0026#x27;s files, sections and pages (built at ingestion) and names the pieces to read, best first, with the tables to query — the locate NDI\u0026#x27;s own navigate-mode agent runs. text is that agent\u0026#x27;s reply, word for word. Only files the key may see are considered, cut to path_prefix / paths. Stateless: send back the pieces a previous call offered (exclude) and what you have read (already_read) to be shown something new.\">\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=\"locate - NDI Platform API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Find the pages and tables that hold a piece of information. Cost class: medium — a few seconds on a workspace the navigator has seen; the first call after an ingestion change reads the workspace\u0026#x27;s ingestion outputs first. A decision model walks the workspace\u0026#x27;s files, sections and pages (built at ingestion) and names the pieces to read, best first, with the tables to query — the locate NDI\u0026#x27;s own navigate-mode agent runs. text is that agent\u0026#x27;s reply, word for word. Only files the key may see are considered, cut to path_prefix / paths. Stateless: send back the pieces a previous call offered (exclude) and what you have read (already_read) to be shown something new.\">\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/locate\">\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=locate\u0026amp;description=Find+the+pages+and+tables+that+hold+a+piece+of+information.%0A%0A**Cost+class%3A+medium**+%E2%80%94+a+few+seconds+on+a+workspace+the+navigator+has+seen%3B+the+first+call+after+\u0026amp;theme=c2c8dd1a1eb024c2dfeaad33\u0026amp;signature=3b773c905fe24f1223204ffd50e69d46c1cf329fba3eb2fb0eb1d27b4305aee8\">\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=\"locate - NDI Platform API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Find the pages and tables that hold a piece of information. Cost class: medium — a few seconds on a workspace the navigator has seen; the first call after an ingestion change reads the workspace\u0026#x27;s ingestion outputs first. A decision model walks the workspace\u0026#x27;s files, sections and pages (built at ingestion) and names the pieces to read, best first, with the tables to query — the locate NDI\u0026#x27;s own navigate-mode agent runs. text is that agent\u0026#x27;s reply, word for word. Only files the key may see are considered, cut to path_prefix / paths. Stateless: send back the pieces a previous call offered (exclude) and what you have read (already_read) to be shown something new.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://nace-ai.mintlify.app/_mintlify/api/og/v2?division=Tools+and+search\u0026amp;title=locate\u0026amp;description=Find+the+pages+and+tables+that+hold+a+piece+of+information.%0A%0A**Cost+class%3A+medium**+%E2%80%94+a+few+seconds+on+a+workspace+the+navigator+has+seen%3B+the+first+call+after+\u0026amp;theme=c2c8dd1a1eb024c2dfeaad33\u0026amp;signature=3b773c905fe24f1223204ffd50e69d46c1cf329fba3eb2fb0eb1d27b4305aee8\">\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/locate\">\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/locate.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/locate#webpage\",\"url\":\"https://docs.ndi.nace.ai/api-reference/tools/locate\",\"name\":\"locate\",\"description\":\"Find the pages and tables that hold a piece of information. Cost class: medium — a few seconds on a workspace the navigator has seen; the first call after an ingestion change reads the workspace's ingestion outputs first. A decision model walks the workspace's files, sections and pages (built at ingestion) and names the pieces to read, best first, with the tables to query — the locate NDI's own navigate-mode agent runs. text is that agent's reply, word for word. Only files the key may see are considered, cut to path_prefix / paths. Stateless: send back the pieces a previous call offered (exclude) and what you have read (already_read) to be shown something new.\",\"dateModified\":\"2026-10-29T18:06:04.132Z\",\"isPartOf\":{\"@id\":\"https://docs.ndi.nace.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.ndi.nace.ai/api-reference/tools/locate#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.ndi.nace.ai/api-reference/tools/locate#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\":\"locate\",\"item\":\"https://docs.ndi.nace.ai/api-reference/tools/locate\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.ndi.nace.ai/api-reference/tools/locate#apireference\",\"headline\":\"locate\",\"name\":\"locate\",\"description\":\"Find the pages and tables that hold a piece of information. Cost class: medium — a few seconds on a workspace the navigator has seen; the first call after an ingestion change reads the workspace's ingestion outputs first. A decision model walks the workspace's files, sections and pages (built at ingestion) and names the pieces to read, best first, with the tables to query — the locate NDI's own navigate-mode agent runs. text is that agent's reply, word for word. Only files the key may see are considered, cut to path_prefix / paths. Stateless: send back the pieces a previous call offered (exclude) and what you have read (already_read) to be shown something new.\",\"url\":\"https://docs.ndi.nace.ai/api-reference/tools/locate\",\"mainEntityOfPage\":{\"@id\":\"https://docs.ndi.nace.ai/api-reference/tools/locate#webpage\"},\"dateModified\":\"2026-10-29T18:06:04.132Z\",\"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":"locate","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/workspaces/{workspace_id}/tools/locate","href":"/api-reference/tools/locate"},{"title":"read_file","description":"Read the text of one uploaded file.\n\n**Cost class: fast.**\n\n``path`` names an **uploaded source file** — the only namespace this tool\nserves. A workspace-internal path is refused with ``invalid_request``\nnaming the uploaded file to use instead.\n\nA file with several components (a spreadsheet's tabs, a pdf's sections)\nanswers with their text concatenated in the file's own order, each part\nunder a one-line header naming the component; ``components_returned`` and\n``components_omitted`` report exactly what made it into the budget. Scope\nthe read with ``component=\u003cname>`` (the names ``file_metadata`` lists)\nwhen only one tab or section matters, and with ``pages`` (1-based) for\npaged documents — spreadsheets have no pages, so scope those by component\ninstead. Images are refused — ask about them with ``qa_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"}]}]}]},"title":"locate - NDI Platform API","buildId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","deploymentId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-26-lDe7V.js","utils-CWQmgYtH.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-4-Aw3rSD.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-C2zjXYA5.js","snippetPresets-DFmpFA7C.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-FJpQavWq.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-D_GvPF7k.js","shallow-Bs2ZB0NO.js","getApiPlaygroundDisplay-DCcqJJk-.js","CodeSnippet-DzDxawVe.js","CodeSnippets-aUr7fU-7.js","Page-CT9uE8Ip.js","getPastedJson-Y1fKsj_I.js","icon-DI4zTsDr.js","MethodPill-C0nDlmSQ.js","DuplicateIcon-NUXbx2nQ.js","createIcon-BdTHrPAi.js","DynamicMarkdown-CtpgKJwj.js","SectionHeading-B3x35tOt.js","axios-vUo_bRtp.js","Markdown-3OmurJMP.js","clsx-DMKzROTp.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-1ms6tsT-.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-Ke9xIMFx.js"]}