{
"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
}
}
read_file
Read the text of one uploaded file.
Cost class: fast.
path names an uploaded source file — the only namespace this tool
serves. A workspace-internal path is refused with invalid_request
naming the uploaded file to use instead.
A file with several components (a spreadsheet’s tabs, a pdf’s sections)
answers with their text concatenated in the file’s own order, each part
under a one-line header naming the component; components_returned and
components_omitted report exactly what made it into the budget. Scope
the read with component=<name> (the names file_metadata lists)
when only one tab or section matters, and with pages (1-based) for
paged documents — spreadsheets have no pages, so scope those by component
instead. Images are refused — ask about them with qa_file.
{
"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.
path names an uploaded source file — the only namespace this tool
serves. A workspace-internal derivative path is refused with
invalid_request naming the uploaded file that owns it.
component scopes the read to one public component by name — a
spreadsheet tab or a pdf section, as listed by file-metadata.
pages is 1-based and selects on the file's absolute page numbers;
out-of-range pages are ignored (absent from pages_returned). Selected
pages come back de-duplicated in document order, whatever order they were
asked in. Spreadsheets have no pages — scope those with component
instead.
The uploaded file's full path relative to the workspace root, exactly as it was uploaded and as listings and search results print it — e.g. evidence/doc-7f83/contract.pdf. Not a bare file name (a file's file_name), a folder, a file id, or a path that starts with the workspace id.
1-based page numbers to read; omitted: every page. Spreadsheets have no pages.
Response
Successful Response
Response body for read-file.
A file with several components (a spreadsheet's tabs, a pdf's sections)
answers with their text concatenated in the file's own order, each part
prefixed by a one-line header naming the component. components_returned
lists what contributed to content; components_omitted lists
components that were cut for size — the character budget ran out, or a
part was too large to serve — or that have no text rendering at all (a
query-only tab; ask it with qa-file) — so an absent component is
always visible, never a silently missing tab. Unnamed components (a
recording, a raw upload) are listed by kind. A table a PDF page holds
comes as rows — one | a | b | line each under a header that joins the
stacked column headings — the way grep and hybrid-search print it.
The run-sql names of the tables holding the rows of the long tables printed in the returned sections — count, total or rank those rows there rather than from the text.
When a line range starts inside a table, below its header row: that table's lines, title and header, so the rows read with their column names.
Show child attributes
{"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/read_file","slug":"/api-reference/tools/read_file","pageMetadata":{"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","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: \"Read the text of one uploaded file.\"\n }), \"\\n\", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: \"Cost class: fast.\"\n })\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"path\"\n }), \" names an \", _jsx(_components.strong, {\n children: \"uploaded source file\"\n }), \" — the only namespace this tool\\nserves. A workspace-internal path is refused with \", _jsx(_components.code, {\n children: \"invalid_request\"\n }), \"\\nnaming the uploaded file to use instead.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"A 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; \", _jsx(_components.code, {\n children: \"components_returned\"\n }), \" and\\n\", _jsx(_components.code, {\n children: \"components_omitted\"\n }), \" report exactly what made it into the budget. Scope\\nthe read with \", _jsx(_components.code, {\n children: \"component=\u003cname>\"\n }), \" (the names \", _jsx(_components.code, {\n children: \"file_metadata\"\n }), \" lists)\\nwhen only one tab or section matters, and with \", _jsx(_components.code, {\n children: \"pages\"\n }), \" (1-based) for\\npaged documents — spreadsheets have no pages, so scope those by component\\ninstead. Images are refused — ask about them with \", _jsx(_components.code, {\n children: \"qa_file\"\n }), \".\"]\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":"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","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"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``.","operationId":"read_file_v1_workspaces__workspace_id__tools_read_file_post","parameters":["d5e86102-4010-479b-978e-d741c82c247a","2a64ba7e-2ecd-4a88-accb-effbe92770de"],"requestBody":"61382549-a566-4024-88b8-c761fcf3fb4e","responses":{"200":"777bace0-0d8f-4a66-a73f-86bcc6d9fc8e","504":"8e5294b1-9cb8-42df-a4c4-06236605b987","default":"c0329dd2-8061-44d6-836d-a60a9b1aa978"},"security":["03902cdf-ebfd-4abf-bfc2-fa939154eedb"],"summary":"read_file","tags":["tools"],"method":"post","type":"path","servers":["eacc9f52-2b49-4ba8-ab98-c9e34e13dac3"],"path":"/v1/workspaces/{workspace_id}/tools/read-file","baseUrlOptions":["https://ndi-api.nace.ai"],"title":"read_file","codeSamples":[],"requestExampleLanguages":["bash"],"requiredOnlyExamples":true,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"d5e86102-4010-479b-978e-d741c82c247a":{"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>"}},"2a64ba7e-2ecd-4a88-accb-effbe92770de":{"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 body for ``read-file``.\n\n``path`` names an **uploaded source file** — the only namespace this tool\nserves. A workspace-internal derivative path is refused with\n``invalid_request`` naming the uploaded file that owns it.\n\n``component`` scopes the read to one public component by name — a\nspreadsheet tab or a pdf section, as listed by ``file-metadata``.\n\n``pages`` is 1-based and selects on the file's absolute page numbers;\nout-of-range pages are ignored (absent from ``pages_returned``). Selected\npages come back de-duplicated in document order, whatever order they were\nasked in. Spreadsheets have no pages — scope those with ``component``\ninstead.","properties":{"path":{"description":"The uploaded file's full path relative to the workspace root, exactly as it was uploaded and as listings and search results print it — e.g. `evidence/doc-7f83/contract.pdf`. Not a bare file name (a file's `file_name`), a folder, a file id, or a path that starts with the workspace id.","maxLength":1024,"minLength":1,"title":"Path","type":"string","isRequired":true,"uniqueKey":"path","typeLabel":"string"},"component":{"oneOf":[{"type":"string","title":"Component","description":"One tab or section to read, named as file-metadata lists it; omitted: the whole file.","uniqueKey":"component.oneOf.0","typeLabel":"string"},{"type":"null","title":"Component","description":"One tab or section to read, named as file-metadata lists it; omitted: the whole file.","uniqueKey":"component.oneOf.1","typeLabel":"null"}],"uniqueKey":"component","typeLabel":"string | null"},"line_end":{"oneOf":[{"type":"integer","title":"Line End","description":"Last line to return, inclusive and 1-based like line_start. Omitted: the last line.","minimum":1,"uniqueKey":"line_end.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Line End","description":"Last line to return, inclusive and 1-based like line_start. Omitted: the last line.","uniqueKey":"line_end.oneOf.1","typeLabel":"null"}],"uniqueKey":"line_end","typeLabel":"integer | null"},"line_start":{"oneOf":[{"type":"integer","title":"Line Start","description":"First line to return, 1-based, counted in the text this read would return without a line range (after component and page selection). Omitted: line 1.","minimum":1,"uniqueKey":"line_start.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Line Start","description":"First line to return, 1-based, counted in the text this read would return without a line range (after component and page selection). Omitted: line 1.","uniqueKey":"line_start.oneOf.1","typeLabel":"null"}],"uniqueKey":"line_start","typeLabel":"integer | null"},"max_chars":{"default":200000,"description":"Character budget for the returned text; past it `truncated` is true.","maximum":1000000,"minimum":1,"title":"Max Chars","type":"integer","uniqueKey":"max_chars","typeLabel":"integer"},"pages":{"oneOf":[{"type":"array","items":{"type":"integer","uniqueKey":"pages.oneOf.0.items.[INDEX]","typeLabel":"integer"},"title":"Pages","description":"1-based page numbers to read; omitted: every page. Spreadsheets have no pages.","uniqueKey":"pages.oneOf.0","typeLabel":"integer[]"},{"type":"null","title":"Pages","description":"1-based page numbers to read; omitted: every page. Spreadsheets have no pages.","uniqueKey":"pages.oneOf.1","typeLabel":"null"}],"uniqueKey":"pages","typeLabel":"integer[] | null"}},"required":["path"],"title":"ReadFileRequest","type":"object","uniqueKey":"","typeLabel":"ReadFileRequest · object"},"examples":{"Example":{"title":"Example","value":{"path":"\u003cstring>","component":"\u003cstring>","line_end":2,"line_start":2,"max_chars":200000,"pages":[123]}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"777bace0-0d8f-4a66-a73f-86bcc6d9fc8e":{"content":{"application/json":{"schema":{"additionalProperties":false,"description":"Response body for ``read-file``.\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\nprefixed by a one-line header naming the component. ``components_returned``\nlists what contributed to ``content``; ``components_omitted`` lists\ncomponents that were cut for size — the character budget ran out, or a\npart was too large to serve — or that have no text rendering at all (a\nquery-only tab; ask it with ``qa-file``) — so an absent component is\nalways visible, never a silently missing tab. Unnamed components (a\nrecording, a raw upload) are listed by kind. A table a PDF page holds\ncomes as rows — one ``| a | b |`` line each under a header that joins the\nstacked column headings — the way grep and hybrid-search print it.","properties":{"components_omitted":{"items":{"type":"string","uniqueKey":"components_omitted.items.[INDEX]","typeLabel":"string"},"title":"Components Omitted","type":"array","isRequired":true,"uniqueKey":"components_omitted","typeLabel":"string[]"},"components_returned":{"items":{"type":"string","uniqueKey":"components_returned.items.[INDEX]","typeLabel":"string"},"title":"Components Returned","type":"array","isRequired":true,"uniqueKey":"components_returned","typeLabel":"string[]"},"content":{"title":"Content","type":"string","isRequired":true,"uniqueKey":"content","typeLabel":"string"},"file_id":{"format":"uuid","title":"File Id","type":"string","isRequired":true,"uniqueKey":"file_id","typeLabel":"string\u003cuuid>"},"pages_returned":{"items":{"type":"integer","uniqueKey":"pages_returned.items.[INDEX]","typeLabel":"integer"},"title":"Pages Returned","type":"array","isRequired":true,"uniqueKey":"pages_returned","typeLabel":"integer[]"},"path":{"title":"Path","type":"string","isRequired":true,"uniqueKey":"path","typeLabel":"string"},"truncated":{"title":"Truncated","type":"boolean","isRequired":true,"uniqueKey":"truncated","typeLabel":"boolean"},"job_id":{"oneOf":[{"type":"string","title":"Job Id","description":"The external operation job; absent for commands inside a search job.","format":"uuid","uniqueKey":"job_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","title":"Job Id","description":"The external operation job; absent for commands inside a search job.","uniqueKey":"job_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"job_id","typeLabel":"string\u003cuuid> | null"},"line_count":{"oneOf":[{"type":"integer","title":"Line Count","description":"How many lines the whole selected text has, when the request named a line range; None otherwise.","uniqueKey":"line_count.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Line Count","description":"How many lines the whole selected text has, when the request named a line range; None otherwise.","uniqueKey":"line_count.oneOf.1","typeLabel":"null"}],"uniqueKey":"line_count","typeLabel":"integer | null"},"line_end":{"oneOf":[{"type":"integer","title":"Line End","description":"Last line returned (inclusive) when the request named a line range; None otherwise or when line_start is past the end of the text.","uniqueKey":"line_end.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Line End","description":"Last line returned (inclusive) when the request named a line range; None otherwise or when line_start is past the end of the text.","uniqueKey":"line_end.oneOf.1","typeLabel":"null"}],"uniqueKey":"line_end","typeLabel":"integer | null"},"line_start":{"oneOf":[{"type":"integer","title":"Line Start","description":"First line returned (1-based) when the request named a line range; None otherwise.","uniqueKey":"line_start.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Line Start","description":"First line returned (1-based) when the request named a line range; None otherwise.","uniqueKey":"line_start.oneOf.1","typeLabel":"null"}],"uniqueKey":"line_start","typeLabel":"integer | null"},"sql_tables":{"description":"The run-sql names of the tables holding the rows of the long tables printed in the returned sections — count, total or rank those rows there rather than from the text.","items":{"type":"string","uniqueKey":"sql_tables.items.[INDEX]","typeLabel":"string"},"title":"Sql Tables","type":"array","uniqueKey":"sql_tables","typeLabel":"string[]"},"table":{"oneOf":[{"type":"object","title":"GrepTable","description":"When a line range starts inside a table, below its header row: that table's lines, title and header, so the rows read with their column names.","required":["first_line","last_line","title","header"],"properties":{"first_line":{"description":"Line of the table's first row (its header), in read-file's line numbers.","title":"First Line","type":"integer","isRequired":true,"uniqueKey":"table.oneOf.0.first_line","typeLabel":"integer"},"header":{"description":"The column names: the table's first row, or for an HTML table every header row joined per column with ' > ' (empty when it has none), clipped when very wide.","title":"Header","type":"string","isRequired":true,"uniqueKey":"table.oneOf.0.header","typeLabel":"string"},"last_line":{"description":"Line of the table's last row.","title":"Last Line","type":"integer","isRequired":true,"uniqueKey":"table.oneOf.0.last_line","typeLabel":"integer"},"title":{"oneOf":[{"type":"string","title":"Title","description":"The text printed just above the table (its caption, units), clipped; None when there is none.","isRequired":true,"uniqueKey":"table.oneOf.0.title.oneOf.0","typeLabel":"string"},{"type":"null","title":"Title","description":"The text printed just above the table (its caption, units), clipped; None when there is none.","isRequired":true,"uniqueKey":"table.oneOf.0.title.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"table.oneOf.0.title","typeLabel":"string | null"},"rows":{"oneOf":[{"type":"integer","title":"Rows","description":"For a table stored as one HTML line (PDF ingestion): how many data rows it has.","uniqueKey":"table.oneOf.0.rows.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Rows","description":"For a table stored as one HTML line (PDF ingestion): how many data rows it has.","uniqueKey":"table.oneOf.0.rows.oneOf.1","typeLabel":"null"}],"uniqueKey":"table.oneOf.0.rows","typeLabel":"integer | null"}},"additionalProperties":false,"uniqueKey":"table.oneOf.0","typeLabel":"GrepTable · object"},{"type":"null","description":"When a line range starts inside a table, below its header row: that table's lines, title and header, so the rows read with their column names.","uniqueKey":"table.oneOf.1","typeLabel":"null"}],"uniqueKey":"table","typeLabel":"GrepTable · object | null"}},"required":["path","file_id","content","pages_returned","truncated","components_returned","components_omitted"],"title":"ReadFileResponse","type":"object","uniqueKey":"","typeLabel":"ReadFileResponse · object"},"examples":{"Example":{"title":"Example","value":{"components_omitted":["\u003cstring>"],"components_returned":["\u003cstring>"],"content":"\u003cstring>","file_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","pages_returned":[123],"path":"\u003cstring>","truncated":true,"job_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","line_count":123,"line_end":123,"line_start":123,"sql_tables":["\u003cstring>"],"table":{"first_line":123,"header":"\u003cstring>","last_line":123,"title":"\u003cstring>","rows":123}}}},"exampleType":"generated"}},"description":"Successful Response","exampleType":"generated"},"8e5294b1-9cb8-42df-a4c4-06236605b987":{"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"},"c0329dd2-8061-44d6-836d-a60a9b1aa978":{"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":{"03902cdf-ebfd-4abf-bfc2-fa939154eedb":{"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":"read_file - NDI Platform API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-29T18:06:04.146Z","originalFileLocation":"api-reference/tools/read_file.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=\"Read the text of one uploaded file. Cost class: fast. path names an uploaded source file — the only namespace this tool serves. A workspace-internal path is refused with invalid_request naming the uploaded file to use instead. A file with several components (a spreadsheet\u0026#x27;s tabs, a pdf\u0026#x27;s sections) answers with their text concatenated in the file\u0026#x27;s own order, each part under a one-line header naming the component; components_returned and components_omitted report exactly what made it into the budget. Scope the read with component= (the names file_metadata lists) when only one tab or section matters, and with pages (1-based) for paged documents — spreadsheets have no pages, so scope those by component instead. Images are refused — ask about them with qa_file.\">\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=\"read_file - NDI Platform API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Read the text of one uploaded file. Cost class: fast. path names an uploaded source file — the only namespace this tool serves. A workspace-internal path is refused with invalid_request naming the uploaded file to use instead. A file with several components (a spreadsheet\u0026#x27;s tabs, a pdf\u0026#x27;s sections) answers with their text concatenated in the file\u0026#x27;s own order, each part under a one-line header naming the component; components_returned and components_omitted report exactly what made it into the budget. Scope the read with component= (the names file_metadata lists) when only one tab or section matters, and with pages (1-based) for paged documents — spreadsheets have no pages, so scope those by component instead. Images are refused — ask about them with qa_file.\">\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/read_file\">\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=read_file\u0026amp;description=Read+the+text+of+one+uploaded+file.%0A%0A**Cost+class%3A+fast.**%0A%0A%60%60path%60%60+names+an+**uploaded+source+file**+%E2%80%94+the+only+namespace+this+tool%0Aserves.++A+workspace-inter\u0026amp;theme=c2c8dd1a1eb024c2dfeaad33\u0026amp;signature=62e4649997fea046d65a549d7ff25e8c95f1a6e83f45ca439620cc7e70618e33\">\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=\"read_file - NDI Platform API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Read the text of one uploaded file. Cost class: fast. path names an uploaded source file — the only namespace this tool serves. A workspace-internal path is refused with invalid_request naming the uploaded file to use instead. A file with several components (a spreadsheet\u0026#x27;s tabs, a pdf\u0026#x27;s sections) answers with their text concatenated in the file\u0026#x27;s own order, each part under a one-line header naming the component; components_returned and components_omitted report exactly what made it into the budget. Scope the read with component= (the names file_metadata lists) when only one tab or section matters, and with pages (1-based) for paged documents — spreadsheets have no pages, so scope those by component instead. Images are refused — ask about them with qa_file.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://nace-ai.mintlify.app/_mintlify/api/og/v2?division=Tools+and+search\u0026amp;title=read_file\u0026amp;description=Read+the+text+of+one+uploaded+file.%0A%0A**Cost+class%3A+fast.**%0A%0A%60%60path%60%60+names+an+**uploaded+source+file**+%E2%80%94+the+only+namespace+this+tool%0Aserves.++A+workspace-inter\u0026amp;theme=c2c8dd1a1eb024c2dfeaad33\u0026amp;signature=62e4649997fea046d65a549d7ff25e8c95f1a6e83f45ca439620cc7e70618e33\">\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/read_file\">\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/read_file.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/read_file#webpage\",\"url\":\"https://docs.ndi.nace.ai/api-reference/tools/read_file\",\"name\":\"read_file\",\"description\":\"Read the text of one uploaded file. Cost class: fast. path names an uploaded source file — the only namespace this tool serves. A workspace-internal path is refused with invalid_request naming the uploaded file to use instead. A file with several components (a spreadsheet's tabs, a pdf's sections) answers with their text concatenated in the file's own order, each part under a one-line header naming the component; components_returned and components_omitted report exactly what made it into the budget. Scope the read with component= (the names file_metadata lists) when only one tab or section matters, and with pages (1-based) for paged documents — spreadsheets have no pages, so scope those by component instead. Images are refused — ask about them with qa_file.\",\"dateModified\":\"2026-10-29T18:06:04.146Z\",\"isPartOf\":{\"@id\":\"https://docs.ndi.nace.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.ndi.nace.ai/api-reference/tools/read_file#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.ndi.nace.ai/api-reference/tools/read_file#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\":\"read_file\",\"item\":\"https://docs.ndi.nace.ai/api-reference/tools/read_file\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.ndi.nace.ai/api-reference/tools/read_file#apireference\",\"headline\":\"read_file\",\"name\":\"read_file\",\"description\":\"Read the text of one uploaded file. Cost class: fast. path names an uploaded source file — the only namespace this tool serves. A workspace-internal path is refused with invalid_request naming the uploaded file to use instead. A file with several components (a spreadsheet's tabs, a pdf's sections) answers with their text concatenated in the file's own order, each part under a one-line header naming the component; components_returned and components_omitted report exactly what made it into the budget. Scope the read with component= (the names file_metadata lists) when only one tab or section matters, and with pages (1-based) for paged documents — spreadsheets have no pages, so scope those by component instead. Images are refused — ask about them with qa_file.\",\"url\":\"https://docs.ndi.nace.ai/api-reference/tools/read_file\",\"mainEntityOfPage\":{\"@id\":\"https://docs.ndi.nace.ai/api-reference/tools/read_file#webpage\"},\"dateModified\":\"2026-10-29T18:06:04.146Z\",\"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","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/workspaces/{workspace_id}/tools/file-metadata","href":"/api-reference/tools/file_metadata"},{"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","description":"Run one caller-authored read-only SELECT over the workspace's tables.\n\n**Cost class: fast.** No planner and no answering agent — the statement\nruns directly in the guarded SQL engine, against every queryable tab in\nthe workspace registered as a view under the ``table_name`` that\n``file-metadata`` and the folder-metadata table census publish. Joins\nacross files are ordinary SQL joins; earlier run-sql results are\nregistered too, so a returned ``res_…`` handle can be joined, aggregated,\nor paged with LIMIT/OFFSET in the next statement.\n\nThe full result is retained as parquet whatever the preview shows —\n``result_citation.result_file.download_url`` fetches it whole. A\nstatement that is not a read, or reads an unregistered table, is refused\nwith ``invalid_request`` naming the rule broken and the registered\ntables. For a natural-language question — or when the answer should be\ncomposed and cited for you — use ``query-tables`` instead.","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":"read_file - 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"]}