cons.furs.gg Public API Documentation

Public endpoints, GraphQL schema, query options, and event stream

Back to Site

Public API Rules

Public Endpoints

MethodPathDescription
GET/Public convention browser (search, filters, modal details).
GET/mapWorld map view with convention markers and device-location lookup.
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.
GET/suggest?id=<id>Public suggestion page for convention corrections and badge pricing.
GET/report?id=<id>Report a safety issue for a convention.
POST/submit/issueSubmit a safety issue report.
POST/graphqlPublic read-only GraphQL for conventions and sub-events.
GET/healthzHealth probe.

GraphQL Query Options

conventions(limit, offset, sortBy, sortOrder, country, region, city, organizerCode, q, subEventType, hasSubEventTypes, conventionType)

nearestConventions(n, fromDate, country, region, city)

conventionsByDistance(lat, lon, radiusKm, limit, includePast)

subEvents(conventionId, type, limit, offset)

Schema Highlights

Convention Schema

FieldTypeNotes
idID!Convention ID.
organizerIdInt!Organizer numeric ID.
organizerCodeString!Organizer code (ORG-xxxxxx).
organizerNameString!Organizer display name.
nameString!Convention name.
seriesNameString!Series name.
sourceEventIdIntSource import event ID.
sourceSlugString!Source slug.
sourceUrlString!Source URL.
dateTextString!Human-readable date string.
startDateString!YYYY-MM-DD.
endDateString!YYYY-MM-DD.
venueString!Venue name.
cityString!City.
regionString!Region/state.
countryString!Country.
locationTextString!Location string.
latitudeFloat!Derived from city metadata.
longitudeFloat!Derived from city metadata.
homepageUrlString!Official homepage.
registrationUrlString!Registration link.
rulesUrlString!Rules link.
ageRatingString!Age rating text.
conventionTypeString!`convention`, `meetup`, `online`, or `other`.
cancelledBoolean!Cancelled status.
descriptionString!Convention description.
socialLinks[ConventionLink!]!Social links.
importantDates[ImportantDate!]!Important dates.
badges[ConventionBadge!]!Badge pricing entries.
subEvents[SubEvent!]!Sub-events.
notifications[ConventionNotification!]!News updates.
fingerprintString!Uniqueness fingerprint.
createdAtString!RFC3339 timestamp.
updatedAtString!RFC3339 timestamp.

Public Event Stream

GET /public/events returns an SSE stream of public lifecycle events only:

convention.createdconvention.changedconvention.deletedconvention.cancelledsubevent.createdsubevent.changedsubevent.deletedsubevent.cancellednotification.urgent

Copyable 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 latitude longitude badges { name type daysValid price registrationUrl } 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 } }"}'
Distance-based conventions query
curl -s https://cons.furs.gg/graphql \
  -H 'Content-Type: application/json' \
  -d '{"query":"{ conventionsByDistance(lat: 40.7128, lon: -74.0060, radiusKm: 500) { distanceKm convention { id name startDate city country latitude longitude } } }"}'
Public event stream (SSE)
curl -N https://cons.furs.gg/public/events
Privacy & Analytics
We use privacy-friendly analytics (Plausible) to understand how many people use this site. It does not use cookies and does not track you across sites.