Documentation /Reference
The public REST API
The booking form and the calendar read your events from four public endpoints. Anything else can read them too: a theme, a page builder's query loop, an app. They need no key, they only read, and they show what a visitor of the site may see. A closed or cancelled event, or one only visible to staff, is not in them.
Every response is wrapped the same way:
{ "success": true, "message": "", "data": { ... } }
Booking is not part of this. A booking goes through the booking form, which holds tickets, checks the captcha and takes the payment.
The events list
GET /wp-json/eventnetic/v1/public/events
Upcoming events, soonest first.
| Parameter | What it does |
|---|---|
limit |
How many per page, 1 to 48. Default 9. |
skip |
How many to skip, for the next page. |
search |
Words in the title or the address. |
categories[] |
Category slugs, as in the events shortcode. |
from, to |
Only events with a date in this range, YYYY-MM-DD. |
past |
1 to include events that have already happened. |
mode[] |
Only events held this way: venue, online, hybrid. mode[]=online&mode[]=hybrid is everything that can be attended online. |
data.data is the list and data.meta holds total, skip and limit. Each
event has:
| Field | |
|---|---|
id, title, excerpt, image, url |
What it is called, its picture and its page |
occurrences |
first, next and last date, each with startDate, endDate, startTime, endTime, and count |
isFullDay |
No times to show |
locationName, address |
The venue's name and its address |
eventMode |
venue, online or hybrid |
priceFrom |
The cheapest ticket this visitor may buy |
remainingSlots, soldOut |
What is left on the emptiest date |
categories |
Name, slug and colour of each |
occurrences is a summary rather than a list, so you can ask for the next date
by name instead of remembering which position means "next".
One event
GET /wp-json/eventnetic/v1/public/events/{id}
Everything the booking form needs: title, description, image,
locationName, address, eventMode, bookingOpen and, when it is not,
closedReason, tickets with their prices and what is left, paymentMethods,
and dates, every date of the event as a list, each with startDate,
startTime, endDate, endTime, title, locationName, remaining and
whether it is canceled, past or closed.
A package is in tickets too, with kind: "package". coverageMode says which
dates it is for: all for the whole series, fixed for the dates listed in
coverageDates (ids from dates), and count for a pass of coverageCount
dates the visitor picks (with 1, it is a bundle of tickets for one date). A page that lists runs of a course can show one row per
package and open the booking form on it with package="…", see the
shortcode reference.
The calendar
GET /wp-json/eventnetic/v1/public/events/calendar?start=2026-10-01&end=2026-10-31
One entry per date, not per event, between start and end (at most 62 days
apart), optionally narrowed with categories[]. Each has eventId, title,
sessionTitle, the dates and times, color, url, startPrice, soldOut,
image, address and excerpt.
Categories
GET /wp-json/eventnetic/v1/public/events/categories
The categories that have something bookable in them, with name, slug and
color.
In Bricks
An API query loop (Bricks 2.1 and later) reads nested values with the pipe character:
{query_api @key:'title'}
{query_api @key:'locationName'}
{query_api @key:'occurrences|next|startDate'}
{query_api @key:'occurrences|next|startTime'}
{query_api @key:'occurrences|count'}
For every date of one event, query the single-event endpoint, set the response
path to dates, and use {query_api @key:'startDate'} inside the loop. Bricks
does not run an API loop inside another, so that list belongs on the event's own
page.
Signed-in visitors
The endpoints answer as the visitor who asks. A ticket sold only to some
WordPress roles shows for a member when the request carries their login, which
the booking form does by itself. A request from outside the browser is a guest,
so the priceFrom it gets is the guests' price.