---
title: "Confirm vault upload result"
method: POST
path: "/vault/{id}/upload/{objectId}/confirm"
tags: ["Vaults"]
---

# Confirm vault upload result

`POST /vault/{id}/upload/{objectId}/confirm`

Confirm whether a direct-to-S3 vault upload succeeded or failed. This endpoint emits vault.upload.completed or vault.upload.failed events and is idempotent for repeated confirmations.

## Path parameters

- `id` string, required
- `objectId` string, required

## Request body

- union
  - object
    - `success` true, required — Whether the upload succeeded
    - `sizeBytes` integer, required — Uploaded file size in bytes
    - `etag` string — S3 ETag for the uploaded object (optional if client cannot access ETag header)
  - object
    - `success` false, required — Whether the upload succeeded
    - `errorCode` string, required — Client-side error code
    - `errorMessage` string, required — Client-side error message

## Response `200`

Confirmation recorded

- object
  - `vaultId` string
  - `objectId` string
  - `status` 'completed' | 'failed'
  - `alreadyConfirmed` boolean

## Other responses

- `400` — Invalid request body
- `401` — Authentication failed - invalid API key
- `403` — Access denied - API key lacks vault service permissions
- `404` — Vault or object not found

---

[API](https://skmtc.net/casemark/apis/case-dev-api.md) · [All operations](https://skmtc.net/casemark/apis/case-dev-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/casemark/case-dev-api/versions/5b7e64e6d6f9/schema)
