> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# March 23, 2026 - CoreWeave AI Object Storage conditional writes

> CoreWeave AI Object Storage now supports conditional writes for PutObject, CompleteMultipartUpload, and CopyObject

CoreWeave AI Object Storage now supports conditional writes. Use HTTP precondition headers to make writes atomic and prevent accidental overwrites without requiring client-side locking.

## Overview

Conditional writes extend the precondition support [introduced with RenameObject in January 2026](/changelog/release-notes/ai-object-storage-rename-object) to `PutObject`, `CompleteMultipartUpload`, and `CopyObject`. Attach preconditions to these requests to make writes atomic and prevent accidental overwrites. The operation succeeds only if the precondition is met; otherwise the server returns a `412 Precondition Failed` error and the object is not modified.

Two headers are supported:

| Header          | Value       | Behavior                                                                                    |
| --------------- | ----------- | ------------------------------------------------------------------------------------------- |
| `If-None-Match` | `*`         | Write only if no object exists at the key. Prevents accidental overwrites of existing data. |
| `If-Match`      | ETag string | Write only if the object's current ETag matches. Enables atomic compare-and-swap updates.   |

## Use cases

| Use case                      | Description                                                                                                             |
| ----------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| **Safe checkpoint writes**    | Use `If-None-Match: *` to write a checkpoint only once, even when multiple training workers race to write the same key. |
| **Atomic model promotion**    | Use `If-Match` with the current ETag to swap a model file only if it has not changed since you last read it.            |
| **Idempotent initialization** | Use `If-None-Match: *` to create configuration objects or seed files without risk of overwriting existing data.         |

## Constraints

* `If-None-Match` only accepts the value `*`. Passing an ETag value returns `400 InvalidRequest`.
* If two concurrent requests use `If-None-Match: *` for the same key, one succeeds and the other returns `409 ConditionalRequestConflict`. Retry on 409.

## Learn more

* See the guide for [using conditional requests](/products/storage/object-storage/buckets/conditional-requests) for AWS CLI and Boto3 examples
* See the API reference for [Conditional writes](/products/storage/object-storage/reference/object-storage-s3#conditional-writes) and [S3 PutObject](/products/storage/object-storage/reference/object-storage-s3#s3putobject) for more information
* See [RenameObject (January 30, 2026)](/changelog/release-notes/ai-object-storage-rename-object) for the same precondition pattern with additional source, destination, and time-based conditions
