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 return
  • offset (number, default: 0) - Number of events to skip for pagination

Filtering:

  • eventId (string) - Filter by specific event ID
  • bookable (boolean) - Filter by whether the event is bookable
  • tags (string) - Filter by event tags
  • parentEventId (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

FieldTypeDescription
eventIdstringUnique identifier for the event
namestringEvent name/title
managedBystringOrganisation ID that manages this event
tagsarrayList of tags associated with the event
colourstringHex colour code for display
startstringEvent start time (ISO 8601)
endstringEvent end time (ISO 8601)
concludedstring/nullWhen the event was concluded, if applicable
recurrenceobjectRecurrence information (see below)
bookingDetailsobjectBooking configuration (see below)
venueobjectVenue information (see below)
bookablebooleanWhether the event accepts bookings
attendeesnumberCurrent number of attendees
outcomeIdsarrayAssociated outcome/impact IDs
parentEventIdstring/nullParent event ID for recurring instances
createdstringCreation timestamp (ISO 8601)
updatedstringLast update timestamp (ISO 8601)

Recurrence Object

FieldTypeDescription
typestringRecurrence type (daily, weekly, monthly, etc.)
recurringbooleanWhether the event recurs
rrulestringiCal RRULE string defining recurrence pattern

For more details on recurrence patterns, see the Recurrence documentation.

Booking Details Object

FieldTypeDescription
descriptionstringEvent description
capacityTotalnumberMaximum attendee capacity
freebooleanWhether the event is free
pricenumberPrice per attendee (if not free)
closedbooleanWhether bookings are closed
privateEventbooleanWhether the event is private
bookablebooleanWhether online booking is enabled
bookVolunteersbooleanWhether volunteers can be booked
volunteerCapacityTotalnumberMaximum volunteer slots
contactEmailstringContact email for enquiries
contactPhonestringContact phone number

Venue Object

FieldTypeDescription
venueIdstringUnique venue identifier
namestringVenue name
addressstringStreet address
postcodestringPostal code
bookablebooleanWhether the venue accepts bookings

Error Responses

StatusDescription
400Bad Request - Invalid parameters
401Unauthorized - Invalid or missing API key
500Internal Server Error
Previous
Partners