Upload multiple attachment files and receive attachment references for a later resource create or upsert request. Include type=attachment, or per-file type:N=attachment fields, so BuildPass can route each file to the correct storage family. For example, use the returned references to bulk upsert photos.
Requires a valid authenticated request for the builder. No resource-specific scope is required for upload.Uploads multiple attachment files into BuildPass-managed attachment storage and returns attachment references.Include type=attachment in the multipart body to apply the same type to all files, or type:0=attachment, type:1=attachment, and so on to set a type per file. The type tells BuildPass which storage family to use; attachment is the only externally supported upload type for now.For example, you can use each returned { key, regionId, type } to bulk upsert photos by passing it as photos[].imageAttachment.
{"docsConfig":{"$schema":"https://mintlify.com/docs.json","theme":"mint","name":"BuildPass API","colors":{"primary":"#68d07f","light":"#68d07f","dark":"#68d07f"},"favicon":"https://mintcdn.com/buildpass/Xsjs4NKNLPoM6N4X/favicon.svg?fit=max\u0026auto=format\u0026n=Xsjs4NKNLPoM6N4X\u0026q=85\u0026s=277fce044fd6d8a12d6a617a5bf8a5a2","logo":{"light":"https://mintcdn.com/buildpass/Cb9JmQTwpkItOpus/logo/light.svg?fit=max\u0026auto=format\u0026n=Cb9JmQTwpkItOpus\u0026q=85\u0026s=318747a7e7df24c220865cf82aa2bb95","dark":"https://mintcdn.com/buildpass/Cb9JmQTwpkItOpus/logo/dark.svg?fit=max\u0026auto=format\u0026n=Cb9JmQTwpkItOpus\u0026q=85\u0026s=9625f6216d72a5151785bedf260ae509"},"navbar":{"links":[{"label":"Support","href":"mailto:support@buildpass.com.au"}],"primary":{"type":"button","label":"Log in","href":"https://app.buildpass.com.au"}},"footer":{"socials":{}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"buildpass","hasAudioNarration":false,"actualSubdomain":"buildpass","customDomains":["developer.buildpass.global"],"gitSource":{"type":"github","owner":"buildpass-au","repo":"external-api","deployBranch":"main","contentDirectory":"docs","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ac59da54e1548e7873f3388","collectionId":"cbefca5f-c040-48fb-bace-4a48dcbd3152","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ac59da54e1548e7873f3388"},"entitlements":{},"buildId":"6ac59da54e1548e7873f3388","clientVersion":"0.0.3966","searchFilterCounts":[{"language":"default","tag":"API Reference","count":49},{"language":"default","tag":"Photos","count":12},{"language":"default","tag":"Documentation","count":9},{"language":"default","tag":"Meetings","count":8},{"language":"default","tag":"Features","count":7},{"language":"default","tag":"Subcontractors","count":4},{"language":"default","tag":"Timesheets","count":4},{"language":"default","tag":"Attachments","count":3},{"language":"default","tag":"Inductions","count":3},{"language":"default","tag":"Defects","count":2}]},"assistantConfig":{},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","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":"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}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"a.group[href=\"https://app.buildpass.com.au\"]>div>svg{display:none}a.group[href=\"https://app.buildpass.com.au\"]>div{margin-right:0}"}],"page":{"pagePath":"api-reference/builders/attachments/bulk-upload","slug":"/api-reference/builders/attachments/bulk-upload","pageMetadata":{"title":"Bulk upload attachments","openapi":"POST /builders/{builderId}/attachments/bulk-upload","description":"Upload multiple attachment files and receive attachment references for a later resource create or upsert request. Include type=attachment, or per-file type:N=attachment fields, so BuildPass can route each file to the correct storage family. For example, use the returned references to bulk upsert photos.","href":"/api-reference/builders/attachments/bulk-upload"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Upload multiple attachment files and receive attachment references for a later resource create or upsert request. Include type=attachment, or per-file type:N=attachment fields, so BuildPass can route each file to the correct storage family. For example, use the returned references to bulk upsert photos.\"\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,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,p:`p`,..._provideComponents(),...props.components};return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Requires a valid authenticated request for the builder. No resource-specific scope is required for upload.`}),`\n`,_jsx(_components.p,{children:`Uploads multiple attachment files into BuildPass-managed attachment storage and returns attachment references.`}),`\n`,_jsxs(_components.p,{children:[`Include `,_jsx(_components.code,{children:`type=attachment`}),` in the multipart body to apply the same type to all files, or `,_jsx(_components.code,{children:`type:0=attachment`}),`, `,_jsx(_components.code,{children:`type:1=attachment`}),`, and so on to set a type per file. The `,_jsx(_components.code,{children:`type`}),` tells BuildPass which storage family to use; `,_jsx(_components.code,{children:`attachment`}),` is the only externally supported upload type for now.`]}),`\n`,_jsxs(_components.p,{children:[`For example, you can use each returned `,_jsx(_components.code,{children:`{ key, regionId, type }`}),` to bulk upsert photos by passing it as `,_jsx(_components.code,{children:`photos[].imageAttachment`}),`.`]})]})}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":"Bulk upload attachments","openapi":"POST /builders/{builderId}/attachments/bulk-upload","description":"Upload multiple attachment files and receive attachment references for a later resource create or upsert request. Include type=attachment, or per-file type:N=attachment fields, so BuildPass can route each file to the correct storage family. For example, use the returned references to bulk upsert photos.","href":"/api-reference/builders/attachments/bulk-upload"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/buildpass/a6a67761c3b7e458/script.js"],"openApiReferenceData":{"operation":{"summary":"Bulk upload attachments","description":"Upload multiple attachment files and receive attachment references for a later resource create or upsert request. Include type=attachment, or per-file type:N=attachment fields, so BuildPass can route each file to the correct storage family. For example, use the returned references to bulk upsert photos.","tags":["Attachments"],"parameters":["13438f2a-5f92-4f6b-b69d-0ca64959888b"],"requestBody":"f2f6c347-e457-4e9d-b29c-410d0eeafd57","responses":{"201":"1437227e-ddd9-4d9a-b109-480a7195c70d"},"security":["6867a202-b239-4239-ac4b-bd14d1017b0d"],"method":"post","type":"path","servers":["5387ed31-b1f0-4d15-a199-19356eb085b4"],"path":"/builders/{builderId}/attachments/bulk-upload","baseUrlOptions":["https://api.buildpass.global"],"title":"Bulk upload attachments","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"13438f2a-5f92-4f6b-b69d-0ca64959888b":{"name":"builderId","in":"path","required":true,"schema":{"type":"string","isRequired":true,"uniqueKey":"","typeLabel":"string"}}},"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["attachment"],"description":"Upload type to apply to every file.","isRequired":true,"uniqueKey":"type","typeLabel":"enum\u003cstring>"},"file:0":{"type":"string","format":"binary","uniqueKey":"file:0","typeLabel":"file"},"type:0":{"type":"string","enum":["attachment"],"description":"Optional upload type for file:0.","uniqueKey":"type:0","typeLabel":"enum\u003cstring>"},"file:1":{"type":"string","format":"binary","uniqueKey":"file:1","typeLabel":"file"},"type:1":{"type":"string","enum":["attachment"],"description":"Optional upload type for file:1.","uniqueKey":"type:1","typeLabel":"enum\u003cstring>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"type":"attachment","file:0":"\u003cstring>","type:0":"attachment","file:1":"\u003cstring>","type:1":"attachment"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"1437227e-ddd9-4d9a-b109-480a7195c70d":{"description":"Attachments uploaded","content":{"application/json":{"schema":{"type":"object","properties":{"uploads":{"type":"array","items":{"type":"object","required":["key","type"],"properties":{"key":{"type":"string","example":"external-uploads/ckbuilder123456789012345678/photo.jpg","isRequired":true,"uniqueKey":"uploads.items.[INDEX].key","typeLabel":"string"},"type":{"type":"string","enum":["attachment"],"isRequired":true,"uniqueKey":"uploads.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"regionId":{"oneOf":[{"type":"string","example":"au1","uniqueKey":"uploads.items.[INDEX].regionId.oneOf.0","typeLabel":"string"},{"type":"null","example":"au1","uniqueKey":"uploads.items.[INDEX].regionId.oneOf.1","typeLabel":"null"}],"uniqueKey":"uploads.items.[INDEX].regionId","typeLabel":"string | null"},"imageUrl":{"type":"string","format":"uri","uniqueKey":"uploads.items.[INDEX].imageUrl","typeLabel":"string\u003curi>"},"fileName":{"type":"string","uniqueKey":"uploads.items.[INDEX].fileName","typeLabel":"string"},"contentType":{"type":"string","uniqueKey":"uploads.items.[INDEX].contentType","typeLabel":"string"},"fieldName":{"type":"string","description":"Present on bulk upload responses.","uniqueKey":"uploads.items.[INDEX].fieldName","typeLabel":"string"}},"uniqueKey":"uploads.items.[INDEX]","typeLabel":"object"},"uniqueKey":"uploads","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"uploads":[{"key":"external-uploads/ckbuilder123456789012345678/photo.jpg","type":"attachment","regionId":"au1","imageUrl":"\u003cstring>","fileName":"\u003cstring>","contentType":"\u003cstring>","fieldName":"\u003cstring>"}]}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"6867a202-b239-4239-ac4b-bd14d1017b0d":{"OAuth2":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"https://api.buildpass.global/oauth/token","scopes":{"read:subcontractors":"Read subcontractors","write:subcontractors":"Write subcontractors","read:prequalifications":"Read prequalifications","write:prequalifications":"Write prequalifications","read:insurances":"Read insurances","write:insurances":"Write insurances","read:contacts":"Read contacts","read:swms":"Read SWMS","read:timesheets":"Read timesheets","read:inductions":"Read inductions","read:meetings":"Read meetings","write:meetings":"Write meetings","read:defects":"Read defects","read:photos":"Read photos and photo folders","write:photos":"Create, update, delete, and sync photos and photo folders","read:site_access":"Read worker-project site access grants (explicitly approved pilot)","write:sign_on_events":"Record worker sign-on and sign-off events (explicitly approved pilot)"}}},"scopes":[],"schemeName":"OAuth2"}}},"servers":{"5387ed31-b1f0-4d15-a199-19356eb085b4":{"url":"https://api.buildpass.global","description":"Production server"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"https://api.buildpass.global/oauth/token","scopes":{"read:subcontractors":"Read subcontractors","write:subcontractors":"Write subcontractors","read:prequalifications":"Read prequalifications","write:prequalifications":"Write prequalifications","read:insurances":"Read insurances","write:insurances":"Write insurances","read:contacts":"Read contacts","read:swms":"Read SWMS","read:timesheets":"Read timesheets","read:inductions":"Read inductions","read:meetings":"Read meetings","write:meetings":"Write meetings","read:defects":"Read defects","read:photos":"Read photos and photo folders","write:photos":"Create, update, delete, and sync photos and photo folders","read:site_access":"Read worker-project site access grants (explicitly approved pilot)","write:sign_on_events":"Record worker sign-on and sign-off events (explicitly approved pilot)"}}},"scopes":[],"schemeName":"OAuth2"},"schema":{"title":"OAuth2 Auth","type":"string","isRequired":true,"description":"The access token received from the authorization server in the OAuth 2.0 flow.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"OAuth2","name":"Authorization"}],"title":"OAuth2"}]},"originalFileLocation":"api-reference/openapi.json"},"subdomain":"buildpass","siteName":"BuildPass API","title":"Bulk upload attachments - BuildPass API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-06-11T22:18:33.831Z","originalFileLocation":"api-reference/builders/attachments/bulk-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=\"Upload multiple attachment files and receive attachment references for a later resource create or upsert request. Include type=attachment, or per-file type:N=attachment fields, so BuildPass can route each file to the correct storage family. For example, use the returned references to bulk upsert photos.\">\u003cmeta data-mint-head name=\"application-name\" content=\"BuildPass API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/buildpass/aZNfnfSSClMexl6a/_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/buildpass/aZNfnfSSClMexl6a/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/buildpass/aZNfnfSSClMexl6a/_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/buildpass/aZNfnfSSClMexl6a/_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/buildpass/aZNfnfSSClMexl6a/_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/buildpass/aZNfnfSSClMexl6a/_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/buildpass/aZNfnfSSClMexl6a/_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/buildpass/aZNfnfSSClMexl6a/_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/buildpass/aZNfnfSSClMexl6a/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Bulk upload attachments - BuildPass API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Upload multiple attachment files and receive attachment references for a later resource create or upsert request. Include type=attachment, or per-file type:N=attachment fields, so BuildPass can route each file to the correct storage family. For example, use the returned references to bulk upsert photos.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"BuildPass API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developer.buildpass.global/api-reference/builders/attachments/bulk-upload\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://buildpass.mintlify.app/_mintlify/api/og/v2?division=Attachments\u0026amp;title=Bulk+upload+attachments\u0026amp;description=Upload+multiple+attachment+files+and+receive+attachment+references+for+a+later+resource+create+or+upsert+request.+Include+type%3Dattachment%2C+or+per-file+type%3AN%3Dat\u0026amp;theme=0fa34181e7ac4b84f888ffc0\u0026amp;signature=5f356d8124666daebcb528979f50676ba3e471d7a015713c320863830e99a2ce\">\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=\"Bulk upload attachments - BuildPass API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Upload multiple attachment files and receive attachment references for a later resource create or upsert request. Include type=attachment, or per-file type:N=attachment fields, so BuildPass can route each file to the correct storage family. For example, use the returned references to bulk upsert photos.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://buildpass.mintlify.app/_mintlify/api/og/v2?division=Attachments\u0026amp;title=Bulk+upload+attachments\u0026amp;description=Upload+multiple+attachment+files+and+receive+attachment+references+for+a+later+resource+create+or+upsert+request.+Include+type%3Dattachment%2C+or+per-file+type%3AN%3Dat\u0026amp;theme=0fa34181e7ac4b84f888ffc0\u0026amp;signature=5f356d8124666daebcb528979f50676ba3e471d7a015713c320863830e99a2ce\">\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/buildpass/aZNfnfSSClMexl6a/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"BuildPass API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#68d07f\">\u003clink data-mint-head rel=\"canonical\" href=\"https://developer.buildpass.global/api-reference/builders/attachments/bulk-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/builders/attachments/bulk-upload.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://developer.buildpass.global/#organization\",\"name\":\"BuildPass API\",\"url\":\"https://developer.buildpass.global\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/buildpass/Cb9JmQTwpkItOpus/logo/light.svg?fit=max\u0026auto=format\u0026n=Cb9JmQTwpkItOpus\u0026q=85\u0026s=318747a7e7df24c220865cf82aa2bb95\"}},{\"@type\":\"WebSite\",\"@id\":\"https://developer.buildpass.global#website\",\"name\":\"BuildPass API\",\"url\":\"https://developer.buildpass.global\",\"publisher\":{\"@id\":\"https://developer.buildpass.global/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://developer.buildpass.global/api-reference/builders/attachments/bulk-upload#webpage\",\"url\":\"https://developer.buildpass.global/api-reference/builders/attachments/bulk-upload\",\"name\":\"Bulk upload attachments\",\"description\":\"Upload multiple attachment files and receive attachment references for a later resource create or upsert request. Include type=attachment, or per-file type:N=attachment fields, so BuildPass can route each file to the correct storage family. For example, use the returned references to bulk upsert photos.\",\"dateModified\":\"2026-06-11T22:18:33.831Z\",\"isPartOf\":{\"@id\":\"https://developer.buildpass.global#website\"},\"breadcrumb\":{\"@id\":\"https://developer.buildpass.global/api-reference/builders/attachments/bulk-upload#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developer.buildpass.global/api-reference/builders/attachments/bulk-upload#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Attachments\",\"item\":\"https://developer.buildpass.global/api-reference/builders/attachments/presign\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Bulk upload attachments\",\"item\":\"https://developer.buildpass.global/api-reference/builders/attachments/bulk-upload\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://developer.buildpass.global/api-reference/builders/attachments/bulk-upload#apireference\",\"headline\":\"Bulk upload attachments\",\"name\":\"Bulk upload attachments\",\"description\":\"Upload multiple attachment files and receive attachment references for a later resource create or upsert request. Include type=attachment, or per-file type:N=attachment fields, so BuildPass can route each file to the correct storage family. For example, use the returned references to bulk upsert photos.\",\"url\":\"https://developer.buildpass.global/api-reference/builders/attachments/bulk-upload\",\"mainEntityOfPage\":{\"@id\":\"https://developer.buildpass.global/api-reference/builders/attachments/bulk-upload#webpage\"},\"dateModified\":\"2026-06-11T22:18:33.831Z\",\"publisher\":{\"@id\":\"https://developer.buildpass.global/#organization\"},\"isPartOf\":{\"@id\":\"https://developer.buildpass.global#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"BuildPass API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"BuildPass API","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/introduction"}]},{"tab":"API Reference","groups":[{"group":"Authentication","pages":[{"title":"Authentication token","openapi":"POST /oauth/token","href":"/api-reference/authentication/post"}]},{"group":"Builders","pages":[{"title":"List builders","openapi":"GET /builders","href":"/api-reference/builders/list"},{"title":"Get builder","openapi":"GET /builders/{id}","href":"/api-reference/builders/get"}]},{"group":"Projects","pages":[{"title":"List projects","openapi":"GET /builders/{id}/projects","href":"/api-reference/builders/projects/list"},{"title":"Get project","openapi":"GET /builders/{id}/projects/{projectId}","href":"/api-reference/builders/projects/get"}]},{"group":"Site access (planned)","pages":[{"title":"List site access (limited pilot)","openapi":"GET /builders/{builderId}/projects/{projectId}/site-access","href":"/api-reference/builders/projects/site-access/list"},{"title":"Record gate attendance (limited pilot)","openapi":"POST /builders/{builderId}/projects/{projectId}/sign-on-events","href":"/api-reference/builders/projects/site-access/events"}]},{"group":"Meetings","pages":[{"title":"List meetings","openapi":"GET /builders/{builderId}/meetings","href":"/api-reference/builders/meetings/list"},{"title":"Create meeting","openapi":"POST /builders/{builderId}/meetings","href":"/api-reference/builders/meetings/create"},{"title":"Update meeting","openapi":"PATCH /builders/{builderId}/meetings/{meetingId}","href":"/api-reference/builders/meetings/update"},{"title":"Delete meeting","openapi":"DELETE /builders/{builderId}/meetings/{meetingId}","href":"/api-reference/builders/meetings/delete"},{"title":"Start meeting","openapi":"POST /builders/{builderId}/meetings/{meetingId}/start","href":"/api-reference/builders/meetings/start"},{"title":"End meeting","openapi":"POST /builders/{builderId}/meetings/{meetingId}/end","href":"/api-reference/builders/meetings/end"},{"title":"List meeting notes","openapi":"GET /builders/{builderId}/meetings/{meetingId}/notes","href":"/api-reference/builders/meetings/notes/list"},{"title":"Create or update meeting note","openapi":"POST /builders/{builderId}/meetings/{meetingId}/notes","href":"/api-reference/builders/meetings/notes/post"}]},{"group":"Defects","pages":[{"title":"List defects","openapi":"GET /builders/{builderId}/defects","href":"/api-reference/builders/defects/list"},{"title":"Get defect","openapi":"GET /builders/{builderId}/defects/{defectId}","href":"/api-reference/builders/defects/get"}]},{"group":"Attachments","pages":[{"title":"Create an attachment upload URL","openapi":"POST /builders/{builderId}/attachments/presign","href":"/api-reference/builders/attachments/presign"},{"title":"Upload attachment","openapi":"POST /builders/{builderId}/attachments/upload","description":"Upload one attachment file and receive an attachment reference for a later resource create request. Include type=attachment so BuildPass can route the file to the correct storage family. For example, use the returned reference to create a photo.","href":"/api-reference/builders/attachments/upload"},{"title":"Bulk upload attachments","openapi":"POST /builders/{builderId}/attachments/bulk-upload","href":"/api-reference/builders/attachments/bulk-upload"}]},{"group":"Photos","pages":[{"title":"List photos","openapi":"GET /builders/{builderId}/photos","description":"List photos for a builder. The source defaults to GALLERY and can be repeated to include photos shown in other BuildPass UI areas. Returns signed image URLs. Results are paginated with a default and maximum limit of 25.","href":"/api-reference/builders/photos/list"},{"title":"Create photo","openapi":"POST /builders/{builderId}/photos","href":"/api-reference/builders/photos/create"},{"title":"Get photo","openapi":"GET /builders/{builderId}/photos/{photoId}","href":"/api-reference/builders/photos/get"},{"title":"Update photo","openapi":"PATCH /builders/{builderId}/photos/{photoId}","href":"/api-reference/builders/photos/update"},{"title":"Delete photo","openapi":"DELETE /builders/{builderId}/photos/{photoId}","href":"/api-reference/builders/photos/delete"},{"title":"List photo folders","openapi":"GET /builders/{builderId}/photo-folders","href":"/api-reference/builders/photo-folders/list"},{"title":"Create photo folder","openapi":"POST /builders/{builderId}/photo-folders","href":"/api-reference/builders/photo-folders/create"},{"title":"Get photo folder","openapi":"GET /builders/{builderId}/photo-folders/{folderId}","href":"/api-reference/builders/photo-folders/get"},{"title":"Update photo folder","openapi":"PATCH /builders/{builderId}/photo-folders/{folderId}","href":"/api-reference/builders/photo-folders/update"},{"title":"Delete photo folder","openapi":"DELETE /builders/{builderId}/photo-folders/{folderId}","href":"/api-reference/builders/photo-folders/delete"},{"title":"Bulk upsert photos","openapi":"POST /builders/{builderId}/photo-gallery/bulk-upsert","href":"/api-reference/builders/photo-gallery/bulk-upsert"},{"title":"Sync a photo report","openapi":"POST /builders/{builderId}/photo-reports/sync","href":"/api-reference/builders/photo-reports/sync"}]},{"group":"Subcontractors","icon":{"name":"users","style":"light"},"pages":[{"title":"List subcontractors","openapi":"GET /subcontractors","href":"/api-reference/subcontractors/list"},{"title":"Get subcontractor","openapi":"GET /subcontractors/{id}","href":"/api-reference/subcontractors/get"},{"title":"List subcontractor projects","openapi":"GET /subcontractors/{id}/projects","href":"/api-reference/subcontractors/projects/list"},{"title":"List subcontractor contacts","openapi":"GET /subcontractors/{id}/contacts","href":"/api-reference/subcontractors/contacts/list"}]},{"group":"Insurances","pages":[{"title":"List insurance documents","openapi":"GET /subcontractors/{id}/insurances","href":"/api-reference/subcontractors/insurances/list"},{"title":"Get insurance document","openapi":"GET /subcontractors/{id}/insurances/{insuranceId}","href":"/api-reference/subcontractors/insurances/get"}]},{"group":"Prequalifications","pages":[{"title":"List prequalifications","openapi":"GET /subcontractors/{id}/prequalifications","href":"/api-reference/subcontractors/prequalifications/list"},{"title":"Get prequalification","openapi":"GET /subcontractors/{id}/prequalifications/{prequalId}","href":"/api-reference/subcontractors/prequalifications/get"}]},{"group":"SWMS","pages":[{"title":"List SWMS documents","openapi":"GET /subcontractors/{id}/swms","href":"/api-reference/subcontractors/swms/list"},{"title":"Get SWMS document","openapi":"GET /subcontractors/{id}/swms/{swmsDocId}","href":"/api-reference/subcontractors/swms/get"}]},{"group":"Inductions","pages":[{"title":"List inductions for subcontractor","openapi":"GET /subcontractors/{id}/inductions","href":"/api-reference/subcontractors/inductions/list"},{"title":"List inductions for project","openapi":"GET /builders/{builderId}/projects/{projectId}/inductions","href":"/api-reference/builders/projects/inductions/list"},{"title":"Get induction","openapi":"GET /builders/{builderId}/projects/{projectId}/inductions/{identifierOrId}","href":"/api-reference/builders/projects/inductions/get"}]},{"group":"Timesheets","pages":[{"title":"List timesheets","openapi":"GET /timesheets","href":"/api-reference/timesheets/list"},{"title":"Get timesheet","openapi":"GET /timesheets/{timesheetId}","href":"/api-reference/timesheets/get"},{"title":"Get time types","openapi":"GET /timesheets/time-types","href":"/api-reference/timesheets/timeTypes"},{"title":"Get cost codes","openapi":"GET /timesheets/cost-codes","href":"/api-reference/timesheets/costCodes"}]}]}]},"title":"Bulk upload attachments - BuildPass API","buildId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","deploymentId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DKJwRUt2.js","utils-CWD_VS3u.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-oFjciODD.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-C76WsxC3.js","snippetPresets-DvPMxpX_.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CuNQfndH.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BVFpVUoF.js","shallow-t59Jg5Kr.js","getApiPlaygroundDisplay-C_JZ4amX.js","CodeSnippet-CLRDnx_h.js","CodeSnippets-C2myU4kc.js","Page-7TwLLapg.js","getPastedJson-B-JaVXw7.js","icon-BA-iDhH3.js","MethodPill-D4qZABFp.js","DuplicateIcon-THIDKO1O.js","createIcon-CYYJwgFd.js","DynamicMarkdown-UGQuxDKp.js","SectionHeading-jYELb23h.js","axios-vUo_bRtp.js","Markdown-DKsLa3wy.js","clsx-CefdjKz2.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BaREnp3o.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-sgx_0XzF.js"]}