---
title: "Create a new group"
method: POST
path: "/groups"
tags: ["Groups"]
---

# Create a new group

`POST /groups`

## Request

- The document declares no server URL.
- Auth: none declared

Creates a new group.

This operation can fail for the following reasons:

* A server error occurred (HTTP error `500`)
* The group already exist (HTTP error `409`)
* Invalid group ID (e.g., reserved name 'default') (HTTP error `400`)

## Request body

- CreateGroup
  - `description` string
  - `labels` Labels: User-defined name-value pairs. Name and value must be strings.
  - `groupId` string, required: An ID of a single artifact group.

## Response `200`

The group has been successfully created.

- GroupMetaData
  - `description` string
  - `owner` string, required
  - `createdOn` string, date-time, required
  - `modifiedBy` string, required
  - `modifiedOn` string, date-time, required
  - `labels` Labels: User-defined name-value pairs. Name and value must be strings.
  - `groupId` string, required: An ID of a single artifact group.

## Other responses

- `400`: Common response for all operations that can return a `400` error.
- `401`: Common response for all operations that can return a `401` error indicating authentication is required.
- `403`: Common response for all operations that can return a `403` error indicating the user is authenticated but not authorized.
- `409`: Common response used when an input conflicts with existing data.
- `500`: Common response for all operations that can fail with an unexpected server error.

## Changes

- **2026-10-31** `ff9684af2aad`: 25 info
  - added the optional property `ruleViolation/causes/items/code` to the response with the `400` status
  - added the optional property `ruleViolation/causes/items/code` to the response with the `401` status
  - added the optional property `ruleViolation/causes/items/code` to the response with the `403` status
  - added the optional property `ruleViolation/causes/items/code` to the response with the `409` status
  - …21 more
- **2026-10-29** `f17f5df4e79c`: 5 info
  - added the optional property `ruleViolation` to the response with the `400` status
  - added the optional property `ruleViolation` to the response with the `401` status
  - added the optional property `ruleViolation` to the response with the `403` status
  - added the optional property `ruleViolation` to the response with the `409` status
  - …1 more
- **2026-01-14** `31fa45cad70b`: 1 info
  - added the non-success response with the status `400`
- **2025-12-16** `440db8997574`: 2 info
  - added the non-success response with the status `401`
  - added the non-success response with the status `403`
- **2025-10-21** `06cfd568ee49`: 2 breaking
  - the response property `description` became optional for the status `200`
  - the response property `labels` became optional for the status `200`

[Operation history](https://skmtc.dev/apicurio/apis/apicurio-registry-api-v3/changes/groups/post.md)

---

[API](https://skmtc.dev/apicurio/apis/apicurio-registry-api-v3.md) - [All operations](https://skmtc.dev/apicurio/apis/apicurio-registry-api-v3/llms.txt) - [OpenAPI document](https://skmtc.dev/apicurio/apis/apicurio-registry-api-v3/revisions/ff9684af2aad?raw)
