Overview
The filtered events API provides powerful server-side filtering with full-text search, career-impact scoring, and intelligent caching. It supports pagination, multi-field search, tag-based filtering, and personalized recommendation ranking.This endpoint requires authentication and completed career onboarding.
Authentication
Requires a valid Supabase authentication token in the request headers.Rate Limiting
- Limit: 30 requests per minute per user
- Window: Sliding window (1 minute)
- Response: HTTP 429 if rate limit exceeded
Request
HTTP Method
Headers
Must be
application/jsonOptional request ID for tracing
Optional ISO timestamp for request timing analytics
Body Parameters
Full-text search across event titles, descriptions, tags, and organizers. Supports semantic expansion for broader matches.Example:
"machine learning"Filter by event category IDs (e.g., conference, workshop, hackathon)Example:
["conf-001", "workshop-002"]Filter by exact tag matches (case-insensitive). Uses AND logic with other filters.Example:
["AI", "Python", "Data Science"]Filter by event locations (normalized, case-insensitive)Example:
["san francisco", "new york"]Filter by event formatOptions:
all, virtual, in-person, hybridFilter by price rangeOptions:
all, free-only, low, moderate, high, unlimitedSimple cost filterOptions:
all, free, paidFilter by difficulty levelOptions:
all, beginner, intermediate, advancedFilter events by date range
Sort fieldOptions:
default, date, popularity, career-impact, title, locationSort order (auto-set to
desc for career-impact)Options: asc, descPage number (1-indexed)
Results per page (max 100)
Filter to only recommended events (score ≥ 70)
Session ID for telemetry tracking
UI surface context for analyticsOptions:
calendar, discover, defaultSkip enrichment and counts for instant search (typing-as-you-search)
Response
Success Response (200)
Always
true for successful requestsError Responses
Examples
Basic Search
Advanced Filtering
Performance Notes
Caching Strategy
- Cache TTL: 2-5 minutes depending on query complexity
- Cache Key: SHA-1 hash of normalized filters + user ID
- Cache Headers:
X-Cache: HIT/MISSindicates cache status
Query Optimization
- Search Expansion: Terms < 3 chars use FTS only; longer queries expand with semantic matches
- Tag Search: Disabled for common single-word terms (e.g., “data”, “ai”)
- Organizer Search: Only enabled for queries > 10 characters
- Parallel Execution: Tag, organizer, and FTS searches run concurrently
Enrichment Strategy
- Fast Search Mode: Set
fastSearch: trueto skip career scoring and counts - Enrichment Window: First 5 pages enriched by default; configurable via
ENRICH_MAX_PAGE - Cold Start: Users without profiles receive baseline quality scores
Related Endpoints
- GET /api/events/recommendations - Personalized event recommendations
- POST /api/events/tracked - Track event interactions
- GET /api/profile/career - Manage career profile for better scoring