Announcements
GET
/v1/events/{slug}/broadcastsAnnouncements the organiser has pushed to attendees — stage changes, weather notices, running-order updates.
Good for a live "latest updates" strip during the event itself. Never cached, so it is safe to poll.
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/broadcasts'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": {
"broadcasts": [
{
"id": "0d2f4a6c-8e0b-4c73-9f5a-2c4e6a8d0b59",
"title": "Main Stage running 20 minutes late",
"body": "Weather delay this morning. Everything from 18:00 shifts back by 20 minutes.",
"category": "update",
"sentAt": "2026-07-18T16:42:00.000Z",
"deepLink": "https://grfm.to/e/summer-fest"
},
{
"id": "4a6c8e0d-2f4b-4e95-8a7c-1f3d5b7e9c60",
"title": "Last entry is 21:00",
"body": "Gates close for good at 21:00 tonight. Plan your arrival.",
"category": "reminder",
"sentAt": "2026-07-17T14:00:00.000Z",
"deepLink": null
}
]
}
}broadcastsobject[]broadcasts[].iduuidbroadcasts[].titlestringbroadcasts[].bodystringbroadcasts[].category"reminder" | "update" | "marketing"- What kind of announcement this was. Mirrors the push opt-in it was sent under.
broadcasts[].sentAtstring- When it went out. Newest first.
broadcasts[].deepLinkstring | null- Where the announcement pointed, when it pointed anywhere.
Generated from EventBroadcastIndexResponse
Errors
not_foundHTTP 404- No event with that slug is published on this surface. Check the slug, and check you sent `?surface=web`.
Notes
- Rate limited to roughly 60 requests per minute per caller. Guidance, not a contract — see caching and rate limits.
Cache-Control: no-store