---
title: "Update Group Membership"
method: PUT
path: "/api/v1/geo/experiment-groups/membership"
tags: ["geo-monitoring", "geo-experiment-groups"]
---

# Update Group Membership

`PUT /api/v1/geo/experiment-groups/membership`

Set the group of one or more experiments.

Membership is a single-valued relationship, so assign, bulk assign, move, and
remove are all this one call: ``group_id`` is the destination, ``null``
unassigns. Cross-hotel assignment is rejected by the composite FK rather than
by a pre-flight query — the constraint is the structural guarantee.

## Request body

- GroupMembershipUpdate — Set the group of one or more experiments (PUT /experiment-groups/membership). Membership is a single-valued relationship, so assign, bulk assign, move, and remove are all this one call with different values: ``group_id`` is the destination group, and ``null`` means unassign (the experiments return to the standalone Experiments section). ``experiment_ids`` carries one id for the single-card path and several for a multi-select.
  - `experiment_ids` string[], required
  - `group_id` string, uuid, nullable, required

## Response `200`

Successful Response

- GroupMembershipResult — How many experiments the membership call actually updated.
  - `updated` integer, required

## Other responses

- `404` — Experiment group not found
- `422` — Validation Error

---

[API](https://skmtc.dev/getanana/apis/cleon-api.md) · [All operations](https://skmtc.dev/getanana/apis/cleon-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/getanana/cleon-api/revisions/3ad158624c53/schema)
