Skip to main content
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 headers.

List schedule items

GET /v1/tours/{tourId}/days/{dayId}/schedule
Returns the schedule items for one day of a tour. Scope: schedule.read Example
curl "$BASE/v1/tours/2f1c…/days/1843/schedule" \
  -H "x-api-key: $KEY" -H "x-api-secret: $SECRET" -H "Authorization: Bearer $TOKEN"
Path parameters
NameTypeDescription
tourIdstring (UUID)The tour.
dayIdintegerThe day within the tour.
Response data — array of schedule items. Each item includes timing, location, routing, and metadata:
{
  "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

POST /v1/schedule/items
Scope: schedule.write Body — common fields (the underlying model supports more; see notes below):
FieldTypeRequiredDescription
tour_idstring (UUID)YesTour the item belongs to.
day_idnumberYesDay the item is on.
namestringYesItem title.
startTimestring (HH:mm)YesStart 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.
startTimeTypeIdnumberYesStart-time type — valid values.
timeZoneStartstring (IANA)YesStart time zone.
endTimestring (HH:mm)NoEnd time as a 24-hour time-of-day, e.g. 15:00.
endTimeTypeIdnumberNoEnd-time type — valid values.
timeZoneEndstring (IANA)NoEnd time zone.
allDaybooleanNoAll-day item.
statusbooleanNoStatus flag.
statusTypeIdnumberNoStatus type — valid values.
locationstringNoDisplay location.
coordinates{ lat, lng }NoLocation coordinates.
notesstringNoFree-text notes.
itemColorIdnumberNoColour tag — valid values.
typenumberNoItem type (1 = regular, 26 = travel) — valid values.
reminderarray<Reminder>No{ duration, typeId, description } entries — typeId values.
attachmentAttachmentNoSingle attachment { link, fileSize, name?, fileName?, description? }.
attachmentsarray<Attachment>NoMultiple attachments (same shape as above).
origin / destinationLocationNoFor travel items: { formatted_address, viewport, timeZone }.
travelbreaksarray<Location>NoIntermediate stops: { formatted_address, viewport, timeZone } entries.
providerName, bookingReference, plateNumber, driverNamestringNoTravel/provider metadata.
traveldistance, traveldurationnumberNoTravel metrics.
traveltypenumberNoTravel mode (Car, Bus, …) — valid values.
isRouteAutoCalculatedbooleanNoWhether route distance/duration were auto-calculated.
googlemaps_uristringNoGoogle Maps URL for the location.
isEveryone / isAdminsOnlybooleanNoVisibility shortcuts — see Visibility below.
visibilityListarray<string>NoExplicit per-user visibility (user UUIDs) — see Visibility.
invitesVisibilityListarray<number>NoVisibility for pending invitees (invite IDs) — see Visibility.
tagIdsarray<number>NoTag IDs.
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”.
Response data: { "id": 9021 }.

Visibility

Four fields control who on the tour can see an item:
FieldMeaning
isEveryone: trueVisible to every tour member.
isAdminsOnly: trueVisible to tour admins only.
visibilityListVisible to the listed members. Values are user UUIDs — get them from GET /v1/tours/{tourId}/users (tour_users[].user.id).
invitesVisibilityListExtends visibility to pending invitees (people invited but not yet joined). Values are invite IDs from the same endpoint (pending_invites[].id).
If you send no visibility fields at all, the item is NOT visible to everyoneisEveryone 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.

Attachments

Attachments are Daysync-hosted. Upload a file with POST /v1/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:
"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). fileSize is in bytes.
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 first.

Update a schedule item

PUT /v1/schedule/items/{itemId}
Scope: schedule.write Path parameters
NameTypeDescription
itemIdintegerThe schedule item to update.
Body — the update input is a different, narrower set than create. Fields not listed below cannot be changed via update.
FieldTypeRequiredDescription
namestringNoItem title.
statusbooleanNoStatus flag.
statusTypeIdnumberNoStatus type — valid values.
startTimestring (HH:mm)NoStart time as a 24-hour time-of-day, e.g. 14:00.
endTimestring (HH:mm)NoEnd time as a 24-hour time-of-day, e.g. 15:00.
startTimeTypeIdnumberNoStart-time type — valid values.
endTimeTypeIdnumberNoEnd-time type — valid values.
allDaybooleanNoAll-day item.
timeZoneStartstring (IANA)NoStart time zone.
timeZoneEndstring (IANA)NoEnd time zone.
locationstringNoDisplay location.
coordinates{ lat, lng }NoLocation coordinates.
notesstringNoFree-text notes.
day_idnumberNoMove to a different day.
itemColorIdnumberNoColour tag — valid values.
googlemaps_uristringNoGoogle Maps link.
origin / destinationLocationNoFor travel items: { formatted_address, viewport, timeZone }.
travelbreaksarrayNo{ formatted_address, viewport, timeZone } entries.
traveltypenumberNoTravel mode — valid values.
providerName, bookingReference, plateNumber, driverNamestringNoTravel/provider metadata.
traveldistance, traveldurationnumberNoTravel metrics.
isRouteAutoCalculatedbooleanNoAuto-calculated route flag.
reminderarray<Reminder>No{ duration, typeId, description } entries — typeId values.
attachmentAttachmentNoSingle attachment (same upsert semantics as attachments).
attachmentsarray<Attachment>NoAttachment upserts — see note below.
isEveryone / isAdminsOnlybooleanNoVisibility shortcuts — see Visibility. At most one may be true.
visibilityListarray<string>NoExplicit per-user visibility (user UUIDs).
invitesVisibilityListarray<number>NoVisibility for pending invitees (invite IDs).
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.
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.
"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.
Response data: { "id": 9021 }.

Delete a schedule item

DELETE /v1/schedule/items/{itemId}
Scope: schedule.write Path parameters
NameTypeDescription
itemIdintegerThe schedule item to delete.
Response data: none.
See also: Tours, Venues.