---
search:
  tags:
    - Events
    - POST
seo:
  description: >-
    One row per group. A row without groupId creates a group; a row… Reference
    for the POST /api/v1/events/{id}/groups endpoint in the Bloomcount Public
    API API.
sidebar:
  label: Create, update and remove an event's groups
  badge: POST
title: Create, update and remove an event's groups
type: openapi-operation
---
One row per group. A row **without** `groupId` creates a group; a row
**with** one updates it; a row with `remove: true` deletes it, moving
its lines to `moveItemsTo` (or leaving them ungrouped when that is
omitted).

Rows are independent: a bad reference fails that row only, is reported
in `errors`, and every other row still applies. Send an
`Idempotency-Key` header to make a retry safe — a replay returns the
original response without writing again.

Changing `quantityMode`, `groupQuantity` or `hidden` moves the event's
money, so the event's totals are recomputed once per call.

**Errors** (per row, in `errors`)

- `name_required` — a create row without a name.
- `group_not_found` — `groupId` isn't a group on this event.
- `group_id_required` — a row asking to remove without naming a group.
- `move_target_not_found` — `moveItemsTo` isn't a group on this event.
- `move_target_is_removed_group` — `moveItemsTo` names a group this same batch removes.
- `invalid_group_quantity` — `groupQuantity` below 1, or not a whole number.

Whole-request failures: `404 event_not_found`, `400 groups_must_be_array`, `422 too_many_items` above 500 rows.

<Operation source="reference" id="post-api-v1-events-id-groups" />
