Exhibitor Manager DOCS & HELP

REST API Endpoints

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.

A fixed contract

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).

MethodExample
Header (recommended)X-EEM-API-Key: eempk_…
HeaderAuthorization: Bearer eempk_…
Parameter (only for tools without headers)?api_key=eempk_… – ends up in server logs
No key in public JavaScript

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

EndpointContent
GET /infoWebsite, 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, /locationsThe five lists with hierarchy (parent). event=ID shows only what this event uses; hide_empty=true hides empty entries.
GET /mapsThe hall plans with SVG address, event and location; event=ID narrows down.
GET /openapiMachine-readable description (OpenAPI 3.1) for Postman, Swagger UI and code generators. Readable without a key.
Internal routes

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

ParameterValuesMeaning
eventIDOnly exhibitors of this event.
type, category, product, locationIDs or slugs, comma-separatedCategories, products and locations include sub-levels (rooms of a hall).
countryIDs, slugs or ISO codescountry=DE,AT
boothbooth numbers, comma-separatedExact match, case doesn’t matter.
searchtextFull text in name, short description and description.
onsite_salesyes · no · unknownSales at booth.
featuredtrue · falseOnly featured or only the others.
visibilitylist (default) · map_only · all“Map only” entries such as stages are not included by default.
program_itemIDOnly exhibitors of this calendar session (with the calendar plugin).
modified_sinceISO 8601Only entries changed since then.
orderby, ordertitle · booth · modified; asc · descDefault: name ascending. booth sorts naturally (A2 before A10).
includedescriptionLong description in lists too.
page, per_pagefrom 1; 1–100, default 50Pagination.
_fieldsfield listOnly the named fields.

/events also knows from, to (YYYY-MM-DD), search and orderby=start|title.

Typical requests
/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=500

An exhibitor in the response

FieldMeaning
id, slug, title, excerptBasic data.
eventThe event (ID and title).
booths, locationsBooth numbers and locations – null if the event hides booth information.
types, categories, productsEach with id, slug, name.
countryName, ISO code and flag address.
onsite_sales, featured, map_onlySales at booth (yes/no/null), featured, “map only”.
color, imageType color and logo (with fallback chain type image → default image).
permalink, urlThe exhibitor page; url is null for “map only”.
Data scopesdescription, gallery, links, contact (with email) – only if switched on in the API tab. With the calendar plugin, also the linked sessions.
modifiedLast change.

Pages, freshness, errors

  • Pages: at most 100 entries; totals in X-WP-Total and X-WP-TotalPages.
  • ETag: sent back as If-None-Match, unchanged data returns a short 304 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 with Retry-After), rest_invalid_param (400), rest_no_route (404, API off).
JavaScript – load all exhibitors of a fair
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;
}
Examples with your data

The back-end help (Exhibitors → Help) contains the same guide with a real event of your website and copyable addresses.