--- title: "Why does a conditional update in Catalyst NoSQL return HTTP 200 when the condition is not met?" url: https://docs.catalyst.zoho.com/en/faq/cloud-scale/nosql-conditional-update-returns-200/ description: "In Catalyst CloudScale NoSQL, HTTP 200 only means the request was processed. Whether a conditional write was applied is reported for each item in the response: …" last_updated: 2026-11-13T05:00:22Z service: CloudScale type: faq --- In Catalyst CloudScale NoSQL, HTTP 200 only means the request was processed. Whether a conditional write was applied is reported for each item in the response: the status is `Success` when the item was written, and `ConditionMismatch` or `CriteriaMismatch` when the condition was not met and nothing changed. 1. After a conditional update, read each item's status in the result, for example `data.update[0].status` from `updateItems()`, instead of the HTTP status code. 2. Treat a mismatch as "the item is no longer in the state I expected", for example because another request changed it first. Don't retry the same write blindly. 3. Build the condition on values you read, such as a version attribute, so that only one of several concurrent writers succeeds. A conditional write to a single item is applied atomically. 4. To check the item afterwards, read it with `consistent_read` set to true, which reads from the master. A key that doesn't exist returns a successful response with no items. Note: Conditions apply to one item at a time. NoSQL has no transactions across items, and a write that times out on the client has no confirmed outcome until you read the item again. Refer to the [Update Item help page](https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/nosql/update-item/) and the [Query Table help page](https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/nosql/query-table/) for more information.