Developer API
Public read-only HTTP API for activities, stats, and integrations.
Overview
SHOWUPAT exposes read-only JSON endpoints for crawlers, widgets, and custom integrations. No API key is required for public read endpoints.
Write operations (create Activity, check-in, etc.) require authenticated sessions and are not part of the public API.
GET /api/public/platform-stats
Returns aggregate platform statistics for the landing page and external dashboards.
- Response: activitiesHosted, participants, showUpRate, and related counters.
- Cache-friendly; suitable for hourly polling.
GET /api/public/activities
Lists open PUBLIC Activities. Supports text search with synonym expansion and optional geo radius filtering.
- q — search query (synonyms: basket/hoops, football/soccer by locale, padel, running, etc.)
- lat, lng, radiusKm — filter and sort by distance (default radius 15 km, max 200)
- limit — max results (default 20 without q, up to 100 with q)
- lang — locale hint for synonym expansion (en, fr, de, es, ja, pt, lb)
- mode — PHYSICAL, DIGITAL, or HYBRID
- facet / facets — filter by facet key:value (e.g. facet=sport:basketball or facets=sport:padel,level:beginner)
- digitalProvider, digitalCategory — filter digital Activities
- from, to — ISO-8601 scheduledAt window
- Response: { count, activities[] } with title, schedule, mode, location, facets, publicUrl, creator, distanceKm when geo filtered
OpenAPI specification
Machine-readable OpenAPI 3.1 document at GET /api/public/openapi.json describes all public read endpoints, query parameters, and response schemas.
GET /api/public/activities/[shareToken]
Full public Activity detail for a single share token, including registration context when applicable.
GET /api/public/activities/[shareToken]/ics
Calendar export in iCalendar (.ics) format for any public Activity.
GET /api/public/places/search
Search place labels and coordinates for widgets and activity creation flows. Nominatim-backed, read-only.
- q — place query (2–120 characters, required)
- limit — max results (default 6, max 10)
- Response: { count, places[] } with placeId, label, address, latitude, longitude
GET /api/public/places/reverse
Resolve lat/lng to a human-readable place label.
- lat, lng — required coordinates
- Response: { place } or { place: null }
Organizer webhooks (live)
Authenticated organizers subscribe to HTTPS webhook deliveries for their Activities. Event types: registration.confirmed, attendance.showed_up, activity.cancelled.
Subscribe with POST /api/me/webhooks { url, events, secret? }. List with GET /api/me/webhooks. Delete with DELETE /api/me/webhooks/[id].
Deliveries POST JSON with X-Showupat-Signature (HMAC-SHA256), X-Showupat-Event, and X-Showupat-Delivery-Id headers. Catalog: GET /api/public/webhooks/events.
GET /api/public/countries
List or search ISO countries with localized names and flag emoji.
- q — optional search by name or code
- lang — locale for labels (en, fr, de, es, ja, pt, lb)
- limit — 1–300 (default 300 without q, 20 with q)
- Response: { count, countries[] } with code, name, flag
MCP manifest
GET /api/public/mcp.json exposes tools (list_public_activities, search_places, list_countries, platform_stats) and resources (llms.txt, openapi, ai-docs). Human guide at /docs/mcp.
GET /api/discover
Authenticated discover with facet filters, digital provider filters, and eligibility when logged in.
For anonymous integrations prefer GET /api/public/activities.
Interactive explorer
Try endpoints live at /docs/developers#openapi-explorer. OpenAPI source: GET /api/public/openapi.json.
Example requests
- curl 'https://showupat.com/api/public/platform-stats'
- curl 'https://showupat.com/api/public/activities?q=basketball&limit=10'
- curl 'https://showupat.com/api/public/activities?lat=48.8566&lng=2.3522&radiusKm=10'
- curl 'https://showupat.com/api/public/activities?facet=sport:basketball&mode=PHYSICAL'
- curl 'https://showupat.com/api/public/places/search?q=Paris'
- curl 'https://showupat.com/api/public/places/reverse?lat=48.8566&lng=2.3522'
- curl 'https://showupat.com/api/public/countries?q=fr'
- curl 'https://showupat.com/api/public/webhooks/events'
- curl 'https://showupat.com/api/public/mcp.json'
- curl 'https://showupat.com/api/public/openapi.json'
CORS and rate limits
Public read endpoints allow browser CORS for legitimate widgets. Use reasonable polling; aggressive scraping may be throttled.
See /llms.txt and /ai for machine-readable documentation index.