Events & Bookings
Events
The Events API allows you to retrieve information about events, sessions, and activities run by your organisation. Events include all scheduled activities, workshops, classes, and sessions.
List Events
Retrieve a paginated list of events with optional filtering.
Endpoint
GET /api/v1/events
Query Parameters
Pagination:
limit(number, default: 100, max: 250) - Maximum number of events to returnoffset(number, default: 0) - Number of events to skip for pagination
Filtering:
eventId(string) - Filter by specific event IDbookable(boolean) - Filter by whether the event is bookabletags(string) - Filter by event tagsparentEventId(string) - Filter by parent event (for recurring event instances)
Response
{
"events": [
{
"eventId": "event_abc123",
"name": "Weekly Yoga Class",
"managedBy": "org123",
"tags": ["fitness", "wellbeing", "weekly"],
"colour": "#4CAF50",
"start": "2025-01-20T10:00:00.000Z",
"end": "2025-01-20T11:30:00.000Z",
"concluded": null,
"recurrence": {
"type": "weekly",
"recurring": true,
"rrule": "FREQ=WEEKLY;BYDAY=MO"
},
"bookingDetails": {
"description": "A relaxing yoga session suitable for all levels",
"capacityTotal": 20,
"free": false,
"price": 5.00,
"closed": false,
"privateEvent": false,
"bookable": true,
"bookVolunteers": true,
"volunteerCapacityTotal": 2,
"contactEmail": "yoga@example.org",
"contactPhone": "+44 20 7123 4567"
},
"venue": {
"venueId": "venue_xyz789",
"name": "Community Hall",
"address": "45 High Street, London",
"postcode": "SW1A 1AA",
"bookable": true
},
"bookable": true,
"attendees": 15,
"outcomeIds": ["outcome_1", "outcome_2"],
"parentEventId": null,
"created": "2025-01-01T09:00:00.000Z",
"updated": "2025-01-15T14:30:00.000Z"
}
],
"offset": 0,
"limit": 100,
"total": 150
}
Example Requests
List all events:
curl -X GET "https://app.plinth.org.uk/api/v1/events" \
-H "x-api-key: sk_your_api_key"
Filter bookable events:
curl -X GET "https://app.plinth.org.uk/api/v1/events?bookable=true" \
-H "x-api-key: sk_your_api_key"
Filter by tag:
curl -X GET "https://app.plinth.org.uk/api/v1/events?tags=fitness" \
-H "x-api-key: sk_your_api_key"
Get child events of a recurring event:
curl -X GET "https://app.plinth.org.uk/api/v1/events?parentEventId=event_abc123" \
-H "x-api-key: sk_your_api_key"
Response Fields
Event Object
| Field | Type | Description |
|---|---|---|
eventId | string | Unique identifier for the event |
name | string | Event name/title |
managedBy | string | Organisation ID that manages this event |
tags | array | List of tags associated with the event |
colour | string | Hex colour code for display |
start | string | Event start time (ISO 8601) |
end | string | Event end time (ISO 8601) |
concluded | string/null | When the event was concluded, if applicable |
recurrence | object | Recurrence information (see below) |
bookingDetails | object | Booking configuration (see below) |
venue | object | Venue information (see below) |
bookable | boolean | Whether the event accepts bookings |
attendees | number | Current number of attendees |
outcomeIds | array | Associated outcome/impact IDs |
parentEventId | string/null | Parent event ID for recurring instances |
created | string | Creation timestamp (ISO 8601) |
updated | string | Last update timestamp (ISO 8601) |
Recurrence Object
| Field | Type | Description |
|---|---|---|
type | string | Recurrence type (daily, weekly, monthly, etc.) |
recurring | boolean | Whether the event recurs |
rrule | string | iCal RRULE string defining recurrence pattern |
For more details on recurrence patterns, see the Recurrence documentation.
Booking Details Object
| Field | Type | Description |
|---|---|---|
description | string | Event description |
capacityTotal | number | Maximum attendee capacity |
free | boolean | Whether the event is free |
price | number | Price per attendee (if not free) |
closed | boolean | Whether bookings are closed |
privateEvent | boolean | Whether the event is private |
bookable | boolean | Whether online booking is enabled |
bookVolunteers | boolean | Whether volunteers can be booked |
volunteerCapacityTotal | number | Maximum volunteer slots |
contactEmail | string | Contact email for enquiries |
contactPhone | string | Contact phone number |
Venue Object
| Field | Type | Description |
|---|---|---|
venueId | string | Unique venue identifier |
name | string | Venue name |
address | string | Street address |
postcode | string | Postal code |
bookable | boolean | Whether the venue accepts bookings |
Error Responses
| Status | Description |
|---|---|
| 400 | Bad Request - Invalid parameters |
| 401 | Unauthorized - Invalid or missing API key |
| 500 | Internal Server Error |
