A meeting is a bookable scheduling link. In the API this resource is called a scheduling link. Meetings are identified by a short id (sid).
List meetings
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 |
{
"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 in the API.
Show a meeting
neetocal meetings show <sid>
{
"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 in the API.
Create a meeting
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 |
{
"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" }]
}
}
}
In --quiet mode this prints the new meeting sid.
Mirrors Create scheduling link in the API.
Update a meeting
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 |
{
"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 in the API.
Delete a meeting
neetocal meetings delete <sid>
Meeting deleted successfully.
In --quiet mode this prints success. Mirrors Delete scheduling link in the API.
Create a one-off link
neetocal meetings one-off-link <sid>
{
"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 in the API.
List available slots
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 |
{
"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 in the API.
Durations
Each meeting can offer multiple durations.
List durations
neetocal meetings durations list <meeting-sid>
{
"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 in the API.
Show a duration
neetocal meetings durations show <meeting-sid> <id>
{
"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 in the API.
Create a duration
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 |
{
"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 in the API.
Update a duration
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 |
{
"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 in the API.
Delete a duration
neetocal meetings durations delete <meeting-sid> <id>
Duration deleted successfully.
In --quiet mode this prints success. Mirrors Delete meeting duration 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.
List spots
neetocal meetings spots list <meeting-sid>
{
"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 in the API.
Show a spot
neetocal meetings spots show <meeting-sid> <id>
{
"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 in the API.
Create a spot
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 |
{
"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 in the API.
Update a spot
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 |
{
"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 in the API.
Delete a spot
neetocal meetings spots delete <meeting-sid> <id>
Spot deleted successfully.
In --quiet mode this prints success. Mirrors Delete meeting place in the API.
Availability
Attach or update the availability schedule a meeting uses.
Create meeting availability
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 |
{
"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 in the API.
Update meeting availability
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 |
{
"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 in the API.