> ## Documentation Index
> Fetch the complete documentation index at: https://apidocs.neetocal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Meetings

> Manage meetings, their slots, durations, spots, and availability.

A meeting is a bookable scheduling link. In the API this resource is called a [scheduling link](/api-reference/scheduling-links/list). Meetings are identified by a short id (`sid`).

## List meetings

```bash theme={"system"}
neetocal meetings list
neetocal meetings list --search "demo" --host-email host@example.com
```

| Flag           | Type     | Required | Default | Description              |
| -------------- | -------- | -------- | ------- | ------------------------ |
| `--host-email` | `string` |          |         | Filter by host email     |
| `--page`       | `int`    |          | `0`     | Page number              |
| `--page-size`  | `int`    |          | `0`     | Items per page (max 100) |
| `--search`     | `string` |          |         | Search meetings          |

```json Sample output (--json) theme={"system"}
{
  "data": [
    {
      "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "sid": "mtg_a1b2c3",
      "name": "Product demo",
      "slug": "demo",
      "kind": "one_on_one",
      "duration": 30,
      "disabled": false,
      "spot": "zoom",
      "hosts": [{ "name": "Oliver Smith", "email": "oliver@example.com" }]
    },
    {
      "id": "b2c3d4e5-f6a7-8901-bcde-f01234567890",
      "sid": "mtg_d4e5f6",
      "name": "Intro call",
      "slug": "intro",
      "kind": "round_robin",
      "duration": 15,
      "disabled": false,
      "spot": "google_meet",
      "hosts": [{ "name": "Sam Smith", "email": "sam@example.com" }]
    }
  ],
  "breadcrumbs": [
    { "label": "Show details", "command": "neetocal meetings show <sid>" }
  ],
  "pagination": { "total_records": 2, "total_pages": 1, "current_page_number": 1, "page_size": 30 }
}
```

Mirrors [List scheduling links](/api-reference/scheduling-links/list) in the API.

## Show a meeting

```bash theme={"system"}
neetocal meetings show <sid>
```

```json Sample output (--json) theme={"system"}
{
  "data": {
    "meeting": {
      "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "sid": "mtg_a1b2c3",
      "name": "Product demo",
      "slug": "demo",
      "description": "Discuss project updates",
      "kind": "one_on_one",
      "duration": 30,
      "disabled": false,
      "spot": "zoom",
      "is_multiple_durations_allowed": false,
      "is_multiple_spots_allowed": false,
      "hosts": [{ "name": "Oliver Smith", "email": "oliver@example.com" }]
    }
  },
  "breadcrumbs": [
    { "label": "List all meetings", "command": "neetocal meetings list" },
    { "label": "Delete meeting", "command": "neetocal meetings delete mtg_a1b2c3" }
  ]
}
```

Mirrors [Get scheduling link](/api-reference/scheduling-links/get) in the API.

## Create a meeting

```bash theme={"system"}
neetocal meetings create \
  --name "Product demo" --slug demo \
  --hosts host@example.com --kind one_on_one \
  --spot zoom --duration 30
```

| Flag            | Type     | Required | Default | Description                         |
| --------------- | -------- | -------- | ------- | ----------------------------------- |
| `--description` | `string` |          |         | Meeting description                 |
| `--duration`    | `int`    |          | `0`     | Meeting duration in minutes         |
| `--hosts`       | `string` |          |         | Comma-separated host emails         |
| `--json-file`   | `string` |          |         | Path to JSON file with meeting data |
| `--kind`        | `string` |          |         | Meeting kind                        |
| `--name`        | `string` |          |         | Meeting name                        |
| `--slug`        | `string` |          |         | Meeting slug                        |
| `--spot`        | `string` |          |         | Meeting spot                        |

```json Sample output (--json) theme={"system"}
{
  "data": {
    "meeting": {
      "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "sid": "mtg_a1b2c3",
      "name": "Product demo",
      "slug": "demo",
      "kind": "one_on_one",
      "duration": 30,
      "disabled": false,
      "spot": "zoom",
      "hosts": [{ "name": "Oliver Smith", "email": "oliver@example.com" }]
    }
  }
}
```

<Tip>In `--quiet` mode this prints the new meeting `sid`.</Tip>

Mirrors [Create scheduling link](/api-reference/scheduling-links/create) in the API.

## Update a meeting

```bash theme={"system"}
neetocal meetings update <sid> --name "Updated demo" --duration 45
```

