Reserve an attachment upload: the response names where to PUT the file.
The upload id then goes in the attestation as attachment_upload_id.
Upload the file first, then attest.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Kosli Documentation","colors":{"primary":"#1C4BC6","light":"#ABBDFF","dark":"#1C4BC6"},"logo":{"light":"https://mintcdn.com/kosli/Cee1LAu-Jhawp1Om/logo/kosli-logo-light-main.svg?fit=max\u0026auto=format\u0026n=Cee1LAu-Jhawp1Om\u0026q=85\u0026s=fb05fdbb0c9c9ae7da266a500eac2be6","dark":"https://mintcdn.com/kosli/Cee1LAu-Jhawp1Om/logo/kosli-logo-dark-main.svg?fit=max\u0026auto=format\u0026n=Cee1LAu-Jhawp1Om\u0026q=85\u0026s=c230555c5e1d57d0f9f9630117a1467d"},"favicon":"https://mintcdn.com/kosli/CktiOOFhqneQZXyH/favicon-32x32.png?fit=max\u0026auto=format\u0026n=CktiOOFhqneQZXyH\u0026q=85\u0026s=1b16e66cd5c7266604a6a683f334f672","api":{"playground":{"display":"interactive"}},"background":{"decoration":"windows","color":{"light":"#F6F8FC","dark":"#111A26"}},"navbar":{"links":[{"href":"mailto:support@kosli.com","label":"Support"}],"primary":{"type":"button","label":"Kosli App","href":"https://app.kosli.com"}},"footer":{"socials":{"website":"https://kosli.com","github":"https://github.com/kosli-dev","linkedin":"https://linkedin.com/company/kosli-dev"},"links":[{"header":"Resources","items":[{"label":"Privacy Policy","href":"https://www.kosli.com/privacy-policy"},{"label":"Status","href":"https://status.app.kosli.com/"}]},{"header":"Learn","items":[{"label":"Labs","href":"/labs"},{"label":"Blog","href":"https://kosli.com/blog"}]},{"header":"Company","items":[{"label":"About Kosli","href":"https://www.kosli.com/about"},{"label":"Privacy","href":"https://www.kosli.com/privacy-policy"},{"label":"Community","href":"https://www.kosli.com/community"}]}]},"fonts":{"family":"IBM Plex Sans"},"styling":{"eyebrows":"breadcrumbs","codeblocks":{"theme":"dracula","languages":{"custom":["/languages/rego.json"]}},"latex":false},"integrations":{"posthog":{"apiKey":"phc_vKbCGJq5rzV4apArUzYDRwh6azCmgCPcLz8jTa9CgmGR","apiHost":"https://eu.posthog.com","sessionRecording":false},"cookies":{"key":"kosli_consent","value":"accepted"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"metadata":{"timestamp":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"kosli","hasAudioNarration":false,"actualSubdomain":"kosli","customDomains":["docs.kosli.com"],"gitSource":{"type":"github","owner":"kosli-dev","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae892120522e59c033bb643","collectionId":"ee7ae2f7-00de-4854-bd53-0e106bb6463a","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae892120522e59c033bb643"},"feedback":{"thumbs":true,"edits":false,"issues":false,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"DISABLED","enabled":"DISABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"DISABLED","enabled":"DISABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae892120522e59c033bb643","clientVersion":"0.0.4045","searchFilterCounts":[{"language":"default","tag":"Reference","count":285},{"language":"default","tag":"API Reference","count":148},{"language":"default","tag":"CLI Reference","count":102},{"language":"default","tag":"Documentation","count":70},{"language":"default","tag":"Terraform Reference","count":22},{"language":"default","tag":"Tutorials","count":22},{"language":"default","tag":"Environments","count":21},{"language":"default","tag":"Attestation","count":18},{"language":"default","tag":"Administration","count":17},{"language":"default","tag":"kosli get","count":14}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":true,"enableContextualStarterQuestions":true,"enableAskAiSearchBar":true,"deflection":{"enabled":false,"showHelpButton":false}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"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":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":"[data-component-part=step-number]>div{background-color:#cfd8ff!important;color:#111a26!important}"}],"page":{"pagePath":"api-reference/attestation/create-an-attachment-upload","slug":"/api-reference/attestation/create-an-attachment-upload","pageMetadata":{"title":"Create an attachment upload","description":"Reserve an attachment upload: the response names where to PUT the file.\nThe upload id then goes in the attestation as `attachment_upload_id`.\nUpload the file first, then attest.","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json post /attestations/{org}/uploads","href":"/api-reference/attestation/create-an-attachment-upload","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {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(_components.p, {\n children: [\"Reserve an attachment upload: the response names where to PUT the file.\\nThe upload id then goes in the attestation as \", _jsx(_components.code, {\n children: \"attachment_upload_id\"\n }), \".\\nUpload the file first, then attest.\"]\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":{"theme":"dracula","languages":{"custom":["/languages/rego.json"]}},"config":{},"pageMetadata":{"title":"Create an attachment upload","description":"Reserve an attachment upload: the response names where to PUT the file.\nThe upload id then goes in the attestation as `attachment_upload_id`.\nUpload the file first, then attest.","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json post /attestations/{org}/uploads","href":"/api-reference/attestation/create-an-attachment-upload","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/kosli/a8952d14c382591c/termly.js"],"openApiReferenceData":{"operation":{"tags":["Attestation"],"summary":"Create an attachment upload","description":"Reserve an attachment upload: the response names where to PUT the file.\nThe upload id then goes in the attestation as `attachment_upload_id`.\nUpload the file first, then attest.","operationId":"create_attestation_upload","security":["7f35651c-22fc-4b67-a8aa-e74d9b51a351","0002642c-b8d3-4af3-80c6-5b86dcc3b0a7"],"parameters":["436111fa-277e-4e11-89f3-82c2cead0d58"],"requestBody":"fe50d7e7-2524-4583-857f-9ace4e3e8b33","responses":{"201":"a7d99258-c578-4390-8237-a693909e3d1b","400":"cc3299c8-fae5-4468-bfd1-662aeb75a020","404":"84ba753b-3e5d-44f7-8adf-1e63e981b6a1"},"method":"post","type":"path","servers":["7492fbf8-c3bf-4b52-9010-cdb966465c13","4833f838-dae8-460a-be72-fc371da4561d"],"path":"/attestations/{org}/uploads","baseUrlOptions":["https://app.kosli.com/api/v2","https://app.us.kosli.com/api/v2"],"title":"Create an attachment upload","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"436111fa-277e-4e11-89f3-82c2cead0d58":{"name":"org","in":"path","required":true,"schema":{"type":"string","title":"Org","isRequired":true,"uniqueKey":"","typeLabel":"string"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"filename":{"type":"string","maxLength":255,"minLength":1,"title":"Filename","description":"The name the attachment is stored and downloaded under","isRequired":true,"uniqueKey":"filename","typeLabel":"string"},"size_bytes":{"type":"integer","maximum":5368709120,"minimum":1,"title":"Size Bytes","description":"The size of the file, checked against the org's limit","isRequired":true,"uniqueKey":"size_bytes","typeLabel":"integer"},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$","title":"Sha256","description":"Hex SHA-256 of the file; S3 refuses the upload if the body differs","isRequired":true,"uniqueKey":"sha256","typeLabel":"string"}},"additionalProperties":false,"type":"object","required":["filename","size_bytes","sha256"],"title":"UploadPostInput","uniqueKey":"","typeLabel":"UploadPostInput · object"},"examples":{"Example":{"title":"Example","value":{"filename":"\u003cstring>","size_bytes":2684354560,"sha256":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"a7d99258-c578-4390-8237-a693909e3d1b":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"upload_id":{"type":"string","title":"Upload Id","description":"Names this upload in the attestation that attaches it","isRequired":true,"uniqueKey":"upload_id","typeLabel":"string"},"url":{"type":"string","title":"Url","description":"Where to PUT the file, valid until upload_url_expires_at","isRequired":true,"uniqueKey":"url","typeLabel":"string"},"method":{"type":"string","const":"PUT","title":"Method","isRequired":true,"uniqueKey":"method","typeLabel":"string"},"headers":{"additionalProperties":{"type":"string","uniqueKey":"headers.additionalProperties","typeLabel":"string"},"type":"object","title":"Headers","description":"Headers the PUT must carry exactly as given; they are signed","isRequired":true,"uniqueKey":"headers","typeLabel":"Headers · object"},"upload_url_expires_at":{"type":"number","title":"Upload Url Expires At","description":"Epoch seconds after which the PUT is refused; mint again to retry","isRequired":true,"uniqueKey":"upload_url_expires_at","typeLabel":"number"},"upload_id_expires_at":{"type":"number","title":"Upload Id Expires At","description":"Epoch seconds after which the attest call refuses the upload id and the uploaded file is discarded; mint and upload again to recover","isRequired":true,"uniqueKey":"upload_id_expires_at","typeLabel":"number"},"max_size_bytes":{"type":"integer","title":"Max Size Bytes","description":"The org's limit for a single upload","isRequired":true,"uniqueKey":"max_size_bytes","typeLabel":"integer"}},"type":"object","required":["upload_id","url","method","headers","upload_url_expires_at","upload_id_expires_at","max_size_bytes"],"title":"UploadResponse","uniqueKey":"","typeLabel":"UploadResponse · object"},"examples":{"Example":{"title":"Example","value":{"upload_id":"\u003cstring>","url":"\u003cstring>","method":"PUT","headers":{},"upload_url_expires_at":123,"upload_id_expires_at":123,"max_size_bytes":123}}},"exampleType":"generated"}},"exampleType":"generated"},"cc3299c8-fae5-4468-bfd1-662aeb75a020":{"description":"File size over the org's limit","content":{"application/json":{"example":{"message":"Input payload validation failed"},"schema":{"properties":{"message":{"type":"string","title":"Message","description":"Error message","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"errors":{"oneOf":[{"type":"object","title":"Errors","description":"Validation errors by field","additionalProperties":{"type":"string","uniqueKey":"errors.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"errors.oneOf.0","typeLabel":"Errors · object"},{"type":"null","title":"Errors","description":"Validation errors by field","uniqueKey":"errors.oneOf.1","typeLabel":"null"}],"uniqueKey":"errors","typeLabel":"Errors · object | null"}},"type":"object","required":["message"],"title":"BadRequestResponseModel","uniqueKey":"","typeLabel":"BadRequestResponseModel · object"},"examples":{"Example":{"title":"Example","value":{"message":"Input payload validation failed"}}},"exampleType":"examples"}},"exampleType":"examples"},"84ba753b-3e5d-44f7-8adf-1e63e981b6a1":{"description":"Direct uploads not available","content":{"application/json":{"example":{"message":"Resource Not Found"},"schema":{"properties":{"message":{"type":"string","title":"Message","description":"Error message","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"errors":{"oneOf":[{"type":"object","title":"Errors","description":"Validation errors by field","additionalProperties":{"type":"string","uniqueKey":"errors.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"errors.oneOf.0","typeLabel":"Errors · object"},{"type":"null","title":"Errors","description":"Validation errors by field","uniqueKey":"errors.oneOf.1","typeLabel":"null"}],"uniqueKey":"errors","typeLabel":"Errors · object | null"}},"type":"object","required":["message"],"title":"NotFoundResponseModel","uniqueKey":"","typeLabel":"NotFoundResponseModel · object"},"examples":{"Example":{"title":"Example","value":{"message":"Resource Not Found"}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"7f35651c-22fc-4b67-a8aa-e74d9b51a351":{"HTTPBearer":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"HTTPBearer"}},"0002642c-b8d3-4af3-80c6-5b86dcc3b0a7":{"HTTPBasic":{"$ref":"3987cbc1-852d-4e15-b0fd-b929fbb62869","scopes":[]}}},"servers":{"7492fbf8-c3bf-4b52-9010-cdb966465c13":{"url":"https://app.kosli.com/api/v2","description":"EU"},"4833f838-dae8-460a-be72-fc371da4561d":{"url":"https://app.us.kosli.com/api/v2","description":"US"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"HTTPBearer"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"HTTPBearer","name":"Authorization"}],"title":"HTTPBearer"}]},"originalFileLocation":"https://app.kosli.com/api/v2/openapi.json"},"subdomain":"kosli","siteName":"Kosli Documentation","title":"Create an attachment upload - Kosli Documentation","contextualStarterQuestions":[],"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-30T14:12:15.954Z","originalFileLocation":"api-reference/attestation/create-an-attachment-upload.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=\"Reserve an attachment upload: the response names where to PUT the file. The upload id then goes in the attestation as attachment_upload_id. Upload the file first, then attest.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Kosli Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/kosli/7UeZPXzpjJmWmx3T/_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/kosli/7UeZPXzpjJmWmx3T/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/kosli/7UeZPXzpjJmWmx3T/_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/kosli/7UeZPXzpjJmWmx3T/_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/kosli/7UeZPXzpjJmWmx3T/_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/kosli/7UeZPXzpjJmWmx3T/_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/kosli/7UeZPXzpjJmWmx3T/_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/kosli/7UeZPXzpjJmWmx3T/_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/kosli/7UeZPXzpjJmWmx3T/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create an attachment upload - Kosli Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Reserve an attachment upload: the response names where to PUT the file. The upload id then goes in the attestation as attachment_upload_id. Upload the file first, then attest.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Kosli Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.kosli.com/api-reference/attestation/create-an-attachment-upload\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://kosli.mintlify.app/_mintlify/api/og/v2?division=Attestation\u0026amp;title=Create+an+attachment+upload\u0026amp;description=Reserve+an+attachment+upload%3A+the+response+names+where+to+PUT+the+file.%0AThe+upload+id+then+goes+in+the+attestation+as+%60attachment_upload_id%60.%0AUpload+the+file+fi\u0026amp;theme=381f3588bbad67d04f5be36e\u0026amp;signature=40508ceb3cc16acb2f3a15012a4cebc04d0f087f9053e3ac3de963b0eb5eca2c\">\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=\"Create an attachment upload - Kosli Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Reserve an attachment upload: the response names where to PUT the file. The upload id then goes in the attestation as attachment_upload_id. Upload the file first, then attest.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://kosli.mintlify.app/_mintlify/api/og/v2?division=Attestation\u0026amp;title=Create+an+attachment+upload\u0026amp;description=Reserve+an+attachment+upload%3A+the+response+names+where+to+PUT+the+file.%0AThe+upload+id+then+goes+in+the+attestation+as+%60attachment_upload_id%60.%0AUpload+the+file+fi\u0026amp;theme=381f3588bbad67d04f5be36e\u0026amp;signature=40508ceb3cc16acb2f3a15012a4cebc04d0f087f9053e3ac3de963b0eb5eca2c\">\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/kosli/7UeZPXzpjJmWmx3T/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Kosli Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1C4BC6\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.kosli.com/api-reference/attestation/create-an-attachment-upload\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/attestation/create-an-attachment-upload.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.kosli.com/#organization\",\"name\":\"Kosli Documentation\",\"url\":\"https://docs.kosli.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/kosli/Cee1LAu-Jhawp1Om/logo/kosli-logo-light-main.svg?fit=max\u0026auto=format\u0026n=Cee1LAu-Jhawp1Om\u0026q=85\u0026s=fb05fdbb0c9c9ae7da266a500eac2be6\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.kosli.com#website\",\"name\":\"Kosli Documentation\",\"url\":\"https://docs.kosli.com\",\"publisher\":{\"@id\":\"https://docs.kosli.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.kosli.com/api-reference/attestation/create-an-attachment-upload#webpage\",\"url\":\"https://docs.kosli.com/api-reference/attestation/create-an-attachment-upload\",\"name\":\"Create an attachment upload\",\"description\":\"Reserve an attachment upload: the response names where to PUT the file. The upload id then goes in the attestation as attachment_upload_id. Upload the file first, then attest.\",\"dateModified\":\"2026-10-30T14:12:15.954Z\",\"isPartOf\":{\"@id\":\"https://docs.kosli.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.kosli.com/api-reference/attestation/create-an-attachment-upload#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.kosli.com/api-reference/attestation/create-an-attachment-upload#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Attestation\",\"item\":\"https://docs.kosli.com/api-reference/attestation/list-system-attestation-types\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create an attachment upload\",\"item\":\"https://docs.kosli.com/api-reference/attestation/create-an-attachment-upload\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.kosli.com/api-reference/attestation/create-an-attachment-upload#apireference\",\"headline\":\"Create an attachment upload\",\"name\":\"Create an attachment upload\",\"description\":\"Reserve an attachment upload: the response names where to PUT the file. The upload id then goes in the attestation as attachment_upload_id. Upload the file first, then attest.\",\"url\":\"https://docs.kosli.com/api-reference/attestation/create-an-attachment-upload\",\"mainEntityOfPage\":{\"@id\":\"https://docs.kosli.com/api-reference/attestation/create-an-attachment-upload#webpage\"},\"dateModified\":\"2026-10-30T14:12:15.954Z\",\"publisher\":{\"@id\":\"https://docs.kosli.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.kosli.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Kosli Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Kosli Documentation","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/understand_kosli/what_is_kosli"}]},{"tab":"Labs","pages":[{"title":"Labs","href":"/labs"}]},{"tab":"Implementation Guide","pages":[{"title":"Implementation Guide","href":"/implementation_guide/phase_1/roles_and_responsibilities/overview"}]},{"tab":"Reference","menu":[{"item":"CLI Reference","icon":"terminal","pages":[{"title":"CLI Reference","href":"/client_reference/overview"}]},{"item":"API Reference","icon":"code","groups":[{"group":"Actions","pages":[{"title":"List actions","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /actions/{org}","href":"/api-reference/actions/list-actions"},{"title":"Create or update environment action","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json put /actions/{org}/environments","href":"/api-reference/actions/create-or-update-environment-action"},{"title":"Create or update flow action","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json put /actions/{org}/flows","href":"/api-reference/actions/create-or-update-flow-action"},{"title":"Get action","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /actions/{org}/{action_number}","href":"/api-reference/actions/get-action"},{"title":"Delete an action","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json delete /actions/{org}/{action_number}","href":"/api-reference/actions/delete-an-action"}]},{"group":"Allowlists","pages":[{"title":"List allowlist","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /allowlists/{org}","href":"/api-reference/allowlists/list-allowlist"},{"title":"Allow artifact for environment","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json put /allowlists/{org}/{env_name}","href":"/api-reference/allowlists/allow-artifact-for-environment"}]},{"group":"Artifacts","pages":[{"title":"List artifacts","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /artifacts/{org}","href":"/api-reference/artifacts/list-artifacts"},{"title":"List artifacts in flow","deprecated":true,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /artifacts/{org}/{flow_name}","href":"/api-reference/artifacts/list-artifacts-in-flow"},{"title":"Report artifact","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json post /artifacts/{org}/{flow_name}","href":"/api-reference/artifacts/report-artifact"},{"title":"Get artifacts by commit SHA","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /artifacts/{org}/{flow_name}/commit_sha/{commit_sha}","href":"/api-reference/artifacts/get-artifacts-by-commit-sha"},{"title":"Get artifact by fingerprint","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /artifacts/{org}/{flow_name}/fingerprint/{fingerprint}","href":"/api-reference/artifacts/get-artifact-by-fingerprint"},{"title":"Get artifact audit package","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /artifacts/{org}/{flow_name}/{fingerprint}/audit_package","href":"/api-reference/artifacts/get-artifact-audit-package"},{"title":"Get latest artifact commit","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /artifacts/{org}/{flow_name}/{fingerprint}/latest_commit","href":"/api-reference/artifacts/get-latest-artifact-commit"}]},{"group":"Asserts","pages":[{"title":"Assert artifact","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /asserts/{org}/fingerprint/{fingerprint}","href":"/api-reference/asserts/assert-artifact"}]},{"group":"Attestation","pages":[{"title":"List system attestation types","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /attestations/system-attestation-types","href":"/api-reference/attestation/list-system-attestation-types"},{"title":"List attestations","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /attestations/{org}","href":"/api-reference/attestation/list-attestations"},{"title":"List attestations for criteria","description":"List attestations matching a search criteria within an organization.\n\nThis endpoint returns a dictionary mapping commit SHAs to lists of attestations.\nEach attestation contains metadata about compliance, timing, and type-specific data.\n\n`commit_list` is required; it scopes the search to a specific set of commits.\n`attestation_type`, `attestation_name`, and `flow_name` further narrow results\nwithin that commit set but cannot be used on their own.\n\n## Usage Examples\n\n### Get all attestations for a list of commits\n```\nGET /attestations/my-org/list_attestations_for_criteria?commit_list=ae08fc6a5c963ae8dfaa0c27d8e5de9980d433b6\n```\n\n### Narrow by flow and attestation type\n```\nGET /attestations/my-org/list_attestations_for_criteria?commit_list=ae08fc6a5c963ae8dfaa0c27d8e5de9980d433b6\u0026flow_name=production-flow\u0026attestation_type=snyk\n```\n\n### Narrow by attestation name\n```\nGET /attestations/my-org/list_attestations_for_criteria?commit_list=ae08fc6a5c963ae8dfaa0c27d8e5de9980d433b6\u0026attestation_name=manual-test\n```\n\n### Narrow by custom attestation type\n```\nGET /attestations/my-org/list_attestations_for_criteria?commit_list=ae08fc6a5c963ae8dfaa0c27d8e5de9980d433b6\u0026attestation_type=custom:security-scan\n```","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /attestations/{org}/list_attestations_for_criteria","href":"/api-reference/attestation/list-attestations-for-criteria"},{"title":"Create an attachment upload","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json post /attestations/{org}/uploads","href":"/api-reference/attestation/create-an-attachment-upload"},{"title":"List flow attestations","description":"Get all attestations for a flow for a given time span.","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /attestations/{org}/{flow_name}","href":"/api-reference/attestation/list-flow-attestations"},{"title":"Get artifact attestation","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /attestations/{org}/{flow_name}/artifact/{fingerprint}/{attestation_name}","href":"/api-reference/attestation/get-artifact-attestation"},{"title":"Get trail attestation by ID","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /attestations/{org}/{flow_name}/trail/{trail_name}/attestation/{attestation_id}","href":"/api-reference/attestation/get-trail-attestation-by-id"},{"title":"Get attestation evidence file","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /attestations/{org}/{flow_name}/trail/{trail_name}/attestation/{attestation_id}/evidence","href":"/api-reference/attestation/get-attestation-evidence-file"},{"title":"Attest custom","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json post /attestations/{org}/{flow_name}/trail/{trail_name}/custom","href":"/api-reference/attestation/attest-custom"},{"title":"Attest generic","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json post /attestations/{org}/{flow_name}/trail/{trail_name}/generic","href":"/api-reference/attestation/attest-generic"},{"title":"Attest Jira issue","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json post /attestations/{org}/{flow_name}/trail/{trail_name}/jira","href":"/api-reference/attestation/attest-jira-issue"},{"title":"Attest JUnit test results","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json post /attestations/{org}/{flow_name}/trail/{trail_name}/junit","href":"/api-reference/attestation/attest-junit-test-results"},{"title":"Override attestation","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json post /attestations/{org}/{flow_name}/trail/{trail_name}/override","href":"/api-reference/attestation/override-attestation"},{"title":"Attest pull request","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json post /attestations/{org}/{flow_name}/trail/{trail_name}/pull_request","href":"/api-reference/attestation/attest-pull-request"},{"title":"Attest Snyk scan","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json post /attestations/{org}/{flow_name}/trail/{trail_name}/snyk","href":"/api-reference/attestation/attest-snyk-scan"},{"title":"Attest Sonar scan","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json post /attestations/{org}/{flow_name}/trail/{trail_name}/sonar","href":"/api-reference/attestation/attest-sonar-scan"},{"title":"Attest system","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json post /attestations/{org}/{flow_name}/trail/{trail_name}/system","href":"/api-reference/attestation/attest-system"},{"title":"Get trail attestation","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /attestations/{org}/{flow_name}/trail/{trail_name}/{attestation_name}","href":"/api-reference/attestation/get-trail-attestation"}]},{"group":"Builds","pages":[{"title":"List Builds","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /builds/{org}","href":"/api-reference/builds/list-builds"},{"title":"Build frequency statistics","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /builds/{org}/statistics","href":"/api-reference/builds/build-frequency-statistics"}]},{"group":"Controls","pages":[{"title":"List controls","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /controls/{org}","href":"/api-reference/controls/list-controls"},{"title":"Create a control","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json post /controls/{org}","href":"/api-reference/controls/create-a-control"},{"title":"List distinct tag key/value pairs for an org's controls","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /controls/{org}/tags","href":"/api-reference/controls/list-distinct-tag-keyvalue-pairs-for-an-orgs-controls"},{"title":"Get a control","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /controls/{org}/{identifier}","href":"/api-reference/controls/get-a-control"},{"title":"Update a control","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json put /controls/{org}/{identifier}","href":"/api-reference/controls/update-a-control"},{"title":"Archive a control","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json post /controls/{org}/{identifier}/archive","href":"/api-reference/controls/archive-a-control"},{"title":"Environment coverage for a control","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /controls/{org}/{identifier}/coverage","href":"/api-reference/controls/environment-coverage-for-a-control"},{"title":"List decisions for a control","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /controls/{org}/{identifier}/decisions","href":"/api-reference/controls/list-decisions-for-a-control"},{"title":"Get a single decision for a control","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /controls/{org}/{identifier}/decisions/{decision_id}","href":"/api-reference/controls/get-a-single-decision-for-a-control"},{"title":"Unarchive a control","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json post /controls/{org}/{identifier}/unarchive","href":"/api-reference/controls/unarchive-a-control"},{"title":"List versions of a control","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /controls/{org}/{identifier}/versions","href":"/api-reference/controls/list-versions-of-a-control"},{"title":"Get a specific version of a control","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /controls/{org}/{identifier}/versions/{version_number}","href":"/api-reference/controls/get-a-specific-version-of-a-control"}]},{"group":"Custom Attestation Types","pages":[{"title":"List custom attestation types","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /custom-attestation-types/{org}","href":"/api-reference/custom-attestation-types/list-custom-attestation-types"},{"title":"Create or update custom attestation type","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json post /custom-attestation-types/{org}","href":"/api-reference/custom-attestation-types/create-or-update-custom-attestation-type"},{"title":"Get custom attestation type","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /custom-attestation-types/{org}/{custom_attestation_type_name}","href":"/api-reference/custom-attestation-types/get-custom-attestation-type"},{"title":"Archive custom attestation type","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json put /custom-attestation-types/{org}/{custom_attestation_type_name}/archive","href":"/api-reference/custom-attestation-types/archive-custom-attestation-type"}]},{"group":"Deployments","pages":[{"title":"List Deployments","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /deployments/{org}","href":"/api-reference/deployments/list-deployments"},{"title":"Get Deployment","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /deployments/{org}/{env_name}/{fingerprint}","href":"/api-reference/deployments/get-deployment"}]},{"group":"EnvDiff","pages":[{"title":"Get environment diff","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /env-diff/{org}","href":"/api-reference/envdiff/get-environment-diff"}]},{"group":"Environments","pages":[{"title":"List environments","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /environments/{org}","href":"/api-reference/environments/list-environments"},{"title":"Create or update environment","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json put /environments/{org}","href":"/api-reference/environments/create-or-update-environment"},{"title":"Get environment","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /environments/{org}/{env_name}","href":"/api-reference/environments/get-environment"},{"title":"Update environment","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json patch /environments/{org}/{env_name}","href":"/api-reference/environments/update-environment"},{"title":"Archive environment","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json put /environments/{org}/{env_name}/archive","href":"/api-reference/environments/archive-environment"},{"title":"Get environment audit log","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /environments/{org}/{env_name}/auditlog","href":"/api-reference/environments/get-environment-audit-log"},{"title":"Get deployment frequency","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /environments/{org}/{env_name}/deployment_frequency","href":"/api-reference/environments/get-deployment-frequency"},{"title":"List deployments for an environment","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /environments/{org}/{env_name}/deployments","href":"/api-reference/environments/list-deployments-for-an-environment"},{"title":"List environment events","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /environments/{org}/{env_name}/events","href":"/api-reference/environments/list-environment-events"},{"title":"Add environment to logical environment","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json put /environments/{org}/{env_name}/join","href":"/api-reference/environments/add-environment-to-logical-environment"},{"title":"Attach policy to environment","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json post /environments/{org}/{env_name}/policies","href":"/api-reference/environments/attach-policy-to-environment"},{"title":"Detach policy from environment","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json delete /environments/{org}/{env_name}/policies","href":"/api-reference/environments/detach-policy-from-environment"},{"title":"Rename environment","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json put /environments/{org}/{env_name}/rename","href":"/api-reference/environments/rename-environment"},{"title":"Report ECS environment","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json put /environments/{org}/{env_name}/report/ECS","href":"/api-reference/environments/report-ecs-environment"},{"title":"Report K8S environment","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json put /environments/{org}/{env_name}/report/K8S","href":"/api-reference/environments/report-k8s-environment"},{"title":"Report S3 environment","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json put /environments/{org}/{env_name}/report/S3","href":"/api-reference/environments/report-s3-environment"},{"title":"Report Azure Web and Function Apps environment","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json put /environments/{org}/{env_name}/report/azure-apps","href":"/api-reference/environments/report-azure-web-and-function-apps-environment"},{"title":"Report Cloud Run environment","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json put /environments/{org}/{env_name}/report/cloud-run","href":"/api-reference/environments/report-cloud-run-environment"},{"title":"Report Docker environment","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json put /environments/{org}/{env_name}/report/docker","href":"/api-reference/environments/report-docker-environment"},{"title":"Report Lambda environment","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json put /environments/{org}/{env_name}/report/lambda","href":"/api-reference/environments/report-lambda-environment"},{"title":"Report server environment","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json put /environments/{org}/{env_name}/report/server","href":"/api-reference/environments/report-server-environment"}]},{"group":"Evaluations","pages":[{"title":"List evaluations","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /evaluations/{org}","href":"/api-reference/evaluations/list-evaluations"},{"title":"Create an evaluation","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json post /evaluations/{org}","href":"/api-reference/evaluations/create-an-evaluation"},{"title":"Get an evaluation","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /evaluations/{org}/{evaluation_id}","href":"/api-reference/evaluations/get-an-evaluation"}]},{"group":"Flows","pages":[{"title":"List flows","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /flows/{org}","href":"/api-reference/flows/list-flows"},{"title":"Create or update flow","deprecated":true,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json put /flows/{org}","href":"/api-reference/flows/create-or-update-flow"},{"title":"Create or update flow with template","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json put /flows/{org}/template_file","href":"/api-reference/flows/create-or-update-flow-with-template"},{"title":"Get flow","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /flows/{org}/{flow_name}","href":"/api-reference/flows/get-flow"},{"title":"Archive flow","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json put /flows/{org}/{flow_name}/archive","href":"/api-reference/flows/archive-flow"},{"title":"Rename flow","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json put /flows/{org}/{flow_name}/rename","href":"/api-reference/flows/rename-flow"}]},{"group":"Audit Log","pages":[{"title":"List membership/role change history for an org","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /membership-audit-log/{org}","href":"/api-reference/audit-log/list-membershiprole-change-history-for-an-org"}]},{"group":"Notification Config","pages":[{"title":"Get notification configuration","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /notification-config/{org}/{notification_type}","href":"/api-reference/notification-config/get-notification-configuration"},{"title":"Create or update notification configuration","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json put /notification-config/{org}/{notification_type}","href":"/api-reference/notification-config/create-or-update-notification-configuration"},{"title":"Delete notification configuration","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json delete /notification-config/{org}/{notification_type}","href":"/api-reference/notification-config/delete-notification-configuration"}]},{"group":"Organizations","pages":[{"title":"Get organization","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /organizations/{org}","href":"/api-reference/organizations/get-organization"},{"title":"List environment notifications","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /organizations/{org}/environments_notifications","href":"/api-reference/organizations/list-environment-notifications"},{"title":"Create or update environment notification","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json put /organizations/{org}/environments_notifications","href":"/api-reference/organizations/create-or-update-environment-notification"},{"title":"Get environment notification","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /organizations/{org}/environments_notifications/{notification_number}","href":"/api-reference/organizations/get-environment-notification"},{"title":"Update environment notification","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json put /organizations/{org}/environments_notifications/{notification_number}","href":"/api-reference/organizations/update-environment-notification"},{"title":"Delete environment notification","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json delete /organizations/{org}/environments_notifications/{notification_number}","href":"/api-reference/organizations/delete-environment-notification"}]},{"group":"Policies","pages":[{"title":"List policies","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /policies/{org}","href":"/api-reference/policies/list-policies"},{"title":"Create or update policy","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json put /policies/{org}","href":"/api-reference/policies/create-or-update-policy"},{"title":"Get policy","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /policies/{org}/{policy_name}","href":"/api-reference/policies/get-policy"}]},{"group":"Rego Policies","pages":[{"title":"List rego policies","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /rego-policies/{org}","href":"/api-reference/rego-policies/list-rego-policies"},{"title":"Get a rego policy","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /rego-policies/{org}/{identifier}","href":"/api-reference/rego-policies/get-a-rego-policy"},{"title":"Publish a version of a rego policy","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json put /rego-policies/{org}/{identifier}","href":"/api-reference/rego-policies/publish-a-version-of-a-rego-policy"},{"title":"List versions of a rego policy","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /rego-policies/{org}/{identifier}/versions","href":"/api-reference/rego-policies/list-versions-of-a-rego-policy"},{"title":"Get a version of a rego policy","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /rego-policies/{org}/{identifier}/versions/{version_number}","href":"/api-reference/rego-policies/get-a-version-of-a-rego-policy"},{"title":"Download the files of a version of a rego policy","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /rego-policies/{org}/{identifier}/versions/{version_number}/bundle","href":"/api-reference/rego-policies/download-the-files-of-a-version-of-a-rego-policy"},{"title":"List the files of a version of a rego policy","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /rego-policies/{org}/{identifier}/versions/{version_number}/files","href":"/api-reference/rego-policies/list-the-files-of-a-version-of-a-rego-policy"},{"title":"Get the source of a file in a version of a rego policy","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /rego-policies/{org}/{identifier}/versions/{version_number}/files/{file_path}","href":"/api-reference/rego-policies/get-the-source-of-a-file-in-a-version-of-a-rego-policy"}]},{"group":"Repos","pages":[{"title":"List repos","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /repos/{org}","href":"/api-reference/repos/list-repos"},{"title":"List repo filter options","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /repos/{org}/filter-options","href":"/api-reference/repos/list-repo-filter-options"},{"title":"Get live artifacts for a repo","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /repos/{org}/live-artifacts/{repo_name}","href":"/api-reference/repos/get-live-artifacts-for-a-repo"},{"title":"List repo tag choices","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /repos/{org}/tags","href":"/api-reference/repos/list-repo-tag-choices"},{"title":"Get a repo","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /repos/{org}/{repo_name}","href":"/api-reference/repos/get-a-repo"},{"title":"Deployment frequency and lead-time statistics for a repo","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /repos/{org}/{repo}/deployment-statistics","href":"/api-reference/repos/deployment-frequency-and-lead-time-statistics-for-a-repo"},{"title":"List deployments for a repo","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /repos/{org}/{repo}/deployments","href":"/api-reference/repos/list-deployments-for-a-repo"}]},{"group":"Schemas","pages":[{"title":"Environment policy schema v1","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /schemas/environment-policy/v1","href":"/api-reference/schemas/environment-policy-schema-v1"},{"title":"Flow template schema v1","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /schemas/flow-template/v1","href":"/api-reference/schemas/flow-template-schema-v1"}]},{"group":"Search","pages":[{"title":"Search commits by SHA prefix","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /search/{org}/commit/{sha_prefix}","href":"/api-reference/search/search-commits-by-sha-prefix"},{"title":"List trails for a commit","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /search/{org}/commit/{sha}/trails","href":"/api-reference/search/list-trails-for-a-commit"},{"title":"Search artifacts by SHA or fingerprint","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /search/{org}/sha/{search_value}","href":"/api-reference/search/search-artifacts-by-sha-or-fingerprint"}]},{"group":"Service Accounts","pages":[{"title":"List service accounts in an organization","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /service-accounts/{org}","href":"/api-reference/service-accounts/list-service-accounts-in-an-organization"},{"title":"Create a service account","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json post /service-accounts/{org}","href":"/api-reference/service-accounts/create-a-service-account"},{"title":"Get a service account","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /service-accounts/{org}/{name}","href":"/api-reference/service-accounts/get-a-service-account"},{"title":"Delete a service account","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json delete /service-accounts/{org}/{name}","href":"/api-reference/service-accounts/delete-a-service-account"},{"title":"Update a service account","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json patch /service-accounts/{org}/{name}","href":"/api-reference/service-accounts/update-a-service-account"},{"title":"List API keys for a service account","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /service-accounts/{org}/{name}/api-keys","href":"/api-reference/service-accounts/list-api-keys-for-a-service-account"},{"title":"Create an API key for a service account","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json post /service-accounts/{org}/{name}/api-keys","href":"/api-reference/service-accounts/create-an-api-key-for-a-service-account"},{"title":"Get an API key for a service account","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /service-accounts/{org}/{name}/api-keys/{key_id}","href":"/api-reference/service-accounts/get-an-api-key-for-a-service-account"},{"title":"Revoke an API key for a service account","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json delete /service-accounts/{org}/{name}/api-keys/{key_id}","href":"/api-reference/service-accounts/revoke-an-api-key-for-a-service-account"},{"title":"Rotate an API key for a service account","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json post /service-accounts/{org}/{name}/api-keys/{key_id}/rotate","href":"/api-reference/service-accounts/rotate-an-api-key-for-a-service-account"}]},{"group":"Snapshots","pages":[{"title":"List snapshots","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /snapshots/{org}/{env_name}","href":"/api-reference/snapshots/list-snapshots"},{"title":"Get snapshot","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /snapshots/{org}/{env_name}/{snapshot_expression}","href":"/api-reference/snapshots/get-snapshot"}]},{"group":"Tags","pages":[{"title":"Update tags","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json patch /tags/{org}/{resource_type}/{resource_id}","href":"/api-reference/tags/update-tags"}]},{"group":"Trails","pages":[{"title":"List trails for organization","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /trails/{org}","href":"/api-reference/trails/list-trails-for-organization"},{"title":"List trails","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /trails/{org}/{flow_name}","href":"/api-reference/trails/list-trails"},{"title":"Begin trail","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json put /trails/{org}/{flow_name}","href":"/api-reference/trails/begin-trail"},{"title":"Get trail","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /trails/{org}/{flow_name}/{trail_name}","href":"/api-reference/trails/get-trail"},{"title":"Download trail audit package","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /trails/{org}/{flow_name}/{trail_name}/audit_package","href":"/api-reference/trails/download-trail-audit-package"},{"title":"Download trail audit PDF","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /trails/{org}/{flow_name}/{trail_name}/audit_pdf","href":"/api-reference/trails/download-trail-audit-pdf"},{"title":"List trail events","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /trails/{org}/{flow_name}/{trail_name}/events","href":"/api-reference/trails/list-trail-events"},{"title":"Download trail events PDF","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /trails/{org}/{flow_name}/{trail_name}/events_pdf","href":"/api-reference/trails/download-trail-events-pdf"},{"title":"List trail moments","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /trails/{org}/{flow_name}/{trail_name}/moments","href":"/api-reference/trails/list-trail-moments"},{"title":"Get trail moment","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /trails/{org}/{flow_name}/{trail_name}/moments/{moment_expression}","href":"/api-reference/trails/get-trail-moment"},{"title":"Download trail status PDF","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /trails/{org}/{flow_name}/{trail_name}/status_pdf","href":"/api-reference/trails/download-trail-status-pdf"}]},{"group":"User","pages":[{"title":"List personal API keys","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /user/api-keys","href":"/api-reference/user/list-personal-api-keys"},{"title":"Create a personal API key","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json post /user/api-keys","href":"/api-reference/user/create-a-personal-api-key"},{"title":"Get a personal API key","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /user/api-keys/{key_id}","href":"/api-reference/user/get-a-personal-api-key"},{"title":"Revoke a personal API key","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json delete /user/api-keys/{key_id}","href":"/api-reference/user/revoke-a-personal-api-key"},{"title":"Rotate a personal API key","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json post /user/api-keys/{key_id}/rotate","href":"/api-reference/user/rotate-a-personal-api-key"},{"title":"Get default organization","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json get /user/default-org","href":"/api-reference/user/get-default-organization"},{"title":"Set default organization","deprecated":null,"version":null,"openapi":"https://app.kosli.com/api/v2/openapi.json put /user/{org}","href":"/api-reference/user/set-default-organization"}]}]},{"item":"GitHub Action Reference","icon":"github","pages":[{"title":"GitHub Action Reference","href":"/github-action-reference/setup_cli_action"}]},{"item":"Terraform Reference","icon":"cubes","pages":[{"title":"Terraform Reference","href":"/terraform-reference"}]},{"item":"Helm Reference","icon":"layer-group","pages":[{"title":"Helm Reference","href":"/helm/k8s_reporter/overview"}]},{"item":"Template Reference","icon":"file-code","pages":[{"title":"Template Reference","href":"/template-reference/flow_template"}]},{"item":"Policy Reference","icon":"scroll","pages":[{"title":"Policy Reference","href":"/policy-reference/environment_policy"}]}]},{"tab":"Changelog","icon":"clock","pages":[{"title":"Changelog","href":"/changelog"}]}]},"basePath":"","title":"Create an attachment upload - Kosli Documentation","buildId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","deploymentId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DCDCdBVX.js","utils-ME8dDnLe.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-0e84ACsd.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-wgRBj-ia.js","snippetPresets-C11Sgb-o.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-C0lapOpP.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-ZeRQV8fF.js","shallow-BupWh095.js","getApiPlaygroundDisplay-BnYQO2Ss.js","CodeSnippet-RKKOc8c_.js","CodeSnippets-Drf_m8wS.js","Page-Bevw23-4.js","getPastedJson-u6QiPzNZ.js","icon-Bb-CBSxO.js","MethodPill-F7l5AI7V.js","DuplicateIcon-IiAXkdSg.js","createIcon-FliI8EBc.js","DynamicMarkdown-B62XqCSI.js","SectionHeading-Dj31pT03.js","axios-vUo_bRtp.js","Markdown-BOgQCTwD.js","clsx-BIWXJmsZ.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DKZWslLH.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-UDqbR6xh.js"]}