post https://api.optimizely.com/flags/v1/projects//holdouts/
Updates a specific holdout using JSON Patch operations (RFC 6902). This endpoint allows you to modify individual properties of an existing holdout without replacing the entire resource.
Supported Operations:
- Status transitions: Move holdouts through their lifecycle (
draft→running→concluded) - Configuration updates: Modify traffic allocation, name, description, and other settings
- Archive management: Archive/unarchive concluded holdouts
- Metrics updates: Modify metric configurations (restricted based on status)
State Management & Validation Rules:
- Draft holdouts: All fields can be updated except readonly properties
- Running holdouts: Limited updates allowed; cannot modify metrics or core configuration
- Concluded holdouts: Only
nameandarchivedstatus can be modified - Status transitions: Must follow proper sequence (draft→running→concluded)
- Traffic allocation: Must be 0-10000 basis points (0-100%)
Automatic Timestamp Management:
- Moving to
runningstatus automatically setsstart_timeto current timestamp - Moving to
concludedstatus automatically setsend_timeto current timestamp
Common Update Patterns:
[
{"op": "replace", "path": "/name", "value": "Updated Holdout Name"},
{"op": "replace", "path": "/traffic_allocation", "value": 1500},
{"op": "replace", "path": "/status", "value": "running"}
]
Important Limitations:
- Cannot modify metrics on running holdouts (prevents mid-experiment changes)
- Cannot archive non-concluded holdouts (must conclude first)
- Cannot update core configuration on running/concluded holdouts
- ReadOnly properties in patch operations are ignored
BetaHoldouts are in beta. Apply on the Optimizely beta signup page or contact your Customer Success Manager.