A read-only HTTP API exposing event metadata, schedules, speakers, workshops, partners, and brand info for all GitNation conferences.
Base URL: https://ems.gitnation.org/
All endpoints described in this document are relative to this base.
| Property | Value |
|---|---|
| Protocol | HTTPS only |
| Method | GET for all data endpoints; OPTIONS for CORS preflight. No request body ever required. |
| Format | application/json — dates are ISO 8601 strings (UTC), IDs are integers |
| Authentication | None |
| Rate limits | None enforced |
| Versioning | None |
The API is intended to be called from a server, but also accepts browser requests from allow-listed origins — the official GitNation brand domains, gitnation.com, and localhost in development.
Non-allow-listed origins: If you build a browser-only app on a different origin (e.g. a Vercel preview URL or a custom domain), proxy the calls through your own backend or a serverless function. Direct
fetch()from an unlisted origin will fail CORS.
Most endpoints are nested under /api/events/{eventId}. Get the list of events and their numeric IDs from:
GET /api/events
The slug field (e.g. react-summit-2026, jsnation-2026) is human-readable and can be used to map URLs in your app to event IDs.
Returns all events with their numeric IDs, slugs, dates, location, and brand info.
Returns a single promoted upcoming event, selected automatically based on the requesting brand domain and client geo. Useful for contextual CTAs on brand sites.
All endpoints below are relative to /api/events/{eventId}.
Core event details: name, description, dates, location, and brand tagline.
Brand styling tokens for the event: accentCSS, textColor, backgroundCSS. Use these to render event UI in brand colors without hardcoding per-event values.
Full schedule for the event. Tracks with the same name are merged.
All Discussion Room activities for the event.
All workshops with trainer info, location, time, and package inclusion flag. WorkshopPass and ProWorkshop tiers are sorted first.
Legacy endpoint. Returns only Premium and Public workshops. Kept for migration compatibility — prefer /workshops for new integrations.
Partner list with logo (Cloudinary URL), site URL, description, and theme-aware styling metadata.
Event registrations filtered by role. Pass role=MC (Master of Ceremonies) or role=PC (Program Committee). Returns user profiles and associated tags.
Confirmed speakers for the event, each including their non-draft talks and workshops.
The top speaker by Twitter/X follower count. Includes a badge image URL for use in promotional assets.
Speakers from past events who have been re-assigned to this event.
Returns the 3 oldest published landing pages. Note: ignores {eventId} — the result is global, not scoped to the event.
Returns the next upcoming ticket price increase within a look-ahead window. Default window is 30 days; event 138 uses a 45-day window. Pass periodDays as a query param to override.
GET /api/events/138/price-increase?periodDays=45
cURL — list all events
curl https://ems.gitnation.org/api/eventscURL — full schedule for event 138
curl https://ems.gitnation.org/api/events/138/scheduleBrowser / Node.js (no auth headers needed)
const res = await fetch('https://ems.gitnation.org/api/events/138/speakers');
const speakers = await res.json();| Status | Meaning |
|---|---|
200 OK |
Success |
404 Not Found |
Unknown event ID or no resource matching the path |
405 Method Not Allowed |
A non-GET method was used |
5xx |
Transient server error — retry with exponential backoff |
Error responses do not have a guaranteed JSON shape. Treat any non-2xx status as a failure and do not attempt to parse the body as structured data.