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

# Schedule

> Read and manage the schedule items (events) that make up a tour day.

**Schedule items** are the timed events on a tour day — soundchecks, travel, set times, and so on. They belong to a tour and a specific day. Schedule item IDs are integers.

All endpoints require the standard [authentication](/authentication) headers.

***

## List schedule items

```text theme={null}
GET /v1/tours/{tourId}/days/{dayId}/schedule
```

Returns the schedule items for one day of a tour.

**Scope:** `schedule.read`

**Example**

```bash theme={null}
curl "$BASE/v1/tours/2f1c…/days/1843/schedule" \
  -H "x-api-key: $KEY" -H "x-api-secret: $SECRET" -H "Authorization: Bearer $TOKEN"
```

**Path parameters**

| Name     | Type          | Description              |
| -------- | ------------- | ------------------------ |
| `tourId` | string (UUID) | The tour.                |
| `dayId`  | integer       | The day within the tour. |

**Response `data`** — array of schedule items. Each item includes timing, location, routing, and metadata:

```json theme={null}
{
  "id": 9021,
  "name": "Soundcheck",
  "notes": "Load in via rear dock",
  "start_time": "14:00:00",
  "end_time": "15:00:00",
  "allDay": false,
  "status": true,
  "formatted_address": "Sydney Opera House",
  "timezone_start": "Australia/Sydney",
  "timezone_end": "Australia/Sydney",
  "location_coordinates": { "lat": -33.85, "lng": 151.21 },
  "start_time_type": { "id": 1, "type": "FIXED" },
  "end_time_type": { "id": 2, "type": "FIXED" },
  "item_type": { "id": 3, "type": "EVENT" },
  "item_color": { "id": 1, "type": "BLUE" },
  "status_type": { "id": 1, "type": "CONFIRMED" },
  "created_by": { "id": "…", "firstname": "Jane", "lastname": "Doe" },
  "day": { "id": 1843, "name": "Day 1", "date": "2026-06-01T00:00:00Z" },
  "origin": { "formatted_address": "…", "viewport": { "northeast": {"lat":0,"lng":0}, "southwest": {"lat":0,"lng":0} }, "timeZone": "…" },
  "destination": { "...": "..." },
  "providerName": null,
  "bookingReference": null,
  "traveldistance": null,
  "travelduration": null,
  "itemReminder": [ { "reminder": { "id": 1, "description": "…", "duration": 30, "is_sent": false } } ],
  "is_deleted": false,
  "updated_at": "2026-05-20T08:00:00Z"
}
```

***

## Create a schedule item

```text theme={null}
POST /v1/schedule/items
```

**Scope:** `schedule.write`

**Body** — common fields (the underlying model supports more; see notes below):

