`POST /v1/orgs/{org}/groups`.
POST
/v1/orgs/{org}/groups
const url = 'https://api.updawg.net/v1/orgs/example/groups';const options = { method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{"description":"example","label_selector":"example","name":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.updawg.net/v1/orgs/example/groups \ --header 'Content-Type: application/json' \ --data '{ "description": "example", "label_selector": "example", "name": "example" }'Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”org
required
string
Organization slug.
Request Bodyrequired
Section titled “Request Bodyrequired”Media typeapplication/json
object
description
string | null
label_selector
Labels a host must all carry, with exactly these values. Absent for a purely static group. An empty map is refused: it would match every host.
object | null
name
required
string
Examplegenerated
{ "description": "example", "label_selector": "example", "name": "example"}Responses
Section titled “Responses”Created.
Media typeapplication/json
object
created_at
required
string format: date-time
description
string | null
id
required
grp_….
string
label_selector
object | null
name
required
string
resolved_hosts
required
Every host it resolves to, static or by label, each counted once. Decommissioned hosts are in no group.
integer format: int64
static_hosts
required
Hosts put in the group by hand. Decommissioned hosts are not counted.
integer format: int64
Examplegenerated
{ "created_at": "2026-04-15T12:00:00Z", "description": "example", "id": "example", "label_selector": "example", "name": "example", "resolved_hosts": 1, "static_hosts": 1}No name, or a selector that is empty or has an empty key.
Media typeapplication/json
object
detail
string | null
status
required
integer format: int32
title
required
string
type
required
string
Examplegenerated
{ "detail": "example", "status": 1, "title": "example", "type": "example"}No session.
Media typeapplication/json
object
detail
string | null
status
required
integer format: int32
title
required
string
type
required
string
Examplegenerated
{ "detail": "example", "status": 1, "title": "example", "type": "example"}Not permitted for this role.
Media typeapplication/json
object
detail
string | null
status
required
integer format: int32
title
required
string
type
required
string
Examplegenerated
{ "detail": "example", "status": 1, "title": "example", "type": "example"}No such organization, or not yours — one answer for both.
Media typeapplication/json
object
detail
string | null
status
required
integer format: int32
title
required
string
type
required
string
Examplegenerated
{ "detail": "example", "status": 1, "title": "example", "type": "example"}A group with that name exists.
Media typeapplication/json
object
detail
string | null
status
required
integer format: int32
title
required
string
type
required
string
Examplegenerated
{ "detail": "example", "status": 1, "title": "example", "type": "example"}Over the organization’s request limit. Retry-After says when to try again; RateLimit-Limit is the burst.
Media typeapplication/json
object
detail
string | null
status
required
integer format: int32
title
required
string
type
required
string
Examplegenerated
{ "detail": "example", "status": 1, "title": "example", "type": "example"}