Subscribe
Add a feed to Apple Calendar, Google Calendar or Outlook and new events show up on their own. Feeds refresh every few hours.
Embed a widget
Pick a view and filters, then paste the snippet into any page. Browse gives visitors search, date and filter controls and keeps loading events as they scroll, all inside the embed. In Drupal, use the Full HTML text format (or paste the iframe version). The widget sizes itself to its content.
JSON API
Static JSON files, rebuilt on every run. No key needed; CORS is open. Every record carries the same fields — see Fields.
| Endpoint | What it returns |
|---|---|
/api/v1/events.json | Every upcoming occurrence, all fields (closures included, kind: "closure"). Also events.min.json. |
/api/v1/upcoming.json | Next 200 events with repeating tours collapsed to their next date (occurrences = count). |
/api/v1/months/YYYY-MM.json | Events starting in one month. |
/api/v1/sources/{id}.json | One organization's events plus its last-run status. |
/api/v1/sources.json | Every source, when it last succeeded, event count and any error. |
/api/v1/fields.json | The field dictionary. |
/api/v1/review.json | Keyword matches that may not be about TR, and dates read from prose — for staff review. |
/api/v1/widget.json | Slim index the widgets load. |
Sources
Medora partners are included in full. Regional calendars (Dickinson State, Watford City, the Dickinson Press, ND Tourism, Facebook) are filtered to Medora and the towns around it. The same event posted in several places appears once.
| Organization | Type | Events | Last success | Status |
|---|---|---|---|---|
| Loading… | ||||
Fields
The metadata kept for every event.
| Field | Type | Description |
|---|