| Flag            | Type     | Required | Default | Description                                                        |
| --------------- | -------- | -------- | ------- | ------------------------------------------------------------------ |
| `--description` | `string` |          |         | Meeting description                                                |
| `--duration`    | `int`    |          | `0`     | Meeting duration in minutes                                        |
| `--hosts`       | `string` |          |         | Comma-separated host emails (optional; omit to keep current hosts) |
| `--json-file`   | `string` |          |         | Path to JSON file with meeting data                                |
| `--kind`        | `string` |          |         | Meeting kind                                                       |
| `--name`        | `string` |          |         | Meeting name                                                       |
| `--slug`        | `string` |          |         | Meeting slug                                                       |
| `--spot`        | `string` |          |         | Meeting spot                                                       |

```json Sample output (--json) theme={"system"}
{
  "data": {
    "meeting": {
      "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "sid": "mtg_a1b2c3",
      "name": "Updated demo",
      "slug": "demo",
      "kind": "one_on_one",
      "duration": 45,
      "disabled": false,
      "spot": "zoom",
      "hosts": [{ "name": "Oliver Smith", "email": "oliver@example.com" }]
    }
  }
}
```

Only the fields you pass are changed. Omit `--hosts` to keep the current hosts. Mirrors [Update scheduling link](/api-reference/scheduling-links/update) in the API.

## Delete a meeting

```bash theme={"system"}
neetocal meetings delete <sid>
```

```text Sample output theme={"system"}
Meeting deleted successfully.
```

In `--quiet` mode this prints `success`. Mirrors [Delete scheduling link](/api-reference/scheduling-links/delete) in the API.

## Create a one-off link

```bash theme={"system"}
neetocal meetings one-off-link <sid>
```

```json Sample output (--json) theme={"system"}
{
  "data": {
    "one_off_link": {
      "slug": "one-off-c5530bc7c9ab",
      "url": "https://spinkart.neetocal.com/one-off-c5530bc7c9ab"
    }
  }
}
```

Returns a single-use booking URL. Mirrors [Create one-off link](/api-reference/scheduling-links/create-one-off) in the API.

## List available slots

```bash theme={"system"}
neetocal meetings slots <sid> --year 2026 --month 5 --day 15 --time-zone "America/New_York"
```

| Flag          | Type     | Required | Default | Description                         |
| ------------- | -------- | -------- | ------- | ----------------------------------- |
| `--day`       | `int`    |          | `0`     | Day of month                        |
| `--month`     | `int`    | Yes      | `0`     | Month (1-12)                        |
| `--time-zone` | `string` | Yes      |         | Time zone (e.g., America/New\_York) |
| `--year`      | `int`    | Yes      | `0`     | Year                                |

```json Sample output (--json) theme={"system"}
{
  "data": [
    {
      "date": "2026-05-15",
      "day": 15,
      "slots": {
        "10:00-10:30": { "start_time": "10:00", "count": 1 },
        "10:30-11:00": { "start_time": "10:30", "count": 1 }
      }
    }
  ]
}
```

Omit `--day` to get slots for the whole month. Mirrors [List slots](/api-reference/slots/list) in the API.

## Durations

Each meeting can offer multiple durations.

### List durations

```bash theme={"system"}
neetocal meetings durations list <meeting-sid>
```

```json Sample output (--json) theme={"system"}
{
  "data": [
    {
      "id": "4ece6b6b-4b5f-4c15-9122-a85af189198c",
      "duration": 30,
      "is_default": true,
      "created_at": "2025-08-18T07:43:16.775Z",
      "updated_at": "2025-08-18T08:03:58.019Z"
    },
    {
      "id": "5fdf7c7c-5c6f-5d26-a233-b96bf29a2a9d",
      "duration": 45,
      "is_default": false,
      "created_at": "2025-08-18T07:43:16.775Z",
      "updated_at": "2025-08-18T08:03:58.019Z"
    }
  ]
}
```

Mirrors [List meeting durations](/api-reference/meeting-durations/list) in the API.

### Show a duration

```bash theme={"system"}
neetocal meetings durations show <meeting-sid> <id>
```

```json Sample output (--json) theme={"system"}
{
  "data": {
    "duration": {
      "id": "4ece6b6b-4b5f-4c15-9122-a85af189198c",
      "duration": 45,
      "is_default": false,
      "created_at": "2025-08-18T07:43:16.775Z",
      "updated_at": "2025-08-18T08:03:58.019Z"
    }
  }
}
```

Mirrors [Get meeting duration](/api-reference/meeting-durations/get) in the API.

