---
title: "Create organization"
method: POST
path: "/v1/organizations"
tags: ["Organizations"]
---

# Create organization

`POST /v1/organizations`

## Request

- Base URL: `https://api.astrocal.dev`
- URL: `https://api.astrocal.dev/v1/organizations`
- Auth: HTTP bearer

Creates a new organization linked to a Supabase Auth user. Service key authentication required. Called by the dashboard during signup.

## Request body

- object
  - `name` string, required
  - `slug` string
  - `owner_user_id` string, required
  - `owner_email` string, email
  - `onboarding_persona` 'developer' | 'individual' | 'team_lead'
  - `timezone` string

## Response `201`

Organization created

- object
  - `id` string, uuid, required
  - `name` string, required
  - `slug` string, required
  - `owner_user_id` string, nullable, required
  - `default_calendar_connection_id` string, uuid, nullable, required
  - `onboarding_completed_at` string, nullable, required
  - `created_at` string, required
  - `updated_at` string, required

## Other responses

- `400`: Validation error
- `401`: Unauthorized — invalid or missing service key
- `409`: Conflict — slug or owner_user_id already exists

---

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