Verify Upload
Verify that all parts of an upload have been successfully uploaded and complete the build creation process
The upload verification endpoint is the final step in the build upload process, for both single part and multipart uploads. It verifies that all parts have been successfully uploaded and finalizes the build record in Buildstash. Requires builds:create scope.
/upload/verifyAuthorization
bearerAuth API key. Bearer authentication header of the form Bearer <token>, where <token> is your Workspace or Application API key.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
curl -X POST "https://example.comupload/verify" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d @- <<'EOF'{ "pending_upload_id": "550e8400-e29b-41d4-a716-446655440000"}EOF{ "message": "Upload verified successfully.", "pending_processing": false, "build_id": "xYz9876", "build_info_url": "https://acme.buildstash.com/applications/aBc1234/builds/xYz9876", "download_url": "https://acme.buildstash.com/builds/xYz9876/download", "build": { "id": "xYz9876", "build_structure": "file", "version": "1.0.1", "version_short": "1.0.1", "version_semantic_major": 1, "version_semantic_minor": 0, "version_semantic_patch": 1, "version_semantic_extra": null, "version_semantic_meta": null, "build_number": "398", "platform": { "identifier": "windows", "name": "Windows", "short_name": "Windows", "upload_instruction": "Upload a .exe, .msi, or .zip installer." }, "stream": { "id": "stR4567", "name": "nightlies", "description": "Nightly development builds", "retention_days": 30, "created_at": "2025-06-10T09:15:00.000000Z", "updated_at": "2025-06-15T14:30:00.000000Z" }, "labels": [ { "id": "lbl1234", "name": "Production", "description": "Production-ready builds", "color": "#22c55e", "level": "application", "created_at": "2025-06-10T09:15:00.000000Z", "updated_at": "2025-06-15T14:30:00.000000Z" } ], "architectures": [ { "identifier": "x64", "name": "x64", "description": "64-bit x86 (AMD64 / Intel 64)" }, { "identifier": "arm64v8", "name": "ARM64v8", "description": "ARMv8-A 64-bit" } ], "notes": "Example build notes here.", "size_total_bytes": 52428800, "size_total_string": "50.00 MB", "metadata_total_bytes": 4096, "build_source": "ghactions", "ci_pipeline": { "ci_pipeline_name": "Nightly Build", "ci_pipeline_url": "https://github.com/buildstash/example/actions/workflows/nightly.yml", "ci_run_id": "12345678901", "ci_run_url": "https://github.com/buildstash/example/actions/runs/12345678901", "ci_build_duration": "00:05:00" }, "scm": { "scm_host_type": "git", "scm_host": "github", "scm_repo_name": "buildstash/example", "scm_repo_url": "https://github.com/buildstash/example", "scm_branch": "main", "scm_commit_sha": "1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6", "scm_commit_sha_short": "1a2b3c4", "scm_commit_url": "https://github.com/buildstash/example/commit/1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6" }, "pending": false, "modal_url": "https://acme.buildstash.com/applications/aBc1234/builds/xYz9876", "download_url": "https://acme.buildstash.com/builds/xYz9876/download", "built_at": "2025-06-15T14:30:00.000000Z", "created_at": "2025-06-10T09:15:00.000000Z", "updated_at": "2025-06-15T14:30:00.000000Z", "application_id": "aBc1234", "workspace_id": "wSp1234", "primary_file": { "id": "550e8400-e29b-41d4-a716-446655440003", "filename": "example.exe", "size_bytes": 52428800, "size_string": "50.00 MB", "checksum_md5": "d41d8cd98f00b204e9800998ecf8427e", "filetype": { "identifier": "exe", "name": "Windows Executable", "extension": "exe" }, "created_at": "2025-06-10T09:15:00.000000Z", "updated_at": "2025-06-15T14:30:00.000000Z" }, "expansion_files": [], "metadata_artifacts": [ { "id": "550e8400-e29b-41d4-a716-446655440002", "filename": "Info.plist", "size_bytes": 4096, "size_string": "4.00 KB", "checksum_md5": "098f6bcd4621d373cade4e832627b4f6", "metadata_filetype": { "identifier": "info-plist", "name": "Info.plist", "extension": "plist" }, "created_at": "2025-06-10T09:15:00.000000Z", "updated_at": "2025-06-15T14:30:00.000000Z" } ], "ios_info": null, "android_info": null }}{ "message": "Unauthorized"}Notes
- For multipart uploads, all parts with ETags must be included in the
multipart_chunksarray - ETags must match exactly what was returned from the upload requests
- Some builds may take a short delay to process, indicated by
pending_processing: true