---
title: "Create an event type"
method: POST
path: "/v1/event-types"
tags: ["Event Types"]
---

# Create an event type

`POST /v1/event-types`

## Request

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

Creates a new event type for the authenticated organization. A unique slug is required and will be used in booking page URLs. Returns 409 if the slug is already taken.

## Request body

- object
  - `title` string, required
  - `slug` string, required
  - `description` string
  - `duration_minutes` integer, required
  - `buffer_before_minutes` integer
  - `buffer_after_minutes` integer
  - `minimum_notice_minutes` integer
  - `color` string
  - `price_amount` integer, nullable
  - `price_currency` string
  - `reminder_intervals` integer[]
  - `duration_options` integer[], nullable
  - `max_attendees` integer
  - `booking_cap` integer, nullable
  - `booking_cap_period` 'daily' | 'weekly' | 'monthly' | 'total' | 'null', nullable
  - `waitlist_enabled` boolean
  - `waitlist_max` integer
  - `waitlist_ttl_days` integer
  - `booking_page_enabled` boolean
  - `conferencing_provider` 'zoom' | 'google_meet' | 'microsoft_teams' | 'custom' | 'in_person' | 'null', nullable
  - `custom_meeting_url` string, uri, nullable
  - `location` string, nullable

## Response `201`

Event type created

- object
  - `id` string, uuid, required
  - `organization_id` string, uuid, required
  - `title` string, required
  - `slug` string, required
  - `description` string, nullable, required
  - `duration_minutes` integer, required
  - `buffer_before_minutes` integer, required
  - `buffer_after_minutes` integer, required
  - `minimum_notice_minutes` integer, required
  - `color` string, required
  - `timezone` string, required
  - `active` boolean, required
  - `is_test` boolean, required
  - `price_amount` integer, nullable, required
  - `price_currency` string, required
  - `reminder_intervals` integer[], required
  - `duration_options` integer[], nullable, required
  - `max_attendees` integer, required
  - `assignment_strategy` 'none' | 'round_robin' | 'least_recent' | 'least_bookings' | 'availability_weighted', required
  - `booking_cap` integer, nullable, required
  - `booking_cap_period` 'daily' | 'weekly' | 'monthly' | 'total' | 'null', nullable, required
  - `bookings_remaining` integer, nullable, required
  - `booking_count` integer, required
  - `waitlist_enabled` boolean, required
  - `waitlist_max` integer, required
  - `waitlist_ttl_days` integer, required
  - `booking_page_enabled` boolean, required
  - `conferencing_provider` string, nullable, required
  - `custom_meeting_url` string, nullable, required
  - `location` string, nullable, required
  - `created_at` string, required
  - `updated_at` string, required

## Other responses

- `401`: Unauthorized
- `409`: Conflict — slug already exists
- `422`: Validation error

---

[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)
