---
title: "Create a meeting"
method: POST
path: "/api/meetings"
tags: ["Meetings"]
---

# Create a meeting

`POST /api/meetings`

## Request

- Base URL: `https://api.wondercal.com`
- URL: `https://api.wondercal.com/api/meetings`
- Auth: HTTP bearer

Creates a new meeting. The authenticated user is automatically added as a participant and organizer.

## Headers

- `Idempotency-Key` string

## Request body

- CreateMeetingRequest
  - `title` string, required: Meeting title
  - `duration` integer, required: Duration in minutes (5 to 480)
  - `description` string, nullable: Optional description
  - `location` string, nullable: Optional — where the meeting will happen (a conferencing link, room name, or address)

## Response `201`

Meeting created successfully

- object
  - `data` Meeting
    - `id` string: Meeting ID
    - `title` string: Meeting title
    - `duration` integer: Duration in minutes
    - `description` string, nullable: Meeting description
    - `location` string, nullable: Where the meeting will happen — a conferencing link, room name, or address
    - `status` 'pending' | 'confirmed': Meeting status
    - `createdAt` string, date-time: ISO 8601 creation timestamp

## Other responses

- `400`: Validation error
- `401`: Not authenticated
- `409`: Idempotency-Key conflict. Two possible cases: (1) Permanent conflict — the same key was previously used with a different request body. Use a new key for this request. No Retry-After header is present. (2) Transient conflict — a request with the same key is still being processed. The Retry-After header indicates when to retry the identical request.
- `413`: Request body exceeds 1 MB limit
- `429`: Rate limit exceeded. The Retry-After header indicates how many seconds to wait before retrying.

---

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