---
title: "POST /v2/chats/group"
method: POST
path: "/v2/chats/group"
tags: ["Messaging"]
---

# POST /v2/chats/group

`POST /v2/chats/group`

## Request

- Base URL: `https://api.arbital.xyz` (the document declares no server; this is the origin it was published from)
- URL: `https://api.arbital.xyz/v2/chats/group`
- Auth: HTTP bearer

## Request body

- CreateGroupChatRequest
  - `description` string
  - `discoverability` 'listed' | 'unlisted', required
  - `join_policy` 'open' | 'approval' | 'invite', required
  - `name` string, required
  - `read_access` 'public' | 'members', required

## Response `201`

Group chat created with the caller as owner

- Chat
  - `chat_id` string, uuid, required
  - `created_at_unix_ms` integer, required
  - `created_by_user_id` string, uuid, required
  - `deleted_at_unix_ms` integer, nullable, required
  - `description` string, nullable, required
  - `dm_peer` MessagingUserSummary, required
    - `avatar_url` string, nullable, required: Approved profile image or stable CALLD default avatar URL.
    - `display_name` string, nullable, required
    - `user_id` string, uuid, required
    - `username` string, required
  - `discoverability` 'listed' | 'unlisted', required
  - `join_policy` unknown, required
  - `last_message` ChatLastMessage, required
    - `author` MessagingUserSummary, required
      - `avatar_url` string, nullable, required: Approved profile image or stable CALLD default avatar URL.
      - `display_name` string, nullable, required
      - `user_id` string, uuid, required
      - `username` string, required
    - `body` string, required: At most the first 200 Unicode code points of a nonempty message body; media-only messages use Photo, N photos, GIF or Media unavailable from current attachment state. An external-GIF-only message uses GIF. No external reference or rendition URL is included in chat-list previews.
    - `created_at_unix_ms` integer, required
    - `message_id` string, uuid, required
    - `sequence` string, required
  - `kind` 'dm' | 'group', required
  - `name` string, nullable, required
  - `read_access` 'public' | 'members', required
  - `updated_at_unix_ms` integer, required
  - `unread_count` string, required
  - `version` string, required
  - `member_count` string, required: Active members, decimal string.
  - `viewer_role` unknown, required
  - `permissions` ChatPermissions, required: Management rights the caller currently holds in this chat. Display hints only: every command re-authorizes inside its transaction. Direct messages carry no rights.
    - `can_change_roles` boolean, required: Owner only: promote a member to admin or demote an admin to member.
    - `can_invite` boolean, required: Owners and admins: create invitations, list and revoke pending ones.
    - `can_remove_members` boolean, required: Owners remove anyone but the owner; admins remove ordinary members.

## Other responses

- `400`: Stable machine-readable private messaging problem
- `401`: Stable machine-readable private messaging problem
- `403`: Stable machine-readable private messaging problem
- `409`: Stable machine-readable private messaging problem
- `422`: The server-owned safety policy rejected the social content before persistence or delivery
- `429`: Authenticated messaging mutation budget exhausted
- `503`: Stable machine-readable private messaging problem

---

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