Public API Rules
- Public GraphQL at
/graphqlis read-only. Mutations are rejected. - Anonymous request rate limit: 100 requests/minute/IP.
- All user-provided text is sanitized before storage.
Public Endpoints
| Method | Path | Description |
|---|---|---|
| GET | / | Public convention browser (search, filters, modal details). |
| GET | /con?id=<id> | Public full-page convention details view for sharing links. |
| GET | /con/schedule?id=<id> | Public schedule page for convention sub-events. |
| POST | /graphql | Public read-only GraphQL for conventions and sub-events. |
| GET | /healthz | Health probe. |
GraphQL Query Options
conventions(limit, offset, sortBy, sortOrder, country, region, city, organizerCode, q, subEventType, hasSubEventTypes)
nearestConventions(n, fromDate, country, region, city)
subEvents(conventionId, type, limit, offset)
Schema Highlights
Convention.cancelledindicates cancelled conventions.SubEvent.cancelledindicates cancelled sub-events.importantDatesandsubEventsare included per convention.
Public Event Stream
GET /public/events returns an SSE stream of public lifecycle events only:
convention.createdconvention.changedconvention.deletedconvention.cancelledsubevent.createdsubevent.changedsubevent.deletedsubevent.cancellednotification.urgentCopyable cURL Examples
Public GraphQL conventions query
curl -s https://cons.furs.gg/graphql \
-H 'Content-Type: application/json' \
-d '{"query":"{ conventions(limit: 20, sortBy:\"start_date\", sortOrder:\"asc\") { id name cancelled startDate endDate city country subEvents { title type cancelled startsAt } importantDates { label dateValue } } }"}'Nearest conventions query
curl -s https://cons.furs.gg/graphql \
-H 'Content-Type: application/json' \
-d '{"query":"{ nearestConventions(n: 10, fromDate:\"2026-02-19\") { id name startDate endDate city country cancelled } }"}'Public event stream (SSE)
curl -N https://cons.furs.gg/public/events