Adds a file to your sandbox document library. A scenario references the returned id as a record’s document_id: a payroll or document-upload paystub, W-2, 1099 or 1040, a volunteer letter, a PCS order, a bank statement, or an insurance policy document. A document-upload scenario also selects on the entry’s filename, and a Document Collections upload of that filename takes the entry’s status, validations, last_error and documents as its result.
The documented body is the JSON form, carrying the bytes as base64 content. The same endpoint also accepts multipart/form-data with a file part and the same metadata, where documents is sent as a JSON-encoded string.
filename is unique per client, compared without regard to case, and is also the join key a document-upload scenario matches on.
A library upload carrying the bytes as base64 content. The same endpoint also accepts multipart/form-data with a file part and the same metadata, where documents is sent as a JSON-encoded string.
filename
string
required
Name the entry is addressed by. Unique per client, compared without regard to case, and refused when it is one of Truv's own documented sandbox filenames.
Maximum string length: 255
Example:
"acme-w2-2025.pdf"
content
string
required
The file bytes, base64-encoded.
Example:
"JVBERi0xLjQKJc..."
documents
object[]
Test metadata describing the documents in the file. Omitting it declares one paystub for John Doe at Acme Inc., so a document-upload flow resolves the file without the entry having to describe it. A payroll scenario only needs the file itself, so it can be left out.
Show child attributes
Response
One file in your sandbox document library, plus the test metadata describing it.
id
string
read-only
Unique identifier of the library entry. This is the value a scenario payload references as document_id.
Maximum string length: 64
Example:
"3f1c8a90b7d2416e9a5c0e4f2b8d6a17"
uploaded_file
object
The file half of a library entry.
Show child attributes
documents
object[]
Test metadata describing the documents in the file, used by document-upload scenarios.
Show child attributes
created_at
string<date-time>
read-only
Time when the entry was created.
Example:
"2026-09-17T10:11:02.104882Z"
updated_at
string<date-time>
read-only
Time when the entry was last updated.
Example:
"2026-09-17T10:11:02.104901Z"
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Truv","colors":{"primary":"#2C64E3","light":"#5A8AEF","dark":"#1E4BB8"},"logo":{"light":"https://mintcdn.com/truv/O5kzkDEe7x_ypnh0/logo/dark.svg?fit=max\u0026auto=format\u0026n=O5kzkDEe7x_ypnh0\u0026q=85\u0026s=4a88c1e43db8b515ffb08e5f87aafa65","dark":"https://mintcdn.com/truv/O5kzkDEe7x_ypnh0/logo/white.svg?fit=max\u0026auto=format\u0026n=O5kzkDEe7x_ypnh0\u0026q=85\u0026s=d611c5c17a34572abc853ebf93a96759","href":"/"},"favicon":"https://mintcdn.com/truv/z9uMK6PrkzslSpM_/favicon.ico?fit=max\u0026auto=format\u0026n=z9uMK6PrkzslSpM_\u0026q=85\u0026s=61f2e85e389d4ed41a43c6db75e7b406","api":{"openapi":"openapi.yaml","mdx":{"server":"https://prod.truv.com"}},"background":{"color":{"light":"#FFFFFF","dark":"#0F1117"}},"navbar":{"links":[{"href":"https://dashboard.truv.com","label":"Dashboard"}],"primary":{"type":"button","label":"Get API Keys","href":"https://dashboard.truv.com"}},"footer":{"socials":{"twitter":"https://twitter.com/truv","linkedin":"https://www.linkedin.com/company/truv","github":"https://github.com/truvhq"}},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"truv","hasAudioNarration":false,"actualSubdomain":"truv","customDomains":["docs.truv.com"],"gitSource":{"type":"github","owner":"truvhq","repo":"mint-docs","deployBranch":"master","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af666dd152514fa3a1fd235","clientVersion":"0.0.4143","searchFilterCounts":[{"language":"default","tag":"API Reference","count":163},{"language":"default","tag":"Get Started","count":78},{"language":"default","tag":"Platform","count":71},{"language":"default","tag":"Mortgage","count":42},{"language":"default","tag":"Income \u0026 Employment","count":25},{"language":"default","tag":"Consumer Credit","count":25},{"language":"default","tag":"Implementation","count":23},{"language":"default","tag":"Financial Accounts","count":22},{"language":"default","tag":"Document Processing","count":19},{"language":"default","tag":"Public Sector","count":18}]},"assistantConfig":{"deflection":{"enabled":true,"email":"support@truv.com","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[],"googleFontsInlined":false},"customCss":[{"filePath":"coverage-search.css","content":".cw-widget{margin:0.5rem 0 1.5rem}.cw-widget *{margin:0;padding:0;box-sizing:border-box}.cw-sb{position:relative;margin-bottom:0.75rem}.cw-si{position:absolute;left:1rem;top:50%;transform:translateY(-50%);width:1.125rem;height:1.125rem;color:#9ca3af;pointer-events:none}.cw-input{width:100%;padding:0.875rem 2.5rem 0.875rem 2.75rem;font-size:1rem;font-family:inherit;border:1.5px solid #e5e7eb;border-radius:12px;background:#fff;color:#111827;outline:none;box-sizing:border-box;transition:border-color 0.15s, box-shadow 0.15s}.cw-input:focus{border-color:#818cf8;box-shadow:0 0 0 4px rgba(129, 140, 248, 0.15)}.cw-input::placeholder{color:#9ca3af}.cw-clear{position:absolute;right:0.75rem;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;padding:0;color:#9ca3af}.cw-ci{width:1.25rem;height:1.25rem}.cw-tabs{display:flex;flex-wrap:wrap;gap:0.5rem;margin-bottom:1rem}.cw-tab{padding:0.5rem 1rem;font-size:0.875rem;font-family:inherit;font-weight:500;border:1.5px solid #e5e7eb;border-radius:999px;background:#fff;color:#374151;cursor:pointer;transition:all 0.15s}.cw-tab:hover{border-color:#c7d2fe}.cw-tab-active{background:#eef2ff;border-color:#c7d2fe;color:#4338ca}.cw-ch{display:flex;justify-content:space-between;padding:0.5rem 0;font-size:0.8rem;color:#9ca3af;border-bottom:1px solid #f3f4f6}.cw-list{transition:opacity 0.15s}.cw-row{display:flex;align-items:center;justify-content:space-between;padding:0.5rem 0;margin:0!important;border-bottom:1px solid #f3f4f6}.cw-row-l{display:flex;align-items:center;gap:0.75rem;flex:1;min-width:0}.cw-logo{width:36px;height:36px;border-radius:8px;object-fit:contain;flex-shrink:0;background:#f9fafb}.cw-logo-empty{background:#f3f4f6}.cw-name{font-size:0.95rem;font-weight:500;color:#111827;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cw-rate{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;flex-shrink:0}.cw-rate-high{background:#dcfce7}.cw-rate-unk{background:#f3f4f6;color:#9ca3af;font-size:0.85rem;font-weight:600}.cw-empty{text-align:center;padding:1.5rem 0!important;color:#6b7280;font-size:0.9rem}.cw-foot{text-align:center;margin-top:0.75rem}.cw-btn{padding:0.625rem 1.5rem;font-size:0.875rem;font-weight:500;font-family:inherit;border:1.5px solid #e5e7eb;border-radius:8px;background:#fff;color:#374151;cursor:pointer;transition:background 0.15s, border-color 0.15s}.cw-btn:hover{background:#f9fafb;border-color:#d1d5db}.dark .cw-input{background:#18181b;border-color:#3f3f46;color:#f4f4f5}.dark .cw-input:focus{border-color:#818cf8;box-shadow:0 0 0 4px rgba(129, 140, 248, 0.1)}.dark .cw-input::placeholder{color:#71717a}.dark .cw-clear{color:#71717a}.dark .cw-tab{background:#18181b;border-color:#3f3f46;color:#d4d4d8}.dark .cw-tab:hover{border-color:#6366f1}.dark .cw-tab-active{background:#1e1b4b;border-color:#6366f1;color:#a5b4fc}.dark .cw-ch{color:#71717a;border-color:#27272a}.dark .cw-row{border-color:#27272a}.dark .cw-logo{background:#27272a}.dark .cw-logo-empty{background:#3f3f46}.dark .cw-name{color:#f4f4f5}.dark .cw-rate-high{background:#052e16}.dark .cw-rate-high svg{fill:#4ade80}.dark .cw-rate-unk{background:#27272a;color:#71717a}.dark .cw-empty{color:#a1a1aa}.dark .cw-btn{background:#18181b;border-color:#3f3f46;color:#d4d4d8}.dark .cw-btn:hover{background:#27272a;border-color:#52525b}"},{"filePath":"custom.css","content":"div.eyebrow{display:none!important}img.nav-logo{height:44px!important}.truv-topbar-group{display:inline-flex;align-items:center;gap:4px}.truv-resources-dropdown{position:relative;display:inline-flex;align-items:center}.truv-resources-btn{display:inline-flex;align-items:center;gap:2px;padding:6px 12px;background:transparent;border:none;color:inherit;font-size:14px;font-weight:500;cursor:pointer;font-family:inherit;white-space:nowrap}.truv-resources-btn:hover{opacity:0.7}.truv-resources-menu{display:none;position:absolute;top:100%;right:0;margin-top:4px;min-width:160px;background:white;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 4px 12px rgba(0, 0, 0, 0.1);padding:4px;z-index:1000}.truv-resources-menu.open{display:block}.truv-resources-menu a{display:block;padding:8px 12px;color:#374151;text-decoration:none;font-size:14px;border-radius:6px;white-space:nowrap}.truv-resources-menu a:hover{background:#f3f4f6;color:#111827}.dark .truv-resources-menu,html[class*=\"dark\"] .truv-resources-menu{background:#1f2937;border-color:#374151}.dark .truv-resources-menu a,html[class*=\"dark\"] .truv-resources-menu a{color:#d1d5db}.dark .truv-resources-menu a:hover,html[class*=\"dark\"] .truv-resources-menu a:hover{background:#374151;color:#f9fafb}#content-area table th,#content-area table td{min-width:0}#content-area table code{white-space:nowrap}.coverage-table th,.coverage-table td{padding:10px 12px;text-align:left;vertical-align:middle}.coverage-table th:first-child,.coverage-table td:first-child{width:56px;text-align:center}.coverage-table th:nth-child(2),.coverage-table td:nth-child(2){width:110px}.coverage-table td:first-child img{display:block;margin:0 auto}:root{--mmd-line: #9CA3AF;--mmd-lifeline: #2C64E3;--mmd-node-fill: #EBF0FD;--mmd-node-border: #2C64E3;--mmd-node-text: #111827;--mmd-actor-fill: #2C64E3;--mmd-actor-border: #1E4BB8;--mmd-actor-text: #FFFFFF;--mmd-note-fill: #EBF0FD;--mmd-note-border: #5A8AEF;--mmd-note-text: #111827;--mmd-label-text: #111827;--mmd-label-bg: rgb(var(--background-light, 255 255 255))}.dark{--mmd-line: #9CA3AF;--mmd-lifeline: #5A8AEF;--mmd-node-fill: #16233B;--mmd-node-border: #5A8AEF;--mmd-node-text: #E5E7EB;--mmd-actor-fill: #2C64E3;--mmd-actor-border: #5A8AEF;--mmd-actor-text: #FFFFFF;--mmd-note-fill: #1E3A8A;--mmd-note-border: #5A8AEF;--mmd-note-text: #E5E7EB;--mmd-label-text: #E5E7EB;--mmd-label-bg: rgb(var(--background-dark, 15 17 23))}svg[id^=\"mermaid-\"] .messageLine0,svg[id^=\"mermaid-\"] .messageLine1,svg[id^=\"mermaid-\"] .loopLine,svg[id^=\"mermaid-\"] .flowchart-link,svg[id^=\"mermaid-\"] .edgePath .path{stroke:var(--mmd-line)!important}svg[id^=\"mermaid-\"] .actor-line{stroke:var(--mmd-lifeline)!important}svg[id^=\"mermaid-\"] marker path{fill:var(--mmd-line)!important;stroke:var(--mmd-line)!important}svg[id^=\"mermaid-\"] .node:not(.active):not(.error) rect,svg[id^=\"mermaid-\"] .node:not(.active):not(.error) circle,svg[id^=\"mermaid-\"] .node:not(.active):not(.error) polygon,svg[id^=\"mermaid-\"] .node:not(.active):not(.error) path{fill:var(--mmd-node-fill)!important;stroke:var(--mmd-node-border)!important}svg[id^=\"mermaid-\"] .node:not(.active):not(.error) .nodeLabel{fill:var(--mmd-node-text)!important;color:var(--mmd-node-text)!important}svg[id^=\"mermaid-\"] rect.actor{fill:var(--mmd-actor-fill)!important;stroke:var(--mmd-actor-border)!important}svg[id^=\"mermaid-\"] text.actor,svg[id^=\"mermaid-\"] text.actor tspan{fill:var(--mmd-actor-text)!important}svg[id^=\"mermaid-\"] .note{fill:var(--mmd-note-fill)!important;stroke:var(--mmd-note-border)!important}svg[id^=\"mermaid-\"] .noteText,svg[id^=\"mermaid-\"] .noteText tspan{fill:var(--mmd-note-text)!important}svg[id^=\"mermaid-\"] .messageText,svg[id^=\"mermaid-\"] .loopText,svg[id^=\"mermaid-\"] .loopText tspan,svg[id^=\"mermaid-\"] .labelText,svg[id^=\"mermaid-\"] .labelText tspan,svg[id^=\"mermaid-\"] .edgeLabel,svg[id^=\"mermaid-\"] .edgeLabel p{fill:var(--mmd-label-text)!important;color:var(--mmd-label-text)!important}svg[id^=\"mermaid-\"] .edgeLabel,svg[id^=\"mermaid-\"] .edgeLabel p,svg[id^=\"mermaid-\"] .edgeLabel span,svg[id^=\"mermaid-\"] .edgeLabel div,svg[id^=\"mermaid-\"] .edgeLabel foreignObject>div,svg[id^=\"mermaid-\"] .labelBkg,svg[id^=\"mermaid-\"] .edgeLabel rect,svg[id^=\"mermaid-\"] .labelBox{background-color:var(--mmd-label-bg)!important;fill:var(--mmd-label-bg)!important}svg[id^=\"mermaid-\"] .messageText,svg[id^=\"mermaid-\"] .loopText,svg[id^=\"mermaid-\"] .labelText{paint-order:stroke fill;stroke:var(--mmd-label-bg)!important;stroke-width:3px!important;stroke-linejoin:round}"}],"page":{"pagePath":"api-reference/sandbox/v1_sandbox_documents_create","slug":"/api-reference/sandbox/v1_sandbox_documents_create","pageMetadata":{"title":"Upload a sandbox document","openapi":"POST /v1/sandbox/documents/","description":"Adds a file to your sandbox document library. A scenario references the returned `id` as a record's `document_id`: a payroll or document-upload paystub, W-2, 1099 or 1040, a volunteer letter, a PCS order, a bank statement, or an insurance policy document. A document-upload scenario also selects on the entry's `filename`, and a Document Collections upload of that filename takes the entry's `status`, `validations`, `last_error` and `documents` as its result.\n\nThe documented body is the JSON form, carrying the bytes as base64 `content`. The same endpoint also accepts `multipart/form-data` with a `file` part and the same metadata, where `documents` is sent as a JSON-encoded string.\n\n`filename` is unique per client, compared without regard to case, and is also the join key a document-upload scenario matches on.","href":"/api-reference/sandbox/v1_sandbox_documents_create"},"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 ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Adds a file to your sandbox document library. A scenario references the returned \", _jsx(_components.code, {\n children: \"id\"\n }), \" as a record’s \", _jsx(_components.code, {\n children: \"document_id\"\n }), \": a payroll or document-upload paystub, W-2, 1099 or 1040, a volunteer letter, a PCS order, a bank statement, or an insurance policy document. A document-upload scenario also selects on the entry’s \", _jsx(_components.code, {\n children: \"filename\"\n }), \", and a Document Collections upload of that filename takes the entry’s \", _jsx(_components.code, {\n children: \"status\"\n }), \", \", _jsx(_components.code, {\n children: \"validations\"\n }), \", \", _jsx(_components.code, {\n children: \"last_error\"\n }), \" and \", _jsx(_components.code, {\n children: \"documents\"\n }), \" as its result.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The documented body is the JSON form, carrying the bytes as base64 \", _jsx(_components.code, {\n children: \"content\"\n }), \". The same endpoint also accepts \", _jsx(_components.code, {\n children: \"multipart/form-data\"\n }), \" with a \", _jsx(_components.code, {\n children: \"file\"\n }), \" part and the same metadata, where \", _jsx(_components.code, {\n children: \"documents\"\n }), \" is sent as a JSON-encoded string.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"filename\"\n }), \" is unique per client, compared without regard to case, and is also the join key a document-upload scenario matches on.\"]\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":{"config":{},"pageMetadata":{"title":"Upload a sandbox document","openapi":"POST /v1/sandbox/documents/","description":"Adds a file to your sandbox document library. A scenario references the returned `id` as a record's `document_id`: a payroll or document-upload paystub, W-2, 1099 or 1040, a volunteer letter, a PCS order, a bank statement, or an insurance policy document. A document-upload scenario also selects on the entry's `filename`, and a Document Collections upload of that filename takes the entry's `status`, `validations`, `last_error` and `documents` as its result.\n\nThe documented body is the JSON form, carrying the bytes as base64 `content`. The same endpoint also accepts `multipart/form-data` with a `file` part and the same metadata, where `documents` is sent as a JSON-encoded string.\n\n`filename` is unique per client, compared without regard to case, and is also the join key a document-upload scenario matches on.","href":"/api-reference/sandbox/v1_sandbox_documents_create"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/truv/9a81556fef08db13/coverage-search.js","/_mintlify/custom/truv/c15dff2b800bd197/dev-footer.js"],"openApiReferenceData":{"operation":{"operationId":"v1_sandbox_documents_create","summary":"Upload a sandbox document","description":"Adds a file to your sandbox document library. A scenario references the returned `id` as a record's `document_id`: a payroll or document-upload paystub, W-2, 1099 or 1040, a volunteer letter, a PCS order, a bank statement, or an insurance policy document. A document-upload scenario also selects on the entry's `filename`, and a Document Collections upload of that filename takes the entry's `status`, `validations`, `last_error` and `documents` as its result.\n\nThe documented body is the JSON form, carrying the bytes as base64 `content`. The same endpoint also accepts `multipart/form-data` with a `file` part and the same metadata, where `documents` is sent as a JSON-encoded string.\n\n`filename` is unique per client, compared without regard to case, and is also the join key a document-upload scenario matches on.","requestBody":"8cfc6228-69a4-426e-b7c3-94762ee15b99","responses":{"201":"9b72d5d4-fdad-4e34-b8aa-d55dea49b35e","400":"e5b947f3-4a6d-46e7-a8f3-8052c1667d16","401":"8bd1e4af-4577-48df-9fe8-783334795cf9","403":"5d8139b6-13b3-4816-aadb-c7d1078c21c1","429":"3f804441-f7dc-409f-8d77-359572955308"},"tags":["Sandbox"],"method":"post","type":"path","servers":["a1231381-904a-4552-897b-0de2e0d35eda"],"security":["2f00fc28-435f-4436-8b41-132e2b5b9c48"],"path":"/v1/sandbox/documents/","baseUrlOptions":["https://prod.truv.com"],"title":"Upload a sandbox document","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"content":{"application/json":{"schema":{"description":"A library upload carrying the bytes as base64 `content`. The same endpoint also accepts `multipart/form-data` with a `file` part and the same metadata, where `documents` is sent as a JSON-encoded string.","type":"object","required":["filename","content"],"properties":{"filename":{"description":"Name the entry is addressed by. Unique per client, compared without regard to case, and refused when it is one of Truv's own documented sandbox filenames.","type":"string","maxLength":255,"example":"acme-w2-2025.pdf","isRequired":true,"uniqueKey":"filename","typeLabel":"string"},"content":{"description":"The file bytes, base64-encoded.","type":"string","example":"JVBERi0xLjQKJc...","isRequired":true,"uniqueKey":"content","typeLabel":"string"},"documents":{"description":"Test metadata describing the documents in the file. Omitting it declares one paystub for John Doe at Acme Inc., so a document-upload flow resolves the file without the entry having to describe it. A payroll scenario only needs the file itself, so it can be left out.","type":"array","items":{"description":"Test metadata for one document in a library file. You configure it; Truv does not extract it from the file.","type":"object","required":["document_type"],"properties":{"document_type":{"description":"Type of the document: `PAYSTUB`, `W2`, `F1099`, `F1040`, `BANK_STATEMENT`, `PASSPORT`, `GREEN_CARD`, `DRIVER_LICENSE`, `LETTER_OF_VERIFICATION`, `UTILITY_BILL`, `LEASE_AGREEMENT`, `INSURANCE_HOME_POLICY`, `INSURANCE_AUTO_POLICY`, `VOLUNTEER_LETTER`, `PCS_ORDERS` or `OTHER`. Accepted case-insensitively and returned uppercase.","type":"string","maxLength":64,"example":"PAYSTUB","isRequired":true,"uniqueKey":"documents.items.[INDEX].document_type","typeLabel":"string"},"document_subtype":{"oneOf":[{"description":"Subtype of the document, accepted case-insensitively and returned uppercase. A `F1099` carries one of `F1099_B`, `F1099_DIV`, `F1099_G`, `F1099_INT`, `F1099_K`, `F1099_MISC`, `F1099_NEC`, `F1099_R`, `F_SSA1099`; a `VOLUNTEER_LETTER` one of `VOL_TRANSCRIPT`, `VOL_HOURS_LOG`. Other types carry none.","type":"string","maxLength":64,"example":null,"uniqueKey":"documents.items.[INDEX].document_subtype.oneOf.0","typeLabel":"string"},{"description":"Subtype of the document, accepted case-insensitively and returned uppercase. A `F1099` carries one of `F1099_B`, `F1099_DIV`, `F1099_G`, `F1099_INT`, `F1099_K`, `F1099_MISC`, `F1099_NEC`, `F1099_R`, `F_SSA1099`; a `VOLUNTEER_LETTER` one of `VOL_TRANSCRIPT`, `VOL_HOURS_LOG`. Other types carry none.","type":"null","maxLength":64,"example":null,"uniqueKey":"documents.items.[INDEX].document_subtype.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].document_subtype","typeLabel":"string | null"},"identity":{"description":"The identity the document metadata declares.","type":"object","properties":{"full_name":{"oneOf":[{"description":"Full name on the document.","type":"string","maxLength":255,"example":"John Doe","uniqueKey":"documents.items.[INDEX].identity.full_name.oneOf.0","typeLabel":"string"},{"description":"Full name on the document.","type":"null","maxLength":255,"example":"John Doe","uniqueKey":"documents.items.[INDEX].identity.full_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].identity.full_name","typeLabel":"string | null"},"first_name":{"oneOf":[{"description":"First name on the document.","type":"string","maxLength":50,"example":"John","uniqueKey":"documents.items.[INDEX].identity.first_name.oneOf.0","typeLabel":"string"},{"description":"First name on the document.","type":"null","maxLength":50,"example":"John","uniqueKey":"documents.items.[INDEX].identity.first_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].identity.first_name","typeLabel":"string | null"},"last_name":{"oneOf":[{"description":"Last name on the document.","type":"string","maxLength":50,"example":"Doe","uniqueKey":"documents.items.[INDEX].identity.last_name.oneOf.0","typeLabel":"string"},{"description":"Last name on the document.","type":"null","maxLength":50,"example":"Doe","uniqueKey":"documents.items.[INDEX].identity.last_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].identity.last_name","typeLabel":"string | null"},"ssn":{"oneOf":[{"description":"SSN on the document. Must be synthetic, with an area number of 900-999.","type":"string","maxLength":11,"example":"991-91-9991","uniqueKey":"documents.items.[INDEX].identity.ssn.oneOf.0","typeLabel":"string"},{"description":"SSN on the document. Must be synthetic, with an area number of 900-999.","type":"null","maxLength":11,"example":"991-91-9991","uniqueKey":"documents.items.[INDEX].identity.ssn.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].identity.ssn","typeLabel":"string | null"}},"uniqueKey":"documents.items.[INDEX].identity","typeLabel":"object"},"company_name":{"oneOf":[{"description":"Employer named on the document.","type":"string","maxLength":255,"example":"Acme Inc.","uniqueKey":"documents.items.[INDEX].company_name.oneOf.0","typeLabel":"string"},{"description":"Employer named on the document.","type":"null","maxLength":255,"example":"Acme Inc.","uniqueKey":"documents.items.[INDEX].company_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].company_name","typeLabel":"string | null"},"start_page":{"oneOf":[{"description":"First page of the document inside the file.","type":"integer","minimum":1,"example":1,"uniqueKey":"documents.items.[INDEX].start_page.oneOf.0","typeLabel":"integer"},{"description":"First page of the document inside the file.","type":"null","minimum":1,"example":1,"uniqueKey":"documents.items.[INDEX].start_page.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].start_page","typeLabel":"integer | null"},"end_page":{"oneOf":[{"description":"Last page of the document inside the file.","type":"integer","minimum":1,"example":2,"uniqueKey":"documents.items.[INDEX].end_page.oneOf.0","typeLabel":"integer"},{"description":"Last page of the document inside the file.","type":"null","minimum":1,"example":2,"uniqueKey":"documents.items.[INDEX].end_page.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].end_page","typeLabel":"integer | null"}},"uniqueKey":"documents.items.[INDEX]","typeLabel":"object"},"uniqueKey":"documents","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"filename":"acme-w2-2025.pdf","content":"JVBERi0xLjQKJc...","documents":[{"document_type":"PAYSTUB","document_subtype":null,"identity":{"full_name":"John Doe","first_name":"John","last_name":"Doe","ssn":"991-91-9991"},"company_name":"Acme Inc.","start_page":1,"end_page":2}]}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"9b72d5d4-fdad-4e34-b8aa-d55dea49b35e":{"description":"","content":{"application/json":{"schema":{"description":"One file in your sandbox document library, plus the test metadata describing it.","type":"object","properties":{"id":{"description":"Unique identifier of the library entry. This is the value a scenario payload references as `document_id`.","type":"string","readOnly":true,"maxLength":64,"example":"3f1c8a90b7d2416e9a5c0e4f2b8d6a17","uniqueKey":"id","typeLabel":"string"},"uploaded_file":{"description":"The file half of a library entry.","type":"object","properties":{"file_id":{"description":"Unique identifier of the file.","type":"string","readOnly":true,"maxLength":64,"example":"3f1c8a90b7d2416e9a5c0e4f2b8d6a17","uniqueKey":"uploaded_file.file_id","typeLabel":"string"},"filename":{"description":"Name the entry is addressed by.","type":"string","readOnly":true,"maxLength":255,"example":"acme-w2-2025.pdf","uniqueKey":"uploaded_file.filename","typeLabel":"string"},"mime_type":{"description":"Mimetype detected from the uploaded bytes.","type":"string","readOnly":true,"enum":["application/pdf","image/jpeg","image/png","image/tiff","image/webp","image/x-ms-bmp","image/heic","image/heif"],"example":"application/pdf","uniqueKey":"uploaded_file.mime_type","typeLabel":"enum\u003cstring>"},"size":{"description":"Size of the stored file in bytes.","type":"integer","readOnly":true,"example":48219,"uniqueKey":"uploaded_file.size","typeLabel":"integer"},"md5":{"description":"MD5 hash of the file bytes.","type":"string","readOnly":true,"example":"9f2b1c0d4e6a8b3f5c7d9e1a2b4c6d8e","uniqueKey":"uploaded_file.md5","typeLabel":"string"},"file":{"oneOf":[{"description":"Short-lived pre-signed URL over the stored file, minted fresh on every read.","type":"string","format":"uri","readOnly":true,"example":"https://s3.amazonaws.com/...","uniqueKey":"uploaded_file.file.oneOf.0","typeLabel":"string\u003curi>"},{"description":"Short-lived pre-signed URL over the stored file, minted fresh on every read.","type":"null","format":"uri","readOnly":true,"example":"https://s3.amazonaws.com/...","uniqueKey":"uploaded_file.file.oneOf.1","typeLabel":"null"}],"uniqueKey":"uploaded_file.file","typeLabel":"string\u003curi> | null"},"status":{"description":"File-level processing outcome the entry declares.","type":"string","enum":["successful","invalid","duplicate","failed"],"default":"successful","example":"successful","uniqueKey":"uploaded_file.status","typeLabel":"enum\u003cstring>"},"validations":{"description":"Per-check validation results the entry declares.","type":"object","additionalProperties":{"oneOf":[{"type":"boolean","uniqueKey":"uploaded_file.validations.additionalProperties.oneOf.0","typeLabel":"boolean"},{"type":"null","uniqueKey":"uploaded_file.validations.additionalProperties.oneOf.1","typeLabel":"null"}],"uniqueKey":"uploaded_file.validations.additionalProperties","typeLabel":"boolean | null"},"example":{"is_viable_size":true,"is_supported_type":true,"is_accessible":true,"is_valid":true,"is_readable":true,"is_unique":true},"uniqueKey":"uploaded_file.validations","typeLabel":"object"},"last_error":{"description":"Message surfaced for a failed file.","type":"string","maxLength":500,"example":"","uniqueKey":"uploaded_file.last_error","typeLabel":"string"}},"uniqueKey":"uploaded_file","typeLabel":"object"},"documents":{"description":"Test metadata describing the documents in the file, used by document-upload scenarios.","type":"array","items":{"description":"Test metadata for one document in a library file. You configure it; Truv does not extract it from the file.","type":"object","required":["document_type"],"properties":{"document_type":{"description":"Type of the document: `PAYSTUB`, `W2`, `F1099`, `F1040`, `BANK_STATEMENT`, `PASSPORT`, `GREEN_CARD`, `DRIVER_LICENSE`, `LETTER_OF_VERIFICATION`, `UTILITY_BILL`, `LEASE_AGREEMENT`, `INSURANCE_HOME_POLICY`, `INSURANCE_AUTO_POLICY`, `VOLUNTEER_LETTER`, `PCS_ORDERS` or `OTHER`. Accepted case-insensitively and returned uppercase.","type":"string","maxLength":64,"example":"PAYSTUB","isRequired":true,"uniqueKey":"documents.items.[INDEX].document_type","typeLabel":"string"},"document_subtype":{"oneOf":[{"description":"Subtype of the document, accepted case-insensitively and returned uppercase. A `F1099` carries one of `F1099_B`, `F1099_DIV`, `F1099_G`, `F1099_INT`, `F1099_K`, `F1099_MISC`, `F1099_NEC`, `F1099_R`, `F_SSA1099`; a `VOLUNTEER_LETTER` one of `VOL_TRANSCRIPT`, `VOL_HOURS_LOG`. Other types carry none.","type":"string","maxLength":64,"example":null,"uniqueKey":"documents.items.[INDEX].document_subtype.oneOf.0","typeLabel":"string"},{"description":"Subtype of the document, accepted case-insensitively and returned uppercase. A `F1099` carries one of `F1099_B`, `F1099_DIV`, `F1099_G`, `F1099_INT`, `F1099_K`, `F1099_MISC`, `F1099_NEC`, `F1099_R`, `F_SSA1099`; a `VOLUNTEER_LETTER` one of `VOL_TRANSCRIPT`, `VOL_HOURS_LOG`. Other types carry none.","type":"null","maxLength":64,"example":null,"uniqueKey":"documents.items.[INDEX].document_subtype.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].document_subtype","typeLabel":"string | null"},"identity":{"description":"The identity the document metadata declares.","type":"object","properties":{"full_name":{"oneOf":[{"description":"Full name on the document.","type":"string","maxLength":255,"example":"John Doe","uniqueKey":"documents.items.[INDEX].identity.full_name.oneOf.0","typeLabel":"string"},{"description":"Full name on the document.","type":"null","maxLength":255,"example":"John Doe","uniqueKey":"documents.items.[INDEX].identity.full_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].identity.full_name","typeLabel":"string | null"},"first_name":{"oneOf":[{"description":"First name on the document.","type":"string","maxLength":50,"example":"John","uniqueKey":"documents.items.[INDEX].identity.first_name.oneOf.0","typeLabel":"string"},{"description":"First name on the document.","type":"null","maxLength":50,"example":"John","uniqueKey":"documents.items.[INDEX].identity.first_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].identity.first_name","typeLabel":"string | null"},"last_name":{"oneOf":[{"description":"Last name on the document.","type":"string","maxLength":50,"example":"Doe","uniqueKey":"documents.items.[INDEX].identity.last_name.oneOf.0","typeLabel":"string"},{"description":"Last name on the document.","type":"null","maxLength":50,"example":"Doe","uniqueKey":"documents.items.[INDEX].identity.last_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].identity.last_name","typeLabel":"string | null"},"ssn":{"oneOf":[{"description":"SSN on the document. Must be synthetic, with an area number of 900-999.","type":"string","maxLength":11,"example":"991-91-9991","uniqueKey":"documents.items.[INDEX].identity.ssn.oneOf.0","typeLabel":"string"},{"description":"SSN on the document. Must be synthetic, with an area number of 900-999.","type":"null","maxLength":11,"example":"991-91-9991","uniqueKey":"documents.items.[INDEX].identity.ssn.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].identity.ssn","typeLabel":"string | null"}},"uniqueKey":"documents.items.[INDEX].identity","typeLabel":"object"},"company_name":{"oneOf":[{"description":"Employer named on the document.","type":"string","maxLength":255,"example":"Acme Inc.","uniqueKey":"documents.items.[INDEX].company_name.oneOf.0","typeLabel":"string"},{"description":"Employer named on the document.","type":"null","maxLength":255,"example":"Acme Inc.","uniqueKey":"documents.items.[INDEX].company_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].company_name","typeLabel":"string | null"},"start_page":{"oneOf":[{"description":"First page of the document inside the file.","type":"integer","minimum":1,"example":1,"uniqueKey":"documents.items.[INDEX].start_page.oneOf.0","typeLabel":"integer"},{"description":"First page of the document inside the file.","type":"null","minimum":1,"example":1,"uniqueKey":"documents.items.[INDEX].start_page.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].start_page","typeLabel":"integer | null"},"end_page":{"oneOf":[{"description":"Last page of the document inside the file.","type":"integer","minimum":1,"example":2,"uniqueKey":"documents.items.[INDEX].end_page.oneOf.0","typeLabel":"integer"},{"description":"Last page of the document inside the file.","type":"null","minimum":1,"example":2,"uniqueKey":"documents.items.[INDEX].end_page.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].end_page","typeLabel":"integer | null"}},"uniqueKey":"documents.items.[INDEX]","typeLabel":"object"},"uniqueKey":"documents","typeLabel":"object[]"},"created_at":{"description":"Time when the entry was created.","type":"string","format":"date-time","readOnly":true,"example":"2026-09-17T10:11:02.104882Z","uniqueKey":"created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"description":"Time when the entry was last updated.","type":"string","format":"date-time","readOnly":true,"example":"2026-09-17T10:11:02.104901Z","uniqueKey":"updated_at","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"id":"3f1c8a90b7d2416e9a5c0e4f2b8d6a17","uploaded_file":{"file_id":"3f1c8a90b7d2416e9a5c0e4f2b8d6a17","filename":"acme-w2-2025.pdf","mime_type":"application/pdf","size":48219,"md5":"9f2b1c0d4e6a8b3f5c7d9e1a2b4c6d8e","file":"https://s3.amazonaws.com/...","status":"successful","validations":{"is_viable_size":true,"is_supported_type":true,"is_accessible":true,"is_valid":true,"is_readable":true,"is_unique":true},"last_error":""},"documents":[{"document_type":"PAYSTUB","document_subtype":null,"identity":{"full_name":"John Doe","first_name":"John","last_name":"Doe","ssn":"991-91-9991"},"company_name":"Acme Inc.","start_page":1,"end_page":2}],"created_at":"2026-09-17T10:11:02.104882Z","updated_at":"2026-09-17T10:11:02.104901Z"}}},"exampleType":"generated"}},"exampleType":"generated"},"e5b947f3-4a6d-46e7-a8f3-8052c1667d16":{"description":"The filename is taken or reserved, the bytes are missing or not valid base64, or a storage quota would be exceeded.","content":{"application/json":{"schema":{"description":"A sandbox configuration error.","type":"object","properties":{"error":{"description":"","type":"object","properties":{"code":{"description":"`data_source_required` when the matching fields fit more than one data source, `unsupported_data_source` when one of them is not accepted by the source, `reserved_credential` when a login or filename collides with one of Truv's own documented sandbox credentials, `sandbox_limit_exceeded` when a quota would be exceeded, and `incorrect_parameters` for any other field validation failure.","type":"string","enum":["data_source_required","unsupported_data_source","reserved_credential","sandbox_limit_exceeded","incorrect_parameters"],"example":"reserved_credential","uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"description":"","type":"string","example":"Username 'goodlogin' is reserved for Truv's documented sandbox logins.","uniqueKey":"error.message","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"reserved_credential","message":"Username 'goodlogin' is reserved for Truv's documented sandbox logins."}}}},"exampleType":"generated"}},"exampleType":"generated"},"8bd1e4af-4577-48df-9fe8-783334795cf9":{"description":"HTTP 401 Unauthorized","content":{"application/json":{"schema":{"description":"","type":"object","properties":{"error":{"description":"","type":"object","properties":{"code":{"description":"","type":"string","example":"authentication_failed","uniqueKey":"error.code","typeLabel":"string"},"message":{"description":"","type":"string","example":"No such token","uniqueKey":"error.message","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"authentication_failed","message":"No such token"}}}},"exampleType":"generated"}},"exampleType":"generated"},"5d8139b6-13b3-4816-aadb-c7d1078c21c1":{"description":"The key is not a sandbox key.","content":{"application/json":{"schema":{"description":"The request authenticated with a key that is not a sandbox key.","type":"object","properties":{"error":{"description":"","type":"object","properties":{"code":{"description":"","type":"string","enum":["env_not_sandbox"],"example":"env_not_sandbox","uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"description":"","type":"string","example":"Sandbox configuration requires a sandbox key; this key is 'prod'.","uniqueKey":"error.message","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"env_not_sandbox","message":"Sandbox configuration requires a sandbox key; this key is 'prod'."}}}},"exampleType":"generated"}},"exampleType":"generated"},"3f804441-f7dc-409f-8d77-359572955308":{"description":"HTTP 429 Too Many Requests","content":{"application/json":{"schema":{"description":"","type":"object","properties":{"error":{"description":"","type":"object","properties":{"code":{"description":"","type":"string","example":"throttled","uniqueKey":"error.code","typeLabel":"string"},"message":{"description":"","type":"string","example":"Request was throttled.","uniqueKey":"error.message","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"throttled","message":"Request was throttled."}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"2f00fc28-435f-4436-8b41-132e2b5b9c48":{"ClientID":{"type":"apiKey","description":"Client ID","name":"X-Access-Client-Id","in":"header","scopes":[],"schemeName":"ClientID"},"AccessKey":{"type":"apiKey","description":"Client Access Key","name":"X-Access-Secret","in":"header","scopes":[],"schemeName":"AccessKey"}}},"servers":{"a1231381-904a-4552-897b-0de2e0d35eda":{"url":"https://prod.truv.com"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","description":"Client ID","name":"X-Access-Client-Id","in":"header","scopes":[],"schemeName":"ClientID"},"schema":{"title":"X-Access-Client-Id","type":"string","description":"Client ID","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ClientID","name":"X-Access-Client-Id"},{"scheme":{"type":"apiKey","description":"Client Access Key","name":"X-Access-Secret","in":"header","scopes":[],"schemeName":"AccessKey"},"schema":{"title":"X-Access-Secret","type":"string","description":"Client Access Key","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"AccessKey","name":"X-Access-Secret"}],"title":"ClientID \u0026 AccessKey"}]},"originalFileLocation":"openapi.yaml"},"subdomain":"truv","siteName":"Truv","title":"Upload a sandbox document - Truv","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-02T17:28:59.664Z","originalFileLocation":"api-reference/sandbox/v1_sandbox_documents_create.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=\"Adds a file to your sandbox document library. A scenario references the returned id as a record\u0026#x27;s document_id: a payroll or document-upload paystub, W-2, 1099 or 1040, a volunteer letter, a PCS order, a bank statement, or an insurance policy document. A document-upload scenario also selects on the entry\u0026#x27;s filename, and a Document Collections upload of that filename takes the entry\u0026#x27;s status, validations, last_error and documents as its result. The documented body is the JSON form, carrying the bytes as base64 content. The same endpoint also accepts multipart/form-data with a file part and the same metadata, where documents is sent as a JSON-encoded string. filename is unique per client, compared without regard to case, and is also the join key a document-upload scenario matches on.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Truv\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/truv/PBlsvTBzkVYuAN1i/_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/truv/PBlsvTBzkVYuAN1i/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/truv/PBlsvTBzkVYuAN1i/_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/truv/PBlsvTBzkVYuAN1i/_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/truv/PBlsvTBzkVYuAN1i/_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/truv/PBlsvTBzkVYuAN1i/_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/truv/PBlsvTBzkVYuAN1i/_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/truv/PBlsvTBzkVYuAN1i/_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/truv/PBlsvTBzkVYuAN1i/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Upload a sandbox document - Truv\">\u003cmeta data-mint-head property=\"og:description\" content=\"Adds a file to your sandbox document library. A scenario references the returned id as a record\u0026#x27;s document_id: a payroll or document-upload paystub, W-2, 1099 or 1040, a volunteer letter, a PCS order, a bank statement, or an insurance policy document. A document-upload scenario also selects on the entry\u0026#x27;s filename, and a Document Collections upload of that filename takes the entry\u0026#x27;s status, validations, last_error and documents as its result. The documented body is the JSON form, carrying the bytes as base64 content. The same endpoint also accepts multipart/form-data with a file part and the same metadata, where documents is sent as a JSON-encoded string. filename is unique per client, compared without regard to case, and is also the join key a document-upload scenario matches on.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Truv\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.truv.com/api-reference/sandbox/v1_sandbox_documents_create\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://truv.mintlify.site/_mintlify/api/og/v2?division=Sandbox\u0026amp;title=Upload+a+sandbox+document\u0026amp;description=Adds+a+file+to+your+sandbox+document+library.+A+scenario+references+the+returned+%60id%60+as+a+record%27s+%60document_id%60%3A+a+payroll+or+document-upload+paystub%2C+W-2%2C+10\u0026amp;theme=f953836438aaf0a51428e369\u0026amp;signature=a7749d212b7ac79f75f88e13ac73f3b0d29f83e5b2acde46f1b855d962aeecc9\">\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=\"Upload a sandbox document - Truv\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Adds a file to your sandbox document library. A scenario references the returned id as a record\u0026#x27;s document_id: a payroll or document-upload paystub, W-2, 1099 or 1040, a volunteer letter, a PCS order, a bank statement, or an insurance policy document. A document-upload scenario also selects on the entry\u0026#x27;s filename, and a Document Collections upload of that filename takes the entry\u0026#x27;s status, validations, last_error and documents as its result. The documented body is the JSON form, carrying the bytes as base64 content. The same endpoint also accepts multipart/form-data with a file part and the same metadata, where documents is sent as a JSON-encoded string. filename is unique per client, compared without regard to case, and is also the join key a document-upload scenario matches on.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://truv.mintlify.site/_mintlify/api/og/v2?division=Sandbox\u0026amp;title=Upload+a+sandbox+document\u0026amp;description=Adds+a+file+to+your+sandbox+document+library.+A+scenario+references+the+returned+%60id%60+as+a+record%27s+%60document_id%60%3A+a+payroll+or+document-upload+paystub%2C+W-2%2C+10\u0026amp;theme=f953836438aaf0a51428e369\u0026amp;signature=a7749d212b7ac79f75f88e13ac73f3b0d29f83e5b2acde46f1b855d962aeecc9\">\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/truv/PBlsvTBzkVYuAN1i/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Truv\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2C64E3\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.truv.com/api-reference/sandbox/v1_sandbox_documents_create\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/sandbox/v1_sandbox_documents_create.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.truv.com/#organization\",\"name\":\"Truv\",\"url\":\"https://docs.truv.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/truv/O5kzkDEe7x_ypnh0/logo/dark.svg?fit=max\u0026auto=format\u0026n=O5kzkDEe7x_ypnh0\u0026q=85\u0026s=4a88c1e43db8b515ffb08e5f87aafa65\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.truv.com#website\",\"name\":\"Truv\",\"url\":\"https://docs.truv.com\",\"publisher\":{\"@id\":\"https://docs.truv.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.truv.com/api-reference/sandbox/v1_sandbox_documents_create#webpage\",\"url\":\"https://docs.truv.com/api-reference/sandbox/v1_sandbox_documents_create\",\"name\":\"Upload a sandbox document\",\"description\":\"Adds a file to your sandbox document library. A scenario references the returned id as a record's document_id: a payroll or document-upload paystub, W-2, 1099 or 1040, a volunteer letter, a PCS order, a bank statement, or an insurance policy document. A document-upload scenario also selects on the entry's filename, and a Document Collections upload of that filename takes the entry's status, validations, last_error and documents as its result. The documented body is the JSON form, carrying the bytes as base64 content. The same endpoint also accepts multipart/form-data with a file part and the same metadata, where documents is sent as a JSON-encoded string. filename is unique per client, compared without regard to case, and is also the join key a document-upload scenario matches on.\",\"dateModified\":\"2026-11-02T17:28:59.664Z\",\"isPartOf\":{\"@id\":\"https://docs.truv.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.truv.com/api-reference/sandbox/v1_sandbox_documents_create#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.truv.com/api-reference/sandbox/v1_sandbox_documents_create#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Platform\",\"item\":\"https://docs.truv.com/api-reference/data-structure\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Sandbox\",\"item\":\"https://docs.truv.com/api-reference/sandbox/object\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Upload a sandbox document\",\"item\":\"https://docs.truv.com/api-reference/sandbox/v1_sandbox_documents_create\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.truv.com/api-reference/sandbox/v1_sandbox_documents_create#apireference\",\"headline\":\"Upload a sandbox document\",\"name\":\"Upload a sandbox document\",\"description\":\"Adds a file to your sandbox document library. A scenario references the returned id as a record's document_id: a payroll or document-upload paystub, W-2, 1099 or 1040, a volunteer letter, a PCS order, a bank statement, or an insurance policy document. A document-upload scenario also selects on the entry's filename, and a Document Collections upload of that filename takes the entry's status, validations, last_error and documents as its result. The documented body is the JSON form, carrying the bytes as base64 content. The same endpoint also accepts multipart/form-data with a file part and the same metadata, where documents is sent as a JSON-encoded string. filename is unique per client, compared without regard to case, and is also the join key a document-upload scenario matches on.\",\"url\":\"https://docs.truv.com/api-reference/sandbox/v1_sandbox_documents_create\",\"mainEntityOfPage\":{\"@id\":\"https://docs.truv.com/api-reference/sandbox/v1_sandbox_documents_create#webpage\"},\"dateModified\":\"2026-11-02T17:28:59.664Z\",\"publisher\":{\"@id\":\"https://docs.truv.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.truv.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Truv\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Truv\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/sandbox/v1_sandbox_documents_create.md","siteName":"Truv","nav":{"global":null,"tabs":[{"tab":"Get Started","pages":[{"title":"Get Started","href":"/developers/home"}]},{"tab":"Mortgage","pages":[{"title":"Mortgage","href":"/mortgage/overview"}]},{"tab":"Public Sector","pages":[{"title":"Public Sector","href":"/government/overview"}]},{"tab":"Consumer Credit","pages":[{"title":"Consumer Credit","href":"/credit/overview"}]},{"tab":"Retail Banking","pages":[{"title":"Retail Banking","href":"/banking/overview"}]},{"tab":"Screening","pages":[{"title":"Screening","href":"/screening/overview"}]},{"tab":"API Reference","groups":[{"group":"API Reference","pages":[{"title":"Authentication","href":"/api-reference/authentication"},{"title":"Errors \u0026 Rate Limits","href":"/api-reference/errors"},{"title":"Security","href":"/api-reference/security"},{"title":"OpenAPI Spec","sidebarTitle":"OpenAPI Spec","href":"/api-reference/openapi"},{"title":"SDK Overview","href":"/developers/sdks/overview"},{"title":"Webhooks","href":"/api-reference/webhooks"},{"title":"Postman Collection","href":"/api-reference/postman"},{"title":"Report Sizes","href":"/api-reference/report-sizes"}]},{"group":"Platform","pages":[{"title":"Data Structure","sidebarTitle":"Data Structure","href":"/api-reference/data-structure"},{"title":"Data Processing","sidebarTitle":"Data Processing","href":"/api-reference/data-processing"},{"group":"Orders","pages":[{"title":"The Orders object","href":"/api-reference/orders/object"},{"title":"Order Webhook Events","href":"/api-reference/orders/events"},{"title":"Create an order","openapi":"POST /v1/orders/","href":"/api-reference/orders/orders_create"},{"title":"Create orders as a batch","openapi":"POST /v1/orders/batch/","href":"/api-reference/orders/orders_batch_create"},{"title":"Get order batch job status","openapi":"GET /v1/orders/batch/{id}/","href":"/api-reference/orders/orders_batch_status"},{"title":"List orders","openapi":"GET /v1/orders/","href":"/api-reference/orders/orders_list"},{"title":"Get list of orders by SSN","openapi":"POST /v1/orders/lookup/","href":"/api-reference/orders/orders_list_lookup"},{"title":"Retrieve an order","openapi":"GET /v1/orders/{id}/","href":"/api-reference/orders/orders_read"},{"title":"Update an order","openapi":"PATCH /v1/orders/{id}/","href":"/api-reference/orders/orders_partial_update"},{"title":"Cancel an order","openapi":"POST /v1/orders/{id}/cancel/","href":"/api-reference/orders/orders_cancel_create"},{"title":"Create a data refresh order","openapi":"POST /v1/orders/{id}/","href":"/api-reference/orders/orders_create_refresh_order"},{"title":"Add new employer to the existing order","openapi":"POST /v1/orders/{id}/employers/","href":"/api-reference/orders/order-add-new-employer"},{"title":"Retrieve events for an order","openapi":"GET /v1/orders/{id}/events/","href":"/api-reference/orders/orders_events_list"},{"title":"Retrieve self-certification results for an order","openapi":"GET /v1/orders/{id}/certifications/","href":"/api-reference/orders/orders_certifications_results"},{"title":"Retrieve an order invoice","openapi":"GET /v1/orders/{id}/invoice/","href":"/api-reference/orders/order_group_invoice_detail"}]},{"group":"Users","pages":[{"title":"The Users object","href":"/api-reference/users/object"},{"title":"Create a user","openapi":"POST /v1/users/","href":"/api-reference/users/users_create"},{"title":"List all users","openapi":"GET /v1/users/","href":"/api-reference/users/users_list"},{"title":"Retrieve a user","openapi":"GET /v1/users/{user_id}/","href":"/api-reference/users/users_read"},{"title":"Update a user","openapi":"PATCH /v1/users/{user_id}/","href":"/api-reference/users/users_partial_update"},{"title":"Delete a user","openapi":"DELETE /v1/users/{user_id}/","href":"/api-reference/users/users_delete"}]},{"group":"Bridge Token","pages":[{"title":"The Bridge Token object","href":"/api-reference/bridge-token/object"},{"title":"Create a bridge token","openapi":"POST /v1/users/{user_id}/tokens/","href":"/api-reference/bridge-token/users_tokens"}]},{"group":"Tasks","pages":[{"title":"The Tasks object","href":"/api-reference/tasks/object"},{"title":"Task Lifecycle","href":"/api-reference/tasks/lifecycle"},{"title":"Task Webhook Events","href":"/api-reference/tasks/events"},{"title":"List all tasks","openapi":"GET /v1/tasks/","href":"/api-reference/tasks/tasks_list"},{"title":"Retrieve a task","openapi":"GET /v1/tasks/{id}/","href":"/api-reference/tasks/tasks_read"}]},{"group":"Data Refresh","pages":[{"title":"The Task Refresh object","href":"/api-reference/refresh/object"},{"title":"Create a data refresh task","openapi":"POST /v1/refresh/tasks/","href":"/api-reference/refresh/refresh_task_create"},{"title":"Retrieve a data refresh status","openapi":"GET /v1/refresh/tasks/{task_id}/","href":"/api-reference/refresh/refresh_task"}]},{"group":"Account Links","pages":[{"title":"The Account Links object","href":"/api-reference/links/object"},{"title":"Account Link Webhook Events","href":"/api-reference/links/events"},{"title":"List all links","openapi":"GET /v1/links/","href":"/api-reference/links/links-list"},{"title":"Retrieve a link","openapi":"GET /v1/links/{link_id}/","href":"/api-reference/links/links-item"},{"title":"Retrieve a link token","openapi":"POST /v1/link-access-tokens/","href":"/api-reference/links/link_exchange_token_flow"},{"title":"Delete a link","openapi":"DELETE /v1/links/{link_id}/","href":"/api-reference/links/delete_link_by_link_id"}]},{"group":"Companies","pages":[{"title":"The Companies object","href":"/api-reference/companies/object"},{"title":"Search companies","openapi":"POST /v1/companies/","href":"/api-reference/companies/company_mapping"},{"title":"Get company information","openapi":"GET /v1/companies/{company_mapping_id}/","href":"/api-reference/companies/company_info"},{"title":"Search companies with autocomplete","openapi":"GET /v1/company-mappings-search/","href":"/api-reference/companies/company_autocomplete_search"}]},{"group":"Data Providers","pages":[{"title":"The Data Providers object","href":"/api-reference/data-providers/object"},{"title":"List all data providers","openapi":"GET /v1/providers/","href":"/api-reference/data-providers/providers-list"},{"title":"Retrieve a data provider","openapi":"GET /v1/providers/{id}/","href":"/api-reference/data-providers/providers-detail"}]},{"group":"UX Customization","pages":[{"title":"The Templates object","href":"/api-reference/templates/object"},{"title":"Create a customization template","openapi":"POST /v1/templates/","href":"/api-reference/templates/templates_create"},{"title":"List all customization templates","openapi":"GET /v1/templates/","href":"/api-reference/templates/templates_list"},{"title":"Retrieve a customization template","openapi":"GET /v1/templates/{template_id}/","href":"/api-reference/templates/templates_read"},{"title":"Update a customization template","openapi":"PATCH /v1/templates/{template_id}/","href":"/api-reference/templates/templates_partial_update"},{"title":"Delete a customization template","openapi":"DELETE /v1/templates/{template_id}/","href":"/api-reference/templates/templates_delete"}]},{"group":"Sandbox","pages":[{"title":"The Sandbox Scenario object","href":"/api-reference/sandbox/object"},{"title":"Create a sandbox scenario","openapi":"POST /v1/sandbox/scenarios/","href":"/api-reference/sandbox/v1_sandbox_scenarios_create"},{"title":"List sandbox scenarios","openapi":"GET /v1/sandbox/scenarios/","href":"/api-reference/sandbox/v1_sandbox_scenarios_list"},{"title":"Retrieve a sandbox scenario","openapi":"GET /v1/sandbox/scenarios/{scenario_id}/","href":"/api-reference/sandbox/v1_sandbox_scenarios_read"},{"title":"Update a sandbox scenario","openapi":"PATCH /v1/sandbox/scenarios/{scenario_id}/","href":"/api-reference/sandbox/v1_sandbox_scenarios_partial_update"},{"title":"Delete a sandbox scenario","openapi":"DELETE /v1/sandbox/scenarios/{scenario_id}/","href":"/api-reference/sandbox/v1_sandbox_scenarios_delete"},{"title":"Resolve a sandbox scenario","openapi":"POST /v1/sandbox/scenarios/resolve/","description":"A dry run: send the input a user would supply and get back the scenario that would answer it, along with the fields it constrained and the tier it came from.\n\nIf multiple scenarios match, Truv selects the scenario with more matching fields, excluding `is_refresh`. If there is still a tie, a scenario that sets `is_refresh` wins, and then the oldest scenario. A `404` means none of your scenarios matches the input, and the task would use Truv's built-in test data.","href":"/api-reference/sandbox/v1_sandbox_scenarios_resolve"},{"title":"Upload a sandbox document","openapi":"POST /v1/sandbox/documents/","href":"/api-reference/sandbox/v1_sandbox_documents_create"},{"title":"List sandbox documents","openapi":"GET /v1/sandbox/documents/","description":"Cursor-paginated list of your sandbox document library, newest first.","href":"/api-reference/sandbox/v1_sandbox_documents_list"},{"title":"Retrieve a sandbox document","openapi":"GET /v1/sandbox/documents/{document_id}/","href":"/api-reference/sandbox/v1_sandbox_documents_read"},{"title":"Update a sandbox document","openapi":"PATCH /v1/sandbox/documents/{document_id}/","href":"/api-reference/sandbox/v1_sandbox_documents_partial_update"},{"title":"Delete a sandbox document","openapi":"DELETE /v1/sandbox/documents/{document_id}/","href":"/api-reference/sandbox/v1_sandbox_documents_delete"}]},{"group":"Key Management","hidden":true,"pages":[{"title":"The Key Management object","href":"/api-reference/keys/object"},{"title":"Create an API key","openapi":"POST /v1/keys/","href":"/api-reference/keys/keys-create"},{"title":"Deactivate an API key","openapi":"POST /v1/keys/deactivate/","href":"/api-reference/keys/keys-deactivate"}]},{"group":"Webhook Endpoints","pages":[{"title":"The Webhook Endpoint object","href":"/api-reference/webhooks/object"},{"title":"Create a webhook endpoint","openapi":"POST /v1/webhooks/","href":"/api-reference/webhooks/webhooks_create"},{"title":"List all webhook endpoints","openapi":"GET /v1/webhooks/","href":"/api-reference/webhooks/webhooks_list"},{"title":"Retrieve a webhook endpoint","openapi":"GET /v1/webhooks/{webhook_id}/","href":"/api-reference/webhooks/webhooks_read"},{"title":"Update a webhook endpoint","openapi":"PATCH /v1/webhooks/{webhook_id}/","href":"/api-reference/webhooks/webhooks_partial_update"},{"title":"Delete a webhook endpoint","openapi":"DELETE /v1/webhooks/{webhook_id}/","href":"/api-reference/webhooks/webhooks_delete"},{"title":"List webhook request history","openapi":"GET /v1/webhook-requests/","href":"/api-reference/webhooks/webhook_requests_list"}]}]},{"group":"Income \u0026 Employment","pages":[{"group":"User Income and Employment Report","pages":[{"title":"The User Income \u0026 Employment Reports object","href":"/api-reference/user-income-and-employment-reports/object"},{"title":"Create an income and employment report","openapi":"POST /v1/users/{user_id}/reports/","href":"/api-reference/user-income-and-employment-reports/users_reports"},{"title":"Retrieve an income and employment report","openapi":"GET /v1/users/{user_id}/reports/{report_id}/","href":"/api-reference/user-income-and-employment-reports/users_get_report"}]},{"group":"Link Income and Employment Report","pages":[{"title":"The Link Income \u0026 Employment Reports object","href":"/api-reference/account-link-income-and-employment-reports/object"},{"title":"Retrieve an income and employment report for a link","openapi":"GET /v1/links/{link_id}/income/report/","href":"/api-reference/account-link-income-and-employment-reports/link_detail_reports_income"},{"title":"Retrieve an employment history report for a link","openapi":"GET /v1/links/{link_id}/employment/report/","href":"/api-reference/account-link-income-and-employment-reports/link_detail_reports_employment"}]},{"group":"Benefit Letters","pages":[{"title":"List all benefit letters","openapi":"GET /v1/links/{link_id}/benefit_letters/","href":"/api-reference/benefit-letters/benefit-letters"},{"title":"Retrieve benefit letter","openapi":"GET /v1/links/{link_id}/benefit_letters/{benefit_letter_id}/","href":"/api-reference/benefit-letters/benefit-letter"}]},{"group":"Employment","pages":[{"title":"The Employment object","href":"/api-reference/employment/object"},{"title":"Employment Webhook Events","href":"/api-reference/employment/events"},{"title":"List all employments","openapi":"GET /v1/links/{link_id}/employments/","href":"/api-reference/employment/link-employments"},{"title":"Retrieve an employment","openapi":"GET /v1/links/{link_id}/employment/","href":"/api-reference/employment/link-last-employment"}]},{"group":"Identity","pages":[{"title":"The Identity object","href":"/api-reference/identity/object"},{"title":"Identity Webhook Events","href":"/api-reference/identity/events"},{"title":"Retrieve an identity","openapi":"GET /v1/links/{link_id}/identity/","href":"/api-reference/identity/link-identity"}]},{"group":"Pay Statements","pages":[{"title":"The Pay Statements object","href":"/api-reference/statements/object"},{"title":"Pay Statement Webhook Events","href":"/api-reference/statements/events"},{"title":"List all statements","openapi":"GET /v1/links/{link_id}/statements/","href":"/api-reference/statements/link-statements"},{"title":"Retrieve a statement","openapi":"GET /v1/links/{link_id}/statements/{statement_id}/","href":"/api-reference/statements/retrieve-statement"}]},{"group":"Shifts","pages":[{"title":"The Shifts object","href":"/api-reference/shifts/object"},{"title":"Shift Webhook Events","href":"/api-reference/shifts/events"},{"title":"List all shifts","openapi":"GET /v1/links/{link_id}/shifts/","href":"/api-reference/shifts/link-shifts"}]},{"group":"Tax Documents","pages":[{"title":"The Tax Documents object","href":"/api-reference/tax/object"},{"title":"List all tax documents","openapi":"GET /v1/links/{link_id}/tax/","href":"/api-reference/tax/tax-documents"},{"title":"Retrieve tax document","openapi":"GET /v1/links/{link_id}/tax/{tax_id}/","href":"/api-reference/tax/tax-document"}]}]},{"group":"Financial Accounts","pages":[{"group":"User Assets Report","pages":[{"title":"The User Asset Reports object","href":"/api-reference/user-asset-verification-reports/object"},{"title":"Create an assets report","openapi":"POST /v1/users/{user_id}/assets/reports/","href":"/api-reference/user-asset-verification-reports/assets-report-create"},{"title":"Retrieve an assets report","openapi":"GET /v1/users/{user_id}/assets/reports/{report_id}/","href":"/api-reference/user-asset-verification-reports/assets-report-retrieve"}]},{"group":"Bank Income Report","pages":[{"title":"The Bank Income Report Object","href":"/api-reference/bank-income-insights/object"},{"title":"Retrieve the most recent bank income report","openapi":"GET /v1/links/{link_id}/income/transactions/reports/","href":"/api-reference/bank-income-insights/bank-income-report-retrieve"}]},{"group":"User Income Insights Report","pages":[{"title":"The User Income Insights object","href":"/api-reference/income-insights/object"},{"title":"Create a user bank income insights report","openapi":"POST /v1/users/{user_id}/income_insights/reports/","href":"/api-reference/income-insights/income-insights-report-create"},{"title":"Retrieve a user bank income insights report","openapi":"GET /v1/users/{user_id}/income_insights/reports/{report_id}/","href":"/api-reference/income-insights/income-insights-report-retrieve"}]},{"group":"Auth","pages":[{"title":"The Auth object","href":"/api-reference/auth/object"},{"title":"Retrieve auth data","openapi":"GET /v1/links/{link_id}/auth/","href":"/api-reference/auth/bank-auth-get"}]},{"group":"Balances","pages":[{"title":"The Balances object","href":"/api-reference/balances/object"},{"title":"List all balances","openapi":"GET /v1/links/{link_id}/balances/","href":"/api-reference/balances/balances-list"}]},{"group":"Transactions","pages":[{"title":"The Transactions object","href":"/api-reference/transactions/object"},{"title":"List all bank transactions","openapi":"GET /v1/links/{link_id}/transactions/","href":"/api-reference/transactions/link-bank-data-transactions"}]},{"group":"Recurring Transactions","pages":[{"title":"Retrieve recurring transactions (inflows and outflows) for a user","openapi":"GET /v1/users/{user_id}/transactions/recurring/","href":"/api-reference/recurring-transactions/applicant-recurring-transactions"}]},{"group":"Bank Statements","pages":[{"title":"List all bank statements","openapi":"GET /v1/links/{link_id}/bank_statements/","href":"/api-reference/bank-statements/link-bank-statements"}]},{"group":"Investments","pages":[{"title":"List all investment holdings","openapi":"GET /v1/links/{link_id}/investments/","href":"/api-reference/investments/link-investments-list"}]},{"group":"Liabilities","pages":[{"title":"The Liabilities object","href":"/api-reference/liabilities/object"},{"title":"Retrieve liabilities","openapi":"GET /v1/links/{link_id}/liabilities/","href":"/api-reference/liabilities/link_liabilities"}]},{"group":"Scoring Attributes Reports","pages":[{"title":"The Scoring Attributes Report object","href":"/api-reference/scoring-attributes/object"},{"title":"Create a scoring attributes report","openapi":"POST /v1/scoring_attributes/reports","href":"/api-reference/scoring-attributes/scoring-attributes-report-create"},{"title":"Retrieve a scoring attributes report","openapi":"GET /v1/scoring_attributes/reports/{report_id}","href":"/api-reference/scoring-attributes/scoring-attributes-report-retrieve"}]}]},{"group":"Document Processing","pages":[{"group":"Document Collections","pages":[{"title":"The Document Collections object","href":"/api-reference/document-collections/object"},{"title":"Document Collection Webhook Events","href":"/api-reference/document-collections/events"},{"title":"Create a new document collection","openapi":"POST /v1/documents/collections/","href":"/api-reference/document-collections/collections_create"},{"title":"Get document collection details","openapi":"GET /v1/documents/collections/{collection_id}/","href":"/api-reference/document-collections/collections_retrieve"},{"title":"List all document collections","openapi":"GET /v1/documents/collections/","href":"/api-reference/document-collections/collections_list"},{"title":"Upload files to existing collection","openapi":"POST /v1/documents/collections/{collection_id}/upload/","href":"/api-reference/document-collections/collections_upload"},{"title":"Get uploaded file details","openapi":"GET /v1/documents/collections/{collection_id}/upload/{uploaded_file_id}/","href":"/api-reference/document-collections/collections_uploaded_file_retrieve"},{"title":"Finalize a collection","openapi":"POST /v1/documents/collections/{collection_id}/finalize/","href":"/api-reference/document-collections/collections_finalize_create"},{"title":"Get collection finalization results","openapi":"GET /v1/documents/collections/{collection_id}/finalize/","href":"/api-reference/document-collections/collections_finalize_retrieve"},{"title":"Delete an uploaded file","openapi":"DELETE /v1/documents/collections/{collection_id}/upload/{uploaded_file_id}/","href":"/api-reference/document-collections/collections_uploaded_file_delete"},{"title":"Delete a document collection","openapi":"DELETE /v1/documents/collections/{collection_id}/","href":"/api-reference/document-collections/collections_delete"}]},{"group":"Uploaded Documents","pages":[{"title":"The Uploaded Documents object","href":"/api-reference/uploaded-documents/object"},{"title":"List all documents","openapi":"GET /v1/links/{link_id}/documents/","href":"/api-reference/uploaded-documents/list-documents"},{"title":"Retrieve document","openapi":"GET /v1/links/{link_id}/documents/{doc_id}/","href":"/api-reference/uploaded-documents/retrieve-document"}]},{"group":"Parsed Documents","pages":[{"title":"The Parsed Documents object","href":"/api-reference/parsed-documents/object"},{"title":"List all parsed documents","openapi":"GET /v1/links/{link_id}/parsed-documents/","href":"/api-reference/parsed-documents/list-parsed-documents"},{"title":"Retrieve parsed document","openapi":"GET /v1/links/{link_id}/parsed-documents/{doc_id}/","href":"/api-reference/parsed-documents/retrieve-parsed-document"}]}]},{"group":"Direct Deposit Switch","pages":[{"group":"Bank Accounts","pages":[{"title":"The Bank Accounts object","href":"/api-reference/bank-accounts/object"},{"title":"List all bank accounts","openapi":"GET /v1/links/{link_id}/bank_accounts/","href":"/api-reference/bank-accounts/link-bank-accounts"},{"title":"Bank Account Webhook Events","href":"/api-reference/bank-accounts/events"}]},{"group":"Deposit Switch","pages":[{"title":"The Deposit Switch object","href":"/api-reference/deposit-switch/object"},{"title":"Retrieve a direct deposit switch report for a link","openapi":"GET /v1/links/{link_id}/direct_deposit/report/","href":"/api-reference/deposit-switch/link_detail_reports_dds"},{"title":"Retrieve a paycheck linked loan report","openapi":"GET /v1/links/{link_id}/pll/report/","href":"/api-reference/deposit-switch/link_detail_reports_pll"}]},{"group":"User deposit switch report","pages":[{"title":"The User Deposit Switch Object","href":"/api-reference/dds-reports/object"},{"title":"Retrieve a deposit switch report","openapi":"GET /v1/users/{user_id}/deposit_switch/report/","href":"/api-reference/dds-reports/dds-report-retrieve"}]}]},{"group":"Insurance Verification","pages":[{"group":"Link Insurance Report","pages":[{"title":"The Insurance object","href":"/api-reference/insurance/object"},{"title":"Retrieve an auto insurance report","openapi":"GET /v1/links/{link_id}/insurance/report/auto/","href":"/api-reference/insurance/link_detail_reports_insurance_auto"},{"title":"Retrieve a home insurance report","openapi":"GET /v1/links/{link_id}/insurance/report/home/","href":"/api-reference/insurance/link_detail_reports_insurance_home"},{"title":"Retrieve an insurance report","openapi":"GET /v1/links/{link_id}/insurance/report/","href":"/api-reference/insurance/link_detail_reports_insurance"}]}]}]}]},"basePath":"","title":"Upload a sandbox document - Truv","buildId":"dpl_Fyv1NbzwP68g2bEH2Roy98uY1zmE","deploymentId":"dpl_Fyv1NbzwP68g2bEH2Roy98uY1zmE","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DdEMm2kG.js","utils-BMo572L7.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-C-4m9KAx.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DPLK2Oq9.js","snippetPresets-BKjfJMC9.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-DTsgtCEj.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C8vmhyQM.js","shallow-r9w8LQGS.js","getApiPlaygroundDisplay-DjPI64HQ.js","CodeSnippet-C8Bvhl16.js","CodeSnippets-BtWUwcMy.js","Page-BIYvYBgk.js","getPastedJson-Dcm_3Pgl.js","icon-BXwrTpjc.js","MethodPill-CcjfVmmy.js","DuplicateIcon-BuKIbXAQ.js","createIcon-DaL9yXsO.js","DynamicMarkdown-Co5nikxh.js","SectionHeading-P4UNTsMZ.js","axios-vUo_bRtp.js","Markdown-CEfymfIH.js","clsx-Dq9TQuNi.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-D2J8knkn.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BgZ2ThuU.js"]}