1. Docs
  2. API Reference
  3. Create an organization

Create an organization

POST/api/v1/organizations

Creates an organization from a name (slug auto-derived, display-only) with optional description and metadata. Creating the first organization in a flat Environment switches its access model to organizations and writes the fixed two-level schema; an Environment in hierarchy mode returns 409 — an Environment uses either hierarchy or organizations, never both. Requires the hierarchy.manage permission and emits organization.created (plus environment.access_model_set on the first create).

Authentication

Bearer TokenAuthorization Option A

JWT access token

API KeyX-API-Key Option B

API key for management-tier access

Request body

application/json

namestring Required

Organization name. The slug is auto-derived from it at create and never changes afterwards.

descriptionstring Optional

Organization description

metadataobject Optional

Free-form metadata stored on the organization, returned as sent.

Responses

application/json

  • dataOrganizationResponseDto*

application/json

  • errorApiErrorBodyDto*

application/json

  • errorApiErrorBodyDto*

application/json

  • errorApiErrorBodyDto*

Returned object

Request
curl -X POST "https://auth.canopy-io.com/api/v1/organizations" \
  -H "X-API-Key: $CANOPY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "string",
    "description": "string",
    "metadata": {}
  }'
Response
{
  "data": {
    "id": "string",
    "name": "string",
    "description": "string",
    "slug": "string",
    "metadata": {},
    "member_count": 0,
    "pending_invite_count": 0,
    "created_at": "2026-04-20T12:00:00.000Z",
    "updated_at": "2026-04-20T12:00:00.000Z",
    "version": 0
  }
}
Related endpoints
GETList organizations
GETGet an organization
PATCHUpdate an organization
DELETEDelete an organization
GETList an organization's members
POSTAdd a member to an organization
PATCHChange a member's role
DELETERemove a member from an organization
GETList an organization's invitations
POSTInvite a member into an organization
DELETERevoke an organization invitation
Was this page helpful?

Tell us how we can improve this guide.