Skip to main content

POST /organizations

Creates a new organization with the authenticated user as the owner. The newly created organization automatically becomes the user’s active organization.

Authentication

Requires authentication. Returns 401 if user is not authenticated.

Request Body

name
string
required
Name of the organization. Must be unique (case-insensitive) and not empty after trimming whitespace.

Response

Returns the created organization object.
id
string (UUID)
required
Unique identifier for the organization
name
string
required
Name of the organization
created_at
string (datetime)
required
ISO 8601 timestamp when the organization was created
updated_at
string (datetime)
required
ISO 8601 timestamp when the organization was last updated

Example Request

curl -X POST "https://api.openclaw.com/organizations" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Acme Corp"
  }'

Example Response

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "name": "Acme Corp",
  "created_at": "2026-03-05T12:34:56.789Z",
  "updated_at": "2026-03-05T12:34:56.789Z"
}

Error Responses

401 Unauthorized
User is not authenticated
409 Conflict
An organization with this name already exists (case-insensitive match)
422 Unprocessable Content
Organization name is empty or contains only whitespace

Notes

  • The creator automatically receives the owner role with full board access (all_boards_read and all_boards_write set to true)
  • The new organization is automatically set as the user’s active organization
  • Organization names are checked for uniqueness using case-insensitive comparison

Build docs developers (and LLMs) love