Update a Holdout using JSON Patch
1 min
POST
https://api.optimizely.com/flags/v1//projects/{project_id}/holdouts/{holdout_id}
project_idintegerThe project identifier
holdout_idintegerThe holdout identifier
acceptstringGenerated from available response content types
200<p>Successful update of the holdout. Returns the updated holdout resource with all modifications applied.</p>
<p><strong>Response Details:</strong></p>
<ul>
<li>Contains the complete updated holdout with all applied changes</li>
<li>Includes RESTful JSON (<a href="https://restfuljson.org/" target="_blank">https://restfuljson.org/</a>) styled links for related actions</li>
<li>Automatic timestamps are included (start_time/end_time) if status was changed</li>
<li>Missing links indicate insufficient permissions for related operations</li>
<li>ReadOnly fields reflect any server-managed updates (like timestamps)</li>
</ul>
<p><strong>Status-Specific Behavior:</strong></p>
<ul>
<li><strong>Draft→Running</strong>: Includes newly set <code>start_time</code></li>
<li><strong>Running→Concluded</strong>: Includes newly set <code>end_time</code></li>
<li><strong>Archived</strong>: Shows <code>archived: true</code> with preserved historical data</li>
</ul>
400<p>Bad Request - Invalid patch operations, validation failures, or illegal state transitions.</p>
<p><strong>Common causes:</strong></p>
<ul>
<li><strong>Invalid state transitions</strong>: Attempting invalid status changes (e.g., draft→concluded)</li>
<li><strong>Restricted updates</strong>: Trying to modify metrics on running holdouts</li>
<li><strong>Invalid traffic allocation</strong>: Values outside 0-10000 range</li>
<li><strong>Archive violations</strong>: Attempting to archive non-concluded holdouts</li>
<li><strong>Malformed patch</strong>: Invalid JSON Patch structure or unsupported operations</li>
<li><strong>Missing required fields</strong>: Patch operations targeting required fields with null/empty values</li>
<li><strong>Type mismatches</strong>: Providing wrong data types for specific fields</li>
</ul>
401Invalid credentials
403Do not have permission to perform the operation
404Not found. No content
409Conflicting resource state with requested action
curl --request POST \
--url https://api.optimizely.com/flags/v1//projects/{project_id}/holdouts/{holdout_id} \
--header 'accept: application/json'