Event FAQs
GET
/v1/events/{slug}/faqThe event's FAQs, in the organiser's own categories and order.
Answers arrive as pre-rendered, sanitised HTML in answerHtml, so you can inject them directly without running a rich-text renderer of your own.
On the web surface the response carries an FAQPage JSON-LD block.
Send ?surface=webOmit it and the request is treated as coming from the mobile app, which is gated on a different visibility setting — so a perfectly live event can return
404 not_found for no visible reason.Request
curl -sS \
-H 'X-Grofomo-Key: pk_live_YOUR_PUBLISHABLE_KEY' \
'https://api.grofomo.com/v1/events/summer-fest/faq?surface=web'Path parameters
slugstringrequired- The event's URL slug. Globally unique, and fixed once the event is created. Example: `summer-fest`.
Query parameters
surface'web'required- Must be `web` for a website. Omit it and you get the mobile-app surface, which is gated on a different visibility setting — so a perfectly live event can return 404. Example: `web`.
Response
200 OK
{
"apiVersion": 1,
"data": {
"eventId": "6f1c8e2a-4b3d-4c9e-9f21-8a7d5e0b1c34",
"surface": "web",
"categories": [
{
"id": "getting-there",
"name": "Getting there",
"faqs": [
{
"id": "72e4c6a8-3d5f-4b90-9a1c-6e8d0f2b4a37",
"question": "Is there parking on site?",
"answerDoc": {
"type": "doc",
"content": [
{
"type": "paragraph",
"content": [
{
"type": "text",
"text": "Yes, but it must be booked in advance through the "
},
{
"type": "text",
"text": "ticket store",
"marks": [
{
"type": "link",
"attrs": {
"href": "https://grfm.to/e/summer-fest"
}
}
]
},
{
"type": "text",
"text": ". Gates open at 10:00 each day."
}
]
}
]
},
"answerPlain": "Yes, but it must be booked in advance through the ticket store. Gates open at 10:00 each day.",
"answerHtml": "<p>Yes, but it must be booked in advance through the <a href=\"https://grfm.to/e/summer-fest\">ticket store</a>. Gates open at 10:00 each day.</p>",
"updatedAt": "2026-05-14T16:02:00.000Z"
}
]
},
{
"id": null,
"name": "On the day",
"faqs": [
{
"id": "e8a0c2d4-7f9b-4d51-8c3e-9b7f5d1a3c48",
"question": "Can I bring my own drinks?",
"answerDoc": {
"type": "doc",
"content": [
{
"type": "paragraph",
"content": [
{
"type": "text",
"text": "Sealed water only, up to 500ml. Everything else is available on site."
}
]
}
]
},
"answerPlain": "Sealed water only, up to 500ml. Everything else is available on site.",
"answerHtml": "<p>Sealed water only, up to 500ml. Everything else is available on site.</p>",
"updatedAt": "2026-05-14T16:04:00.000Z"
}
]
}
],
"schemaOrg": {
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Is there parking on site?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes, but it must be booked in advance through the ticket store."
}
}
]
},
"lastUpdatedAt": "2026-05-14T16:04:00.000Z",
"generatedAt": "2026-06-01T09:15:00.000Z"
}
}groups[]arraymay be absent- FAQ categories, in the organiser's order.
groups[].namestringmay be absent- Category heading, e.g. "Getting there".
groups[].items[]arraymay be absent- The questions in that category.
groups[].items[].questionstringmay be absent- The question text.
groups[].items[].answerHtmlstringmay be absent- Sanitised HTML — safe to inject directly.
Generated from EventFaqsResponse
Structured data
The response carries a ready-made FAQPage JSON-LD block in schemaOrg. Emitted on the web surface. Drop it into a <script type="application/ld+json"> tag and search engines can read your lineup without you modelling any of it yourself.
Errors
unauthorizedHTTP 401- No key was sent and the organiser requires one — or the key is invalid, revoked, belongs to another organisation, or is scoped to a different event.
origin_not_allowedHTTP 403- Your site's domain is not on the organiser's allowed list. Browser calls only: a server sends no Origin header and is unaffected.
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.