Create an organization
/api/v1/organizationsCreates 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
Authorization Option A JWT access token
X-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
data *OrganizationResponseDto
application/json
error *ApiErrorBodyDto
application/json
error *ApiErrorBodyDto
application/json
error *ApiErrorBodyDto
Returned object
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": {} }'
{ "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 } }
Tell us how we can improve this guide.