API Documentation
Build tools and integrations with the Max Mode List public API
Overview
The Max Mode List provides a public REST API for developers to build tools, bots, and integrations. All documented endpoints are public and do not require authentication.
Base URL: https://fnafmml.com/api
Content-Type: application/json
Responses are JSON. Public endpoints use Cache-Control for performance.
Max Mode of the Week
Returns the current Max Mode of the Week (MOTW) with associated tags.
GET
https://fnafmml.com/api/motw
Response
{
"motw": {
"maxmode_id": "uuid",
"title": "string",
"slug": "string",
"description": "string",
"creator_name": "string",
"thumbnail_url": "string",
"game": { "id": "uuid", "title": "string", "slug": "string", "link": "string" },
"tags": [{ "id": "uuid", "name": "string", "color": "string" }],
...
}
}Returns { motw: null } when no MOTW is set.
Maxmodes List
Paginated list of maxmodes for the Main List (ML) or Unlimited List (UL). Supports search and filters.
GET
https://fnafmml.com/api/maxmodes/list
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| list | ml | ul | Main List or Unlimited List (default: ml) |
| page | 1–40 | Page number (default: 1) |
| search | string | Text search (title, game, creator) |
| minLength | number | Min length in minutes |
| maxLength | number | Max length in minutes |
| minEnjoyment | 0–100 | Min enjoyment rating |
| maxEnjoyment | 0–100 | Max enjoyment rating |
| minRng | 0–5 | Min RNG rating |
| maxRng | 0–5 | Max RNG rating |
| supportsPower | boolean | Filter by power support |
| supportsTiming | boolean | Filter by timing support |
| selectedTags | string | Comma-separated tag names (include any) |
| excludedTags | string | Comma-separated tag names (exclude all) |
Example
https://fnafmml.com/api/maxmodes/list?list=ml&page=1&search=50&selectedTags=Custom Night
Response
{
"maxmodes": [...],
"totalCount": number,
"totalPages": number,
"tags": [{ "id": "uuid", "name": "string", "color": "string" }]
}50 items per page. When authenticated, response may include userData (favorites, completions, etc.).
Completions & victors
Public, read-only data for a single maxmode: accepted player completions (victors), the verifier (if any), and maxmode metadata. Unpublished or unknown maxmodes return 404. Only accepted leaderboard entries are included.
GET
https://fnafmml.com/api/maxmodes/[maxmodeIdOrSlug]/completions
[maxmodeIdOrSlug] is a maxmode UUID or its URL slug (case-insensitive).
Query parameters
| Parameter | Type | Description |
|---|---|---|
| page | 1–10000 | Page for the victor list (default: 1) |
| limit | 1–200 | Victors per page (default: 100) |
Response
victors is the paginated list of accepted player runs (excludes the verifier entry). verifier is the current verifier for that maxmode, or null if there is none. Each item includes is_verifier (always false in victors).
{
"maxmode": {
"id": "uuid",
"title": "string",
"slug": "string",
"ml_rank": number | null,
"ul_rank": number | null
},
"verifier": {
"id": "uuid",
"is_verifier": true,
"rank": number | null,
"player_name": "string",
"user_id": "uuid | null",
"username": "string | null",
"display_name": "string | null",
"avatar_path": "string | null",
"completion_date": "string",
"power_left": number | null,
"speed_beaten": number | null,
"proof_url": "string | null",
"enjoyment_rating": number | null,
"notes": "string | null",
"submitted_at": "string"
} | null,
"victors": [ /* same shape as verifier; is_verifier is false */ ],
"victorPage": number,
"victorLimit": number,
"victorTotal": number,
"victorTotalPages": number
}Leaderboard
Paginated leaderboard of players ranked by points.
GET
https://fnafmml.com/api/statsviewer/leaderboard
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| page | 1–100 | Page number (default: 1) |
| search | string | Search by display name or username |
| country | string | ISO country code (e.g. US, GB) |
| sort | ml | ul | total | Sort by ML points, UL points, or total (default: ml) |
Response
{
"profiles": [{
"id": "uuid",
"username": "string",
"display_name": "string",
"avatar_path": "string",
"role": "string",
"is_verified": boolean,
"ml_points": number,
"ul_points": number,
"total_points": number,
"rank": number,
"country": "string",
"ml_completions": number,
"ul_completions": number
}],
"totalCount": number,
"totalPages": number
}Filter Options
Returns available creators and countries for filtering the leaderboard and other views.
GET
https://fnafmml.com/api/statsviewer/options
Response
{
"creators": ["string", ...],
"countries": [
{ "code": "", "label": "All Countries" },
{ "code": "US", "label": "United States (US)" },
...
]
}Profile
Public profile data by username or user ID.
GET
https://fnafmml.com/api/profile/[username]
Replace [username] with a username (case-insensitive) or user UUID.
Response
{
"profile": { "id", "username", "display_name", "bio", "avatar_path", "role", "is_verified", "country", ... },
"mlRank": number,
"ulRank": number,
"mlPoints": number,
"ulPoints": number,
"favoriteMaxmodes": [...],
"toBeatMaxmodes": [...],
"mlCompletions": [...],
"ulCompletions": [...],
"mlCompletionsTotal": number,
"ulCompletionsTotal": number,
"motw": {...},
"userCompletedMOTW": boolean,
...
}Returns 404 when profile is not found.
Authentication
The endpoints above work without authentication. User-specific features (favorites, to-beat list, notifications, submissions, etc.) require a valid JWT. Authenticated requests should includeAuthorization: Bearer <token>. For now, authentication is handled via the website login flow.