A venue is a location associated with a tour day — the room, hall, or site for an event. Venue IDs are integers.
All endpoints require the standard authentication headers.
List venues
GET /v1/tours/{tourId}/venues
Returns the venues for a tour.
Scope: venues.read
Example
curl "$BASE/v1/tours/2f1c…/venues" \
-H "x-api-key: $KEY" -H "x-api-secret: $SECRET" -H "Authorization: Bearer $TOKEN"
Path parameters
| Name | Type | Description |
|---|
tourId | string (UUID) | The tour. |
Response data — array of venues:
{
"id": 512,
"title": "Main Hall",
"status": true,
"notes": "Capacity confirmed",
"image": "https://…",
"capacity": 1200,
"formatted_address": "123 Main St",
"city": "Sydney",
"zip_code": "2000",
"country": "Australia",
"state": "NSW",
"timezone": "Australia/Sydney",
"coordinates": { "lat": -33.85, "lng": 151.21 },
"venue_type": { "id": 32, "type": "Theatre" },
"venue_category": { "id": 1, "type": "commercial" },
"created_by": { "id": "…", "firstname": "Jane", "lastname": "Doe" },
"day": { "id": 1843, "name": "Day 1", "date": "2026-06-01T00:00:00Z" },
"tour": { "id": "2f1c…", "name": "Spring Tour 2026" },
"is_deleted": false,
"updated_at": "2026-05-20T08:00:00Z",
"is_everyone": true,
"is_admin_only": false
}
Create a venue
Scope: venues.write
Body
| Field | Type | Required | Description |
|---|
title | string | Yes | Venue name. |
tour_id | string (UUID) | Yes | Tour the venue belongs to. |
day_id | number | Yes | Day the venue is on. |
status | boolean | No | Status flag. |
statusTypeId | number | No | Status type — valid values (same table as schedule items). |
capacity | number | No | Venue capacity. |
venueTypeId | number | No | Venue type — valid values. |
venueCategoryId | number | Yes* | Venue category — valid values. *Optional at the schema level but enforced downstream — creates fail without a valid value (see note below). |
ageRestrictionId | number | No | Age restriction — valid values. |
location | Location | No | Address object — see Accommodation: Location structure for the full schema. geometry.location and geometry.viewport are required. |
notes | string | No | Free-text notes. |
image | string | No | Image URL. |
attachments | array<Attachment> | No | { link, fileSize, … }. Get link from POST /v1/attachments. |
isEveryone / isAdminsOnly | boolean | No | Visibility shortcuts. |
visibility_list | array<string> | No | Explicit user visibility. |
A valid venueCategoryId (see Field Reference) is required in practice — creating a venue without one, or with an unknown value, fails.
The image field does not host your image. When you pass image, the API stores a generated S3 path derived from the venue title (e.g. …/venue/<title>_<timestamp>.jpeg) instead of your URL, and it does not upload any image bytes — so the path points to an object that doesn’t exist and the image renders blank. To attach an image (or any file) to a venue, upload it with POST /v1/attachments and pass the returned link in attachments instead. The dedicated image field itself remains app-only — omit it. (Known gap for the image field — flagged to the Daysync team.)
Response data: { "id": 512 }.
Update a venue
Scope: venues.write
Path parameters
| Name | Type | Description |
|---|
venueId | integer | The venue to update. |
Body — all create fields except tour_id and day_id (which are set at creation time only). All fields are optional on update; send only the fields you want to change.
The venueId is taken from the URL path — do not send it in the request body.
Response data: { "id": 512 }.
Delete a venue
DELETE /v1/venues/{venueId}
Scope: venues.write
Path parameters
| Name | Type | Description |
|---|
venueId | integer | The venue to delete. |
Response data: none.
See also: Tours, Accommodation.