### Create a duration

```bash theme={"system"}
neetocal meetings durations create <meeting-sid> --duration 45 --is-default
```

| Flag           | Type   | Required | Default | Description             |
| -------------- | ------ | -------- | ------- | ----------------------- |
| `--duration`   | `int`  | Yes      | `0`     | Duration in minutes     |
| `--is-default` | `bool` |          | `false` | Set as default duration |

```json Sample output (--json) theme={"system"}
{
  "data": {
    "duration": {
      "id": "4ece6b6b-4b5f-4c15-9122-a85af189198c",
      "duration": 45,
      "is_default": true,
      "created_at": "2025-08-18T07:43:16.775Z",
      "updated_at": "2025-08-18T08:03:58.019Z"
    }
  }
}
```

Mirrors [Create meeting duration](/api-reference/meeting-durations/create) in the API.

### Update a duration

```bash theme={"system"}
neetocal meetings durations update <meeting-sid> <id> --duration 60
```

| Flag           | Type   | Required | Default | Description             |
| -------------- | ------ | -------- | ------- | ----------------------- |
| `--duration`   | `int`  |          | `0`     | Duration in minutes     |
| `--is-default` | `bool` |          | `false` | Set as default duration |

```json Sample output (--json) theme={"system"}
{
  "data": {
    "duration": {
      "id": "4ece6b6b-4b5f-4c15-9122-a85af189198c",
      "duration": 60,
      "is_default": true,
      "created_at": "2025-08-18T07:43:16.775Z",
      "updated_at": "2025-08-18T08:03:58.019Z"
    }
  }
}
```

Mirrors [Update meeting duration](/api-reference/meeting-durations/update) in the API.

### Delete a duration

```bash theme={"system"}
neetocal meetings durations delete <meeting-sid> <id>
```

```text Sample output theme={"system"}
Duration deleted successfully.
```

In `--quiet` mode this prints `success`. Mirrors [Delete meeting duration](/api-reference/meeting-durations/delete) in the API.

## Spots

A spot is a meeting place (Zoom, phone, in person, and so on). In the API this resource is called a [meeting place](/api-reference/meeting-places/list).

### List spots

```bash theme={"system"}
neetocal meetings spots list <meeting-sid>
```

```json Sample output (--json) theme={"system"}
{
  "data": [
    {
      "id": "bcc90342-9345-4d89-9144-d25d7c7b3521",
      "spot": "zoom",
      "is_default": true,
      "phone_call_number": null,
      "in_person_location": null,
      "custom_text": null,
      "created_at": "2025-08-18T07:19:28.341Z",
      "updated_at": "2025-08-18T07:35:32.822Z"
    },
    {
      "id": "cdd91453-0456-5e90-0255-e36e8d8c4632",
      "spot": "in_person",
      "is_default": false,
      "phone_call_number": null,
      "in_person_location": "Room 4B",
      "custom_text": null,
      "created_at": "2025-08-18T07:19:28.341Z",
      "updated_at": "2025-08-18T07:35:32.822Z"
    }
  ]
}
```

Mirrors [List meeting places](/api-reference/meeting-places/list) in the API.

### Show a spot

```bash theme={"system"}
neetocal meetings spots show <meeting-sid> <id>
```

```json Sample output (--json) theme={"system"}
{
  "data": {
    "spot": {
      "id": "bcc90342-9345-4d89-9144-d25d7c7b3521",
      "spot": "zoom",
      "is_default": true,
      "phone_call_number": null,
      "in_person_location": null,
      "custom_text": null,
      "created_at": "2025-08-18T07:19:28.341Z",
      "updated_at": "2025-08-18T07:35:32.822Z"
    }
  }
}
```

Mirrors [Get meeting place](/api-reference/meeting-places/get) in the API.

### Create a spot

```bash theme={"system"}
neetocal meetings spots create <meeting-sid> --spot zoom --is-default
```

| Flag             | Type     | Required | Default | Description                  |
| ---------------- | -------- | -------- | ------- | ---------------------------- |
| `--custom-text`  | `string` |          |         | Custom text for the spot     |
| `--is-default`   | `bool`   |          | `false` | Set as default spot          |
| `--location`     | `string` |          |         | Location for in-person spots |
| `--phone-number` | `string` |          |         | Phone number for phone spots |
| `--spot`         | `string` | Yes      |         | Spot type                    |

