← Developers hub

REST API v1 reference

Base URL: https://tournify.pk/api/v1 · Authentication: Bearer token — send Authorization: Bearer <token> header

Health: https://tournify.pk/api/healthz · Discovery: https://tournify.pk/api/v1/docs
Method Path Auth Description
POST /api/v1/auth/register No
Register new account
Params: username, email, password, password_confirmation, country?
POST /api/v1/auth/login No
Login and receive Bearer token
Params: email, password
POST /api/v1/auth/logout Yes
Revoke current token
GET /api/v1/me Yes
Authenticated user profile + game profiles + stats
PATCH /api/v1/me Yes
Update profile
Params: username?, bio?, country?, discord_tag?, twitch_url?, youtube_url?
GET /api/v1/games No
All active games with counts
GET /api/v1/games/{slug} No
Game detail with active tournaments
GET /api/v1/tournaments No
Tournament list
Params: game?, status?, region?, search?, featured?, per_page?
GET /api/v1/tournaments/{slug} No
Tournament detail + registered teams
POST /api/v1/tournaments/{slug}/register Yes
Register team
Params: team_id, in_game_id?
POST /api/v1/tournaments/{slug}/withdraw Yes
Withdraw registration
POST /api/v1/tournaments/{slug}/check-in Yes
Check in (window defined by tournament rules)
GET /api/v1/tournaments/{slug}/bracket No
Bracket data
GET /api/v1/my-tournaments Yes
My registrations
GET /api/v1/matches No
Match list
Params: status?=all|live|upcoming|completed, tournament?, per_page?
GET /api/v1/matches/live No
All live matches
GET /api/v1/matches/upcoming No
Upcoming matches
GET /api/v1/matches/completed No
Completed matches
GET /api/v1/matches/{id} No
Match detail + maps + events
GET /api/v1/matches/{id}/events No
Match events (poll with after=id)
GET /api/v1/leaderboard No
Leaderboard
Params: game?, country?, period?=all|month|week, per_page?
GET /api/v1/leaderboard/{game} No
Leaderboard for game
GET /api/v1/news No
News list
Params: category?, game?, featured?, search?, per_page?
GET /api/v1/news/{slug} No
Article detail + related
GET /api/v1/teams No
Browse teams
Params: game?, region?, search?, per_page?
GET /api/v1/teams/{id} No
Team detail + members + match history
POST /api/v1/teams Yes
Create team
Params: name, tag, game_id, region?, description?
POST /api/v1/teams/{id}/join Yes
Join team
POST /api/v1/teams/{id}/leave Yes
Leave team
GET /api/v1/my-teams Yes
Teams I belong to
GET /api/v1/players No
Browse players
Params: game?, search?, per_page?
GET /api/v1/players/{id} No
Player profile + ELO history + recent matches
GET /api/v1/players/by-user/{userId} No
All game profiles for a user
GET /api/v1/notifications Yes
Notifications
Params: unread_only?, per_page?
GET /api/v1/notifications/count Yes
Unread count
POST /api/v1/notifications/{id}/read Yes
Mark as read
POST /api/v1/notifications/mark-all-read Yes
Mark all read
GET /api/v1/payments/registration/{id} Yes
Payment status for registration
GET /api/v1/payments/my Yes
My payment history
POST /api/v1/email/otp/send Yes
Resend 6-digit email verification code (same code also sent via WhatsApp or SMS webhook when configured and phone on profile)
POST /api/v1/email/otp/verify Yes
Verify email with OTP
Params: code

Responses follow data, meta, and message conventions as described in the JSON catalog. Rate limits apply; prefer caching public reads.