The public interface under event-exhibitor-manager/public/v1 delivers exhibitors, events, lists and hall plans read-only as JSON – for fair apps, partner websites and info screens. Switching it on and issuing keys: API tab.
The data format is independent of the directory display. Fields may be added but are never renamed or removed. If a field is missing, the corresponding data scope is switched off.
Address and key
Base address: https://your-site.com/wp-json/event-exhibitor-manager/public/v1 (with “Plain” permalinks ?rest_route=/event-exhibitor-manager/public/v1/… – the address in the API tab is always correct).
| Method | Example |
|---|---|
| Header (recommended) | X-EEM-API-Key: eempk_… |
| Header | Authorization: Bearer eempk_… |
| Parameter (only for tools without headers) | ?api_key=eempk_… – ends up in server logs |
For widgets in your visitors’ browsers, choose “Public” access or fetch the data via a server. Keys of the calendar plugin don’t work here.
Endpoints
| Endpoint | Content |
|---|---|
GET /info | Website, API version, data scope, counts. Readable without a key. |
GET /events, /events/{id} | The events with dates, image, whether booth information is hidden, and the linked calendar main event. |
GET /exhibitors, /exhibitors/{id} | The exhibitors, paginated and filterable. |
GET /types, /categories, /products, /countries, /locations | The five lists with hierarchy (parent). event=ID shows only what this event uses; hide_empty=true hides empty entries. |
GET /maps | The hall plans with SVG address, event and location; event=ID narrows down. |
GET /openapi | Machine-readable description (OpenAPI 3.1) for Postman, Swagger UI and code generators. Readable without a key. |
Under event-exhibitor/v1 (/all, /maps) are the directory’s own data sources. They are not a contract and may change – always use public/v1 for your own applications.
Parameters of /exhibitors
| Parameter | Values | Meaning |
|---|---|---|
event | ID | Only exhibitors of this event. |
type, category, product, location | IDs or slugs, comma-separated | Categories, products and locations include sub-levels (rooms of a hall). |
country | IDs, slugs or ISO codes | country=DE,AT |
booth | booth numbers, comma-separated | Exact match, case doesn’t matter. |
search | text | Full text in name, short description and description. |
onsite_sales | yes · no · unknown | Sales at booth. |
featured | true · false | Only featured or only the others. |
visibility | list (default) · map_only · all | “Map only” entries such as stages are not included by default. |
program_item | ID | Only exhibitors of this calendar session (with the calendar plugin). |
modified_since | ISO 8601 | Only entries changed since then. |
orderby, order | title · booth · modified; asc · desc | Default: name ascending. booth sorts naturally (A2 before A10). |
include | description | Long description in lists too. |
page, per_page | from 1; 1–100, default 50 | Pagination. |
_fields | field list | Only the named fields. |
/events also knows from, to (YYYY-MM-DD), search and orderby=start|title.
/exhibitors?event=500&per_page=100
/exhibitors?event=500&location=main-hall&orderby=booth
/exhibitors?event=500&featured=true
/exhibitors?booth=H02
/exhibitors?event=500&visibility=map_only
/locations?event=500
/maps?event=500An exhibitor in the response
| Field | Meaning |
|---|---|
id, slug, title, excerpt | Basic data. |
event | The event (ID and title). |
booths, locations | Booth numbers and locations – null if the event hides booth information. |
types, categories, products | Each with id, slug, name. |
country | Name, ISO code and flag address. |
onsite_sales, featured, map_only | Sales at booth (yes/no/null), featured, “map only”. |
color, image | Type color and logo (with fallback chain type image → default image). |
permalink, url | The exhibitor page; url is null for “map only”. |
| Data scopes | description, gallery, links, contact (with email) – only if switched on in the API tab. With the calendar plugin, also the linked sessions. |
modified | Last change. |
Pages, freshness, errors
- Pages: at most 100 entries; totals in
X-WP-TotalandX-WP-TotalPages. - ETag: sent back as
If-None-Match, unchanged data returns a short304 Not Modified. - Deleted exhibitors simply no longer appear with
modified_since– reload the full list regularly and remove missing IDs. - Errors arrive as JSON with
code,message,data.status:eem_api_key_missing/eem_api_key_invalid(401),eem_api_not_found(404),eem_api_rate_limited(429 withRetry-After),rest_invalid_param(400),rest_no_route(404, API off).
const BASE = 'https://your-site.com/wp-json/event-exhibitor-manager/public/v1';
const KEY = 'eempk_…';
async function loadExhibitors(eventId) {
const list = [];
for (let page = 1; ; page++) {
const res = await fetch(BASE + '/exhibitors?event=' + eventId + '&per_page=100&page=' + page, {
headers: { 'X-EEM-API-Key': KEY }
});
if (!res.ok) throw new Error('HTTP ' + res.status);
list.push(...await res.json());
if (page >= Number(res.headers.get('X-WP-TotalPages'))) break;
}
return list;
}The back-end help (Exhibitors → Help) contains the same guide with a real event of your website and copyable addresses.