```json Sample output (--json) theme={"system"}
{
  "data": {
    "spot": {
      "id": "bcc90342-9345-4d89-9144-d25d7c7b3521",
      "spot": "zoom",
      "is_default": true,
      "phone_call_number": null,
      "in_person_location": null,
      "custom_text": null,
      "created_at": "2025-08-18T07:19:28.341Z",
      "updated_at": "2025-08-18T07:35:32.822Z"
    }
  }
}
```

Mirrors [Create meeting place](/api-reference/meeting-places/create) in the API.

### Update a spot

```bash theme={"system"}
neetocal meetings spots update <meeting-sid> <id> --location "Room 4B"
```

| Flag             | Type     | Required | Default | Description                  |
| ---------------- | -------- | -------- | ------- | ---------------------------- |
| `--custom-text`  | `string` |          |         | Custom text for the spot     |
| `--is-default`   | `bool`   |          | `false` | Set as default spot          |
| `--location`     | `string` |          |         | Location for in-person spots |
| `--phone-number` | `string` |          |         | Phone number for phone spots |
| `--spot`         | `string` |          |         | Spot type                    |

```json Sample output (--json) theme={"system"}
{
  "data": {
    "spot": {
      "id": "bcc90342-9345-4d89-9144-d25d7c7b3521",
      "spot": "in_person",
      "is_default": false,
      "phone_call_number": null,
      "in_person_location": "Room 4B",
      "custom_text": null,
      "created_at": "2025-08-18T07:19:28.341Z",
      "updated_at": "2025-08-18T07:35:32.822Z"
    }
  }
}
```

Mirrors [Update meeting place](/api-reference/meeting-places/update) in the API.

### Delete a spot

```bash theme={"system"}
neetocal meetings spots delete <meeting-sid> <id>
```

```text Sample output theme={"system"}
Spot deleted successfully.
```

In `--quiet` mode this prints `success`. Mirrors [Delete meeting place](/api-reference/meeting-places/delete) in the API.

## Availability

Attach or update the availability schedule a meeting uses.

### Create meeting availability

```bash theme={"system"}
neetocal meetings availabilities create <meeting-sid> --json-file periods.json
```

| Flag          | Type     | Required | Default | Description                              |
| ------------- | -------- | -------- | ------- | ---------------------------------------- |
| `--email`     | `string` |          |         | Email address                            |
| `--json-file` | `string` |          |         | Path to JSON file with periods/overrides |
| `--name`      | `string` |          |         | Availability name                        |
| `--time-zone` | `string` |          |         | Time zone                                |

```json Sample output (--json) theme={"system"}
{
  "data": {
    "availability": {
      "availability_id": "01ea5ddf-ed00-4bed-bfa3-ba8ea80a856a",
      "member_id": "b6d02dfa-8ef6-453d-b9f7-67a6f20bcaa6",
      "meeting_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "id": "01ea5ddf-ed00-4bed-bfa3-ba8ea80a856a",
      "sid": "2nq7q5c",
      "name": "Custom Work Hours",
      "default": false,
      "periods": [
        {
          "id": "21c812a7-3859-4f01-b214-850e6f11caad",
          "wday": "monday",
          "start_time": "09:00 AM",
          "end_time": "05:00 PM"
        }
      ],
      "overrides": []
    }
  }
}
```

Mirrors [Create meeting availability](/api-reference/availabilities/create-meeting) in the API.

### Update meeting availability

```bash theme={"system"}
neetocal meetings availabilities update <meeting-sid> --json-file periods.json
```

| Flag          | Type     | Required | Default | Description                        |
| ------------- | -------- | -------- | ------- | ---------------------------------- |
| `--json-file` | `string` |          |         | Path to JSON file with update data |

```json Sample output (--json) theme={"system"}
{
  "data": {
    "availabilities": [
      {
        "availability_id": "01ea5ddf-ed00-4bed-bfa3-ba8ea80a856a",
        "member_id": "b6d02dfa-8ef6-453d-b9f7-67a6f20bcaa6",
        "id": "01ea5ddf-ed00-4bed-bfa3-ba8ea80a856a",
        "sid": "2nq7q5c",
        "name": "Custom Work Hours",
        "default": false,
        "periods": [
          {
            "id": "21c812a7-3859-4f01-b214-850e6f11caad",
            "wday": "monday",
            "start_time": "09:00 AM",
            "end_time": "05:00 PM"
          }
        ],
        "overrides": []
      }
    ]
  }
}
```

Mirrors [Update meeting availability](/api-reference/availabilities/update-meeting) in the API.
