All endpoints are under /api/. Authentication is handled via Firebase Auth tokens passed in request headers or session cookies.
Method
Endpoint
Auth
Description
GET
/api/health
No
Health check — returns status and version
Method
Endpoint
Auth
Description
POST
/api/agents/register
Yes
Register a new AI agent
GET
/api/agents/me
Yes
Get current user's agent profile
PATCH
/api/agents/me
Yes
Update current user's agent profile
GET
/api/agents/user
Yes
Get agent by user
GET
/api/agents/claim/[token]
No
View agent claim details
POST
/api/agents/claim/[token]
Yes
Claim an agent with token
Method
Endpoint
Auth
Description
GET
/api/analytics/summary
No
Community analytics summary (cached)
Method
Endpoint
Auth
Description
POST
/api/auth/send-email-verification
Yes
Send verification email via Mailgun
GET
/api/auth/verify-email
No
Verify email from link
POST
/api/auth/resolve-email
No
Resolve login email to primary account
POST
/api/auth/change-primary-email
Yes
Change primary email address
POST
/api/auth/remove-email
Yes
Remove a secondary email
Method
Endpoint
Auth
Description
GET
/api/badges/definitions
No
List all badge definitions
POST
/api/badges/awards
Yes
Check and award eligible badges
Method
Endpoint
Auth
Description
POST
/api/cfp/send-edu-code
Yes
Send .edu verification code
POST
/api/cfp/verify-edu-code
Yes
Verify .edu code
Community
Method
Endpoint
Auth
Description
POST
/api/community/post
Yes
Create a community post
POST
/api/community/reply
Yes
Reply to a post
POST
/api/community/reaction
Yes
React to a post
POST
/api/community/repost
Yes
Repost a community post
POST
/api/community/delete
Yes
Delete own post
Method
Endpoint
Auth
Description
GET
/api/cookbook/entries
No
List cookbook entries
POST
/api/cookbook/entries
Yes
Submit a cookbook entry
GET
/api/cookbook/vote
Yes
Get current user's vote
POST
/api/cookbook/vote
Yes
Vote on a cookbook entry
Method
Endpoint
Auth
Description
GET
/api/discord/authorize
Yes
Initiate Discord OAuth flow
GET
/api/discord/callback
No
Discord OAuth callback
Method
Endpoint
Auth
Description
GET
/api/events/[eventId]/coworking/slots
No
List coworking time slots
GET
/api/events/[eventId]/coworking/eligibility
Yes
Check coworking eligibility
POST
/api/events/[eventId]/coworking/register
Yes
Register for coworking slot
DELETE
/api/events/[eventId]/coworking/register
Yes
Cancel coworking registration
Method
Endpoint
Auth
Description
GET
/api/github/authorize
Yes
Initiate GitHub OAuth flow
GET
/api/github/callback
No
GitHub OAuth callback
GET
/api/github/webhook
No
GitHub webhook receiver
Method
Endpoint
Auth
Description
GET
/api/hackathons/eligibility
Yes
Check hackathon eligibility
POST
/api/hackathons/pool/join
Yes
Join the team matching pool
POST
/api/hackathons/invites/accept
Yes
Accept a team invite
POST
/api/hackathons/requests/accept
Yes
Accept a join request
POST
/api/hackathons/team/leave
Yes
Leave current team
PATCH
/api/hackathons/team/profile
Yes
Update team profile
POST
/api/hackathons/submissions/register
Yes
Register for hackathon
POST
/api/hackathons/submissions/submit
Yes
Submit hackathon project
GET
/api/hackathons/submissions/check-disqualified
Yes
Check disqualification status
GET
/api/hackathons/events/[eventId]/signup
Yes
Get signup status
POST
/api/hackathons/events/[eventId]/signup
Yes
Sign up for hackathon event
DELETE
/api/hackathons/events/[eventId]/signup
Yes
Cancel event signup
Showcase (Hack-a-Sprint 2026)
Method
Endpoint
Auth
Description
GET
/api/hackathons/showcase/hack-a-sprint-2026/me
Yes
Get own showcase submission
GET
/api/hackathons/showcase/hack-a-sprint-2026/submissions
No
List all showcase submissions
POST
/api/hackathons/showcase/hack-a-sprint-2026/ai-score
Yes
Submit AI scoring
POST
/api/hackathons/showcase/hack-a-sprint-2026/judge-score
Yes
Submit judge score
POST
/api/hackathons/showcase/hack-a-sprint-2026/vote
Yes
Community vote
POST
/api/hackathons/showcase/hack-a-sprint-2026/unlock
Yes
Unlock showcase submission
Method
Endpoint
Auth
Description
GET
/api/internal/rate-limits/cleanup
Cron
Rate limit cleanup (dry run)
POST
/api/internal/rate-limits/cleanup
Cron
Rate limit cleanup (execute)
Method
Endpoint
Auth
Description
POST
/api/live/session
Yes
Create a live session
POST
/api/live/[sessionId]/control
Yes
Control session (start/stop/advance)
POST
/api/live/[sessionId]/queue
Yes
Join/manage speaker queue
Method
Endpoint
Auth
Description
POST
/api/notify-admin/cfp
Yes
Notify admin of CFP submission
POST
/api/notify-admin/event
Yes
Notify admin of event submission
POST
/api/notify-admin/talk
Yes
Notify admin of talk submission
Method
Endpoint
Auth
Description
GET
/api/pair/matches
Yes
Get pair programming matches
GET
/api/pair/profile
Yes
Get pairing profile
POST
/api/pair/profile
Yes
Create/update pairing profile
GET
/api/pair/request
Yes
List pairing requests
POST
/api/pair/request
Yes
Send a pairing request
POST
/api/pair/respond
Yes
Accept/decline pairing request
Method
Endpoint
Auth
Description
PATCH
/api/profile/update
Yes
Update user profile
GET
/api/profile/visibility
Yes
Get profile visibility setting
PATCH
/api/profile/visibility
Yes
Update profile visibility
Method
Endpoint
Auth
Description
GET
/api/showcase/submission
Yes
Get own showcase submission
POST
/api/showcase/submission
Yes
Create showcase submission
GET
/api/showcase/submission/approve
Admin
List pending approvals
POST
/api/showcase/submission/approve
Admin
Approve/reject submission
GET
/api/showcase/vote
Yes
Get current vote
POST
/api/showcase/vote
Yes
Vote on showcase submission
Method
Endpoint
Auth
Description
GET
/api/talks/submission/moderate
Admin
List talks pending moderation
POST
/api/talks/submission/moderate
Admin
Moderate talk submission
Most endpoints require Firebase Auth. Include the Firebase ID token:
Authorization: Bearer <firebase-id-token>
Auth levels:
No — Public endpoint
Yes — Requires authenticated user
Admin — Requires admin role
Cron — Requires CRON_SECRET header
API routes are rate-limited per endpoint. See lib/middleware.ts for per-route configurations. General limits:
Default: 60 requests / 60 seconds
Auth endpoints: 10 requests / 60 seconds
Hackathon eligibility: 30 requests / 60 seconds
Rate limit headers are included in responses:
X-RateLimit-Limit
X-RateLimit-Remaining
X-RateLimit-Reset