Event detail
GET
/v1/events/{slug}Everything that describes the event itself — name, dates, timezone, venue, stages and the organiser's brand settings.
Usually the first call a site makes.
No key is required today — send one anywayThe Grofomo mobile app still calls this endpoint without a credential, so it cannot be locked down yet. It will be. A key sent now is accepted and ignored, so an integration built this way keeps working on the day enforcement lands; one built without a key will start returning
401 unauthorized.Request
curl -sS \
-H 'X-Grofomo-Key: pk_live_YOUR_PUBLISHABLE_KEY' \
'https://api.grofomo.com/v1/events/summer-fest'Path parameters
slugstringrequired- The event's URL slug. Globally unique, and fixed once the event is created. Example: `summer-fest`.
Response
200 OK
{
"apiVersion": 1,
"data": {
"id": "6f1c8e2a-4b3d-4c9e-9f21-8a7d5e0b1c34",
"slug": "summer-fest",
"name": "Summer Fest",
"description": "Three days of house, disco and breaks across two stages on the edge of Bristol, with camping from Friday morning.",
"summary": "Three days, two stages, Ashton Court.",
"ticketUrl": "https://grfm.to/e/summer-fest",
"capacity": 8000,
"familyFriendly": true,
"musicGenres": [
"House",
"Disco",
"Breaks"
],
"timezone": "Europe/London",
"dates": {
"startDate": "2026-07-17",
"endDate": "2026-07-19",
"doorsOpen": "12:00",
"doorsClose": "02:00",
"timezone": "Europe/London",
"singleDay": false
},
"venue": {
"name": "Ashton Court",
"address": "Ashton Court Estate",
"city": "Bristol",
"region": "England",
"postcode": "BS41 9JN",
"country": "GB",
"indoorOutdoor": "outdoor"
},
"stages": [
{
"id": "main-stage",
"name": "Main Stage",
"type": "outdoor",
"description": "The big one, in the meadow.",
"imageUrl": "https://cdn.grofomo.com/summer-fest/stages/main.jpg"
},
{
"id": "the-orchard",
"name": "The Orchard",
"type": "tent",
"description": null,
"imageUrl": null
}
],
"brand": {
"brandColors": [
"#FFEA00",
"#080808"
],
"logoUrl": "https://cdn.grofomo.com/summer-fest/brand/logo.png",
"logoVectorUrl": "https://cdn.grofomo.com/summer-fest/brand/logo.svg",
"artworkUrl": "https://cdn.grofomo.com/summer-fest/brand/poster.jpg",
"coverArtUrl": "https://cdn.grofomo.com/summer-fest/brand/cover.jpg",
"backgroundColor": "#080808",
"textColor": "#FAFAF7",
"accentColor": "#FFEA00",
"fontFamily": "Syne",
"socialLinks": {
"instagram": "https://instagram.com/summerfest",
"spotify": "https://open.spotify.com/playlist/summerfest"
},
"mapImageUrl": "https://cdn.grofomo.com/summer-fest/brand/site-map.png",
"themeMode": "brand",
"fonts": {
"headline": {
"family": "Syne",
"url": "https://fonts.gstatic.com/s/syne/v22/8vIS7w4qzmVxsWxjBZRjr0FKM_04uT6kR47NCV5Z.ttf",
"weight": 700
},
"body": null
}
},
"community": {
"chatUrl": "https://chat.whatsapp.com/summerfest",
"chatPlatform": "whatsapp",
"chatLabel": "Summer Fest group chat"
},
"organiser": {
"id": "b2d4a6f8-1c3e-4a5b-8d7f-2e9c0a1b3d45",
"name": "Riot Promotions",
"slug": "riot-promotions",
"logoUrl": "https://cdn.grofomo.com/riot-promotions/logo.png"
}
}
}iduuidslugstring- The URL slug, fixed once the event is created.
namestringdescriptionstring | null- Long-form event copy.
summarystring | null- One line, for a card or a meta description.
ticketUrlstring | null- Where to send someone to buy. Null when no tickets are on sale.
capacitynumber | nullfamilyFriendlyboolean | nullmusicGenresstring[]- Free-text genre tags for the event as a whole.
timezonestring- IANA zone, e.g. "Europe/London". Every local time in the API is in it.
datesobjectdates.startDatestring | null- First day, as `YYYY-MM-DD`.
dates.endDatestring | null- Last day, as `YYYY-MM-DD`. Equal to `startDate` for a one-day event.
dates.doorsOpenstring | null- Local opening time as `HH:MM`.
dates.doorsClosestring | null- Local closing time as `HH:MM`. May be after midnight.
dates.timezonestring | null- IANA zone, e.g. "Europe/London". Every `HH:MM` here is local to it.
dates.singleDayboolean | nullvenueobjectvenue.namestring | nullvenue.addressstring | null- Street address, without city or postcode.
venue.citystring | nullvenue.regionstring | null- State, province or county.
venue.postcodestring | nullvenue.countrystring | null- Raw ISO 3166-1 alpha-2 code, e.g. "GB".
venue.indoorOutdoorstring | null- Free text, e.g. "outdoor".
stagesobject[]- Every stage. A lineup slot names its stage by `name`, not by `id`.
stages[].idstring- Stable within the event. Matches `stage` on a lineup slot by name, not by id.
stages[].namestringstages[].typestring | null- Free text, e.g. "tent".
stages[].descriptionstring | nullstages[].imageUrlstring | nullbrandobject- The organiser's colours, logos and fonts, so your site can match the event's identity.
brand.brandColorsstring[]brand.logoUrlstring | nullbrand.logoVectorUrlstring | nullbrand.artworkUrlstring | nullbrand.coverArtUrlstring | nullbrand.backgroundColorstring | nullbrand.textColorstring | nullbrand.accentColorstring | nullbrand.fontFamilystring | nullbrand.socialLinksobjectbrand.mapImageUrlstring | nullbrand.themeMode"neutral" | "brand" | "brand-full"brand.fontsobjectbrand.fonts.headlineobject | nullbrand.fonts.headline.familystringbrand.fonts.headline.urlstringbrand.fonts.headline.weightnumberbrand.fonts.bodyobject | nullbrand.fonts.body.familystringbrand.fonts.body.urlstringbrand.fonts.body.weightnumbercommunityobjectcommunity.chatUrlstring | null- Invite link to the attendee group chat, when the organiser runs one.
community.chatPlatform"whatsapp" | "telegram" | "discord" | "signal" | … | null- Which platform the chat is on, so you can show the right icon.
community.chatLabelstring | null- Call-to-action text, e.g. "Summer Fest group chat".
organiserobject | null- Present only when the organiser has opted into a public profile — i.e. only when there is a page to link to.
organiser.iduuidorganiser.namestringorganiser.slugstringorganiser.logoUrlstring | null
Generated from EventDetailResponse
Errors
not_foundHTTP 404- No event with that slug is published on this surface. Check the slug, and check you sent `?surface=web`.