FNaF Logo

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

ParameterTypeDescription
listml | ulMain List or Unlimited List (default: ml)
page1–40Page number (default: 1)
searchstringText search (title, game, creator)
minLengthnumberMin length in minutes
maxLengthnumberMax length in minutes
minEnjoyment0–100Min enjoyment rating
maxEnjoyment0–100Max enjoyment rating
minRng0–5Min RNG rating
maxRng0–5Max RNG rating
supportsPowerbooleanFilter by power support
supportsTimingbooleanFilter by timing support
selectedTagsstringComma-separated tag names (include any)
excludedTagsstringComma-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

ParameterTypeDescription
page1–10000Page for the victor list (default: 1)
limit1–200Victors 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

ParameterTypeDescription
page1–100Page number (default: 1)
searchstringSearch by display name or username
countrystringISO country code (e.g. US, GB)
sortml | ul | totalSort 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.