| Field                                                           | Type               | Required | Description                                                                                                                 |
| --------------------------------------------------------------- | ------------------ | -------- | --------------------------------------------------------------------------------------------------------------------------- |
| `tour_id`                                                       | string (UUID)      | Yes      | Tour the item belongs to.                                                                                                   |
| `day_id`                                                        | number             | Yes      | Day the item is on.                                                                                                         |
| `name`                                                          | string             | Yes      | Item title.                                                                                                                 |
| `startTime`                                                     | string (`HH:mm`)   | Yes      | Start time as a 24-hour time-of-day, e.g. `14:00`. The date comes from `day_id` — do **not** send a full ISO 8601 datetime. |
| `startTimeTypeId`                                               | number             | Yes      | Start-time type — [valid values](/field-reference#time-types-starttimetypeid-endtimetypeid).                                |
| `timeZoneStart`                                                 | string (IANA)      | Yes      | Start time zone.                                                                                                            |
| `endTime`                                                       | string (`HH:mm`)   | No       | End time as a 24-hour time-of-day, e.g. `15:00`.                                                                            |
| `endTimeTypeId`                                                 | number             | No       | End-time type — [valid values](/field-reference#time-types-starttimetypeid-endtimetypeid).                                  |
| `timeZoneEnd`                                                   | string (IANA)      | No       | End time zone.                                                                                                              |
| `allDay`                                                        | boolean            | No       | All-day item.                                                                                                               |
| `status`                                                        | boolean            | No       | Status flag.                                                                                                                |
| `statusTypeId`                                                  | number             | No       | Status type — [valid values](/field-reference#status-types-statustypeid).                                                   |
| `location`                                                      | string             | No       | Display location.                                                                                                           |
| `coordinates`                                                   | `{ lat, lng }`     | No       | Location coordinates.                                                                                                       |
| `notes`                                                         | string             | No       | Free-text notes.                                                                                                            |
| `itemColorId`                                                   | number             | No       | Colour tag — [valid values](/field-reference#item-colors-itemcolorid).                                                      |
| `type`                                                          | number             | No       | Item type (`1` = regular, `2`–`6` = travel) — [valid values](/field-reference#item-types-type).                             |
| `reminder`                                                      | array\<Reminder>   | No       | `{ duration, typeId, description }` entries — [typeId values](/field-reference#reminder-types-reminder-typeid).             |
| `attachment`                                                    | Attachment         | No       | Single attachment `{ link, fileSize, name?, fileName?, description? }`.                                                     |
| `attachments`                                                   | array\<Attachment> | No       | Multiple attachments (same shape as above).                                                                                 |
| `origin` / `destination`                                        | Location           | No       | For travel items: `{ formatted_address, viewport, timeZone }`.                                                              |
| `travelbreaks`                                                  | array\<Location>   | No       | Intermediate stops: `{ formatted_address, viewport, timeZone }` entries.                                                    |
| `providerName`, `bookingReference`, `plateNumber`, `driverName` | string             | No       | Travel/provider metadata.                                                                                                   |
| `traveldistance`, `travelduration`                              | number             | No       | Travel metrics.                                                                                                             |
| `traveltype`                                                    | number             | No       | Travel mode (Car, Bus, …) — [valid values](/field-reference#travel-types-traveltype).                                       |
| `isRouteAutoCalculated`                                         | boolean            | No       | Whether route distance/duration were auto-calculated.                                                                       |
| `googlemaps_uri`                                                | string             | No       | Google Maps URL for the location.                                                                                           |
| `isEveryone` / `isAdminsOnly`                                   | boolean            | No       | Visibility shortcuts — see [Visibility](#visibility) below.                                                                 |
| `visibilityList`                                                | array\<string>     | No       | Explicit per-user visibility (user UUIDs) — see [Visibility](#visibility).                                                  |
| `invitesVisibilityList`                                         | array\<number>     | No       | Visibility for pending invitees (invite IDs) — see [Visibility](#visibility).                                               |
| `tagIds`                                                        | array\<number>     | No       | Tag IDs.                                                                                                                    |

<Note>
  **Time format:** `startTime` and `endTime` are 24-hour `HH:mm` time-of-day strings (e.g. `14:00`), **not** ISO 8601 datetimes. The calendar date is taken from `day_id`.

  **Travel items require an origin:** when `type` is a travel item type (item types **2–6**, e.g. drive, flight, walk), `origin` is **required** (and `destination` is normally included). Each is a `{ formatted_address, viewport, timeZone }` object. Omitting `origin` on a travel item returns `400 VALIDATION_ERROR` — *"Travel items (type 2-6) require an origin"*.
</Note>

**Response `data`:** `{ "id": 9021 }`.

### Visibility

Four fields control who on the tour can see an item:

| Field                   | Meaning                                                                                                                                                                 |
| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `isEveryone: true`      | Visible to every tour member.                                                                                                                                           |
| `isAdminsOnly: true`    | Visible to tour admins only.                                                                                                                                            |
| `visibilityList`        | Visible to the listed members. Values are **user UUIDs** — get them from [`GET /v1/tours/{tourId}/users`](/endpoints/tours#list-tour-members) (`tour_users[].user.id`). |
| `invitesVisibilityList` | Extends visibility to **pending invitees** (people invited but not yet joined). Values are invite IDs from the same endpoint (`pending_invites[].id`).                  |

<Warning>
  **If you send no visibility fields at all, the item is NOT visible to everyone** — `isEveryone` defaults to `false`, so regular tour members won't see it (admins and the creator still do). Most integrations should send `isEveryone: true` explicitly unless they're targeting specific members.

  Also: `isEveryone: true` and `isAdminsOnly: true` together return `400` (conflicting flags) — send at most one of the two.
</Warning>

### Attachments

Attachments are Daysync-hosted. Upload a file with [`POST /v1/attachments`](/endpoints/attachments) (which fetches a URL and stores the file), then pass the returned `link` here. `link` is a Daysync storage key, **not** an external URL:

```json theme={null}
"attachments": [
  {
    "name": "Stage plot",
    "link": "attachments/8f3c…-stage-plot.pdf",
    "fileName": "stage-plot.pdf",
    "fileSize": 482133,
    "description": "Rev 3 — updated monitor positions"
  }
]
```

Only `link` is required (get it from [`POST /v1/attachments`](/endpoints/attachments)). `fileSize` is in bytes.

<Note>
  Don't pass an external URL (e.g. your own CDN link) as `link` — Daysync treats `link` as one of its own storage keys and builds the public URL from it, so a foreign URL renders broken. Always upload via [`POST /v1/attachments`](/endpoints/attachments) first.
</Note>

***

## Update a schedule item

```text theme={null}
PUT /v1/schedule/items/{itemId}
```

**Scope:** `schedule.write`

**Path parameters**

| Name     | Type    | Description                  |
| -------- | ------- | ---------------------------- |
| `itemId` | integer | The schedule item to update. |

**Body** — the update input is a **different, narrower set** than create. Fields not listed below cannot be changed via update.

| Field                                                           | Type               | Required | Description                                                                                                     |
| --------------------------------------------------------------- | ------------------ | -------- | --------------------------------------------------------------------------------------------------------------- |
| `name`                                                          | string             | No       | Item title.                                                                                                     |
| `status`                                                        | boolean            | No       | Status flag.                                                                                                    |
| `statusTypeId`                                                  | number             | No       | Status type — [valid values](/field-reference#status-types-statustypeid).                                       |
| `startTime`                                                     | string (`HH:mm`)   | No       | Start time as a 24-hour time-of-day, e.g. `14:00`.                                                              |
| `endTime`                                                       | string (`HH:mm`)   | No       | End time as a 24-hour time-of-day, e.g. `15:00`.                                                                |
| `startTimeTypeId`                                               | number             | No       | Start-time type — [valid values](/field-reference#time-types-starttimetypeid-endtimetypeid).                    |
| `endTimeTypeId`                                                 | number             | No       | End-time type — [valid values](/field-reference#time-types-starttimetypeid-endtimetypeid).                      |
| `allDay`                                                        | boolean            | No       | All-day item.                                                                                                   |
| `timeZoneStart`                                                 | string (IANA)      | No       | Start time zone.                                                                                                |
| `timeZoneEnd`                                                   | string (IANA)      | No       | End time zone.                                                                                                  |
| `location`                                                      | string             | No       | Display location.                                                                                               |
| `coordinates`                                                   | `{ lat, lng }`     | No       | Location coordinates.                                                                                           |
| `notes`                                                         | string             | No       | Free-text notes.                                                                                                |
| `day_id`                                                        | number             | No       | Move to a different day.                                                                                        |
| `itemColorId`                                                   | number             | No       | Colour tag — [valid values](/field-reference#item-colors-itemcolorid).                                          |
| `googlemaps_uri`                                                | string             | No       | Google Maps link.                                                                                               |
| `origin` / `destination`                                        | Location           | No       | For travel items: `{ formatted_address, viewport, timeZone }`.                                                  |
| `travelbreaks`                                                  | array              | No       | `{ formatted_address, viewport, timeZone }` entries.                                                            |
| `traveltype`                                                    | number             | No       | Travel mode — [valid values](/field-reference#travel-types-traveltype).                                         |
| `providerName`, `bookingReference`, `plateNumber`, `driverName` | string             | No       | Travel/provider metadata.                                                                                       |
| `traveldistance`, `travelduration`                              | number             | No       | Travel metrics.                                                                                                 |
| `isRouteAutoCalculated`                                         | boolean            | No       | Auto-calculated route flag.                                                                                     |
| `reminder`                                                      | array\<Reminder>   | No       | `{ duration, typeId, description }` entries — [typeId values](/field-reference#reminder-types-reminder-typeid). |
| `attachment`                                                    | Attachment         | No       | Single attachment (same upsert semantics as `attachments`).                                                     |
| `attachments`                                                   | array\<Attachment> | No       | Attachment upserts — see note below.                                                                            |
| `isEveryone` / `isAdminsOnly`                                   | boolean            | No       | Visibility shortcuts — see [Visibility](#visibility). At most one may be `true`.                                |
| `visibilityList`                                                | array\<string>     | No       | Explicit per-user visibility (user UUIDs).                                                                      |
| `invitesVisibilityList`                                         | array\<number>     | No       | Visibility for pending invitees (invite IDs).                                                                   |

<Note>
  **Not available on update:** `tour_id`, `type`. These are set at creation time only. The `itemId` is taken from the URL path — do **not** send it in the request body.
</Note>

<Note>
  **Attachment upserts on update** — each entry in `attachments` is processed by shape:

  * **No `id`** → creates a new attachment and links it to the item.
  * **With `id`** → updates that existing attachment's fields.
  * **With `id` and `"deleted": true`** → permanently removes that attachment from the item.

  ```json theme={null}
  "attachments": [
    { "name": "New rider", "link": "https://…/rider-v2.pdf" },
    { "id": 311, "description": "Updated description" },
    { "id": 290, "deleted": true }
  ]
  ```

  Attachment `id` values come from the item's `attachments` in the [list response](#list-schedule-items).
</Note>

**Response `data`:** `{ "id": 9021 }`.

***

## Delete a schedule item

```text theme={null}
DELETE /v1/schedule/items/{itemId}
```

**Scope:** `schedule.write`

**Path parameters**

| Name     | Type    | Description                  |
| -------- | ------- | ---------------------------- |
| `itemId` | integer | The schedule item to delete. |

**Response `data`:** none.

***

See also: [Tours](/endpoints/tours), [Venues](/endpoints/venues).
