{"id":23858350,"url":"https://github.com/bitpatty/srl-api-docs","last_synced_at":"2026-02-03T18:35:11.182Z","repository":{"id":269702905,"uuid":"908200866","full_name":"BitPatty/srl-api-docs","owner":"BitPatty","description":"Unofficial API documentation for SpeedRunsLive","archived":false,"fork":false,"pushed_at":"2024-12-25T12:33:16.000Z","size":6,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-15T17:01:46.416Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BitPatty.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-25T12:30:14.000Z","updated_at":"2024-12-25T12:33:19.000Z","dependencies_parsed_at":"2024-12-25T13:31:14.796Z","dependency_job_id":"2bb31dda-5d1d-44c8-ac7c-72cc3be387ca","html_url":"https://github.com/BitPatty/srl-api-docs","commit_stats":null,"previous_names":["bitpatty/srl-api-docs"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/BitPatty/srl-api-docs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BitPatty%2Fsrl-api-docs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BitPatty%2Fsrl-api-docs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BitPatty%2Fsrl-api-docs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BitPatty%2Fsrl-api-docs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BitPatty","download_url":"https://codeload.github.com/BitPatty/srl-api-docs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BitPatty%2Fsrl-api-docs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29052635,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T15:43:47.601Z","status":"ssl_error","status_checked_at":"2026-02-03T15:43:46.709Z","response_time":96,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-03T03:14:52.060Z","updated_at":"2026-02-03T18:35:11.164Z","avatar_url":"https://github.com/BitPatty.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# (Unofficial) SpeedRunsLive API Documentation\n\nThis documentation is based on endpoints found while inspecting the SRL pages. This page only covers API endpoints from the new API (since the one at api.speedrunslive.com might be shut down soonish). The new API base is available at https://speedrunslive.com/api.\n\n## Live Streams\n\n### GET /api/livestreams\n\nReturns the list of livestreams displayed on the home page.\n\n```jsonc\n{\n    \"data\": [\n        {\n            \"id\": \"12345678912\",\n            \"game\": \"Grand Theft Auto V\",\n            \"name\": \"SomeTwitchUserName\",\n            \"playerName\": \"SomeSRLUserName\",\n            \"profileImage\": \"https://...\",\n            \"title\": \"Some Stream Title\",\n            \"viewercount\": 1234\n        },\n        {\n            /* ... */\n        }\n    ]\n}\n```\n\n## Races\n\n### GET /api/currentraces\n\nReturns a paginated list of active races.\n\n#### Params\n\n| Param        | Description         |\n|--------------|---------------------|\n| `pageNumber` | The page to display |\n| `pageSize`   | The page size       |\n\n#### Sample Output\n\n```jsonc\n{\n    \"data\": [\n        {\n            \"currentRaceFileName\": ???,\n            \"currentRaceGameId\": 6222,\n            \"currentRaceGoal\": \"Tower of Oannes\",\n            \"currentRaceId\": \"or4bu\",\n            \"currentRaceState\": 3,\n            \"currentRaceStateText\": \"In Progress\",\n            \"currentRaceTime\": \"2022-01-28T23:50:03+00:00\",\n            \"elapsedTime\": 1234,\n            \"entrants\": [\n                {\n                    \"currentRaceLinkId\": 12345,\n                    \"currentRacePlayerId\": 123,\n                    \"currentRacePlayerName\": \"SomeSRLUserName\",\n                    \"message\": \"\",\n                    \"place\": 1234,\n                    \"rating\": 0,\n                    \"time\": -3\n                }\n                {\n                    /* ... */\n                }\n            ],\n            \"game\": {\n                \"gameAbbrev\": \"lamulana2\",\n                \"gameName\": \"La-Mulana 2\",\n                \"gamePopularity\": 0,\n                \"isSeasonGame\": false\n            },\n            \"totalEntrants\": 2\n        },\n        {\n            /* ... */\n        }\n    ],\n    \"pageNumber\": 1,\n    \"pageSize\": 12,\n    \"totalPages\": 2\n}\n```\n\n### GET /api/currentraces/\u0026lt;race-id\u0026gt;\n\nReturns the info of a single race, same data as GET /api/currentraces -\u003e data.\n\n## Past Races\n\n### GET /api/pastresults\n\nReturns a paginated list of race results.\n\n#### Params\n\n| Param        | Description                           |\n|--------------|---------------------------------------|\n| `player`     | Filter results by a player name       |\n| `game`       | Filter results by a game abbreviation |\n| `pageNumber` | The page to display                   |\n| `pageSize`   | The page size                         |\n\n## Games\n\n### GET /api/games\n\nReturns a paginated list of games.\n\n#### Params\n\n| Param        | Description                                       |\n|--------------|---------------------------------------------------|\n| `pageNumber` | The page to display                               |\n| `pageSize`   | The page size                                     |\n| `sortBy`     | If set to `popularity`, sorty by popularity score |\n| `orderBy`    | Either `asc` for ascending or `desc`              |\n\n#### Sample Output\n\n```jsonc\n{\n    \"data\": [\n        {\n            \"gameAbbrev\": \"sm64\",\n            \"gameName\": \"Super Mario 64\",\n            \"gamePopularity\": 974,\n            \"isSeasonGame\": false\n        },\n        {\n            /* ... */\n        }\n    ],\n    \"pageNumber\": 1,\n    \"pageSize\": 20,\n    \"totalPages\": 322\n}\n```\n\n## Statistics\n\n### GET /api/stats/all\n\nReturns the overall SRL race statistics.\n\n#### Sample Output\n\n```jsonc\n{\n    \"data\":{\n        \"totalRaces\":286503,\n        \"totalPlayers\":36165,\n        \"totalGames\":6426,\n        \"largestRaceId\":125224,\n        \"largestRaceSize\":301,\n        \"totalRaceTime\":1374617114,\n        \"totalPlayedTime\":3998093958\n    }\n}\n```\n\n### GET /api/stats/monthly\n\nReturns the monthly race statistics.\n\n#### Sample Output\n\n```jsonc\n{\n    \"data\":[\n        {\n            \"year\":2022,\n            \"months\":[\n                {\n                    \"month\":1,\n                    \"totalRaces\":180,\n                    \"totalPlayers\":185,\n                    \"totalGames\":127,\n                    \"largestRace\":286579,\n                    \"totalRaceTime\":180,\n                    \"totalTimePlayed\":1737482,\n                    \"largestRaceSize\":16\n                }\n            ]\n        },\n        {\n            /* ... */\n        }\n    ],\n    \"totalPages\":0,\n    \"pageNumber\":0,\n    \"pageSize\":12\n}\n```\n\n### GET /api/stats/players\n\nReturns a paginated list of race stats grouped by user.\n\n#### Params\n\n| Param        | Description         |\n|--------------|---------------------|\n| `pageNumber` | The page to display |\n| `pageSize`   | The page size       |\n\n#### Sample Output\n\n```jsonc\n{\n    \"data\":[\n        {\n            \"playerId\":147,\n            \"playerName\":\"neskamikaze\",\n            \"totalRaces\":3769,\n            \"totalGames\":1312,\n            \"firstRaceId\":1731,\n            \"firstRaceDate\":\"2011-02-16T00:55:53+00:00\",\n            \"totalPlayedTime\":9057577,\n            \"totalFirsts\":1560,\n            \"totalSeconds\":1102,\n            \"totalThirds\":320,\n            \"totalQuits\":347,\n            \"totalDQs\":5\n        },\n        {\n            /* ... */\n        }\n    ],\n    \"totalPages\":0,\n    \"pageNumber\":0,\n    \"pageSize\":12\n}\n```\n\n### GET /api/stats/players/\u0026lt;player-name\u0026gt;\n\nReturns the race stats of the specified user.\n\n#### Sample Output\n\n```jsonc\n{\n    \"data\": {\n        \"playerId\":19075,\n        \"playerName\":\"psychonauter\",\n        \"totalRaces\":55,\n        \"totalGames\":2,\n        \"firstRaceId\":167799,\n        \"firstRaceDate\":\"2016-04-12T21:25:49+00:00\",\n        \"totalPlayedTime\":449503,\n        \"totalFirsts\":11,\n        \"totalSeconds\":5,\n        \"totalThirds\":8,\n        \"totalQuits\":10,\n        \"totalDQs\":0\n    }\n}\n```\n\n\n### GET /api/stats/playergamestats\n\nReturns the race stats of the specified user in the specified game.\n\n#### Params\n\n| Param        | Description                      |\n|--------------|----------------------------------|\n| `playerName` | (Required) The user name         |\n| `gameAbbrev` | (Required) The game abbreviation |\n\n\n#### Sample Output\n\n```jsonc\n{\n    \"data\":{\n        \"playerId\":19075,\n        \"gameId\":0,\n        \"totalRaces\":48,\n        \"firstRaceId\":167799,\n        \"firstRaceDate\":\"2016-04-12T21:25:49+00:00\",\n        \"totalPlayedTime\":196639,\n        \"totalFirsts\":8,\n        \"totalSeconds\":5,\n        \"totalThirds\":6,\n        \"totalQuits\":9,\n        \"totalDQs\":0\n    }\n}\n```\n\n### GET /api/bestracetimes/\u0026lt;game-abbreviation\u0026gt;\n\nReturns the top races of the specified game.\n\n#### Sample Output\n\n```jsonc\n{\n    \"data\": [\n        {\n            \"goalId\": 123,\n            \"goalName\": \"16 star\",\n            \"bestTimes\": [\n                {\n                    \"raceId\": 1234,\n                    \"playerId\": 12345,\n                    \"time\": 123,\n                    \"playerName\": \"SomeSRLUserName\"\n                }\n            ]\n        }\n    ],\n    \"totalPages\": 0,\n    \"pageNumber\": 0,\n    \"pageSize\": 12\n}\n```\n\n## Players\n\n### GET /api/players\n\nReturns a paginated list of SRL players\n\n#### Params\n\n| Param        | Description         |\n|--------------|---------------------|\n| `pageNumber` | The page to display |\n| `pageSize`   | The page size       |\n\n#### Sample Output\n\n```jsonc\n{\n    \"data\": [\n        {\n            \"playerId\": 123,\n            \"playerName\": \"SomeSRLUserName\",\n            \"roleId\": 5,\n            \"youtube\": \"\",\n            \"countryName\": \"\",\n            \"twitter\": \"\",\n            \"channel\" \"\"\n        },\n        {\n            /* ... */\n        }\n    ],\n    \"totalPages\": 3014,\n    \"pageNumber\": 1,\n    \"pageSize\": 12\n}\n\n```\n\n### GET /api/players/\u0026lt;player-name\u0026gt;\n\nReturns the info of the specified user.\n\n#### Sample Output\n\n```jsonc\n{\n    \"data\":{\n        \"playerId\":19075,\n        \"playerName\":\"psychonauter\",\n        \"roleId\":5,\n        \"youtube\":\"\",\n        \"countryName\":\"Switzerland\",\n        \"twitter\":\"psychonauter\",\n        \"channel\":\"psychonauter\",\n        \"playerPlayedGames\":[\n            {\n                \"playerId\":19075,\n                \"gameId\":7,\n                \"gameName\":\"Super Mario Sunshine\",\n                \"gameAbbrev\":\"sms\",\n                \"totalRaces\":48,\n                \"gameRank\":230\n            },\n            {\n                \"playerId\":19075,\n                \"gameId\":941,\n                \"gameName\":\"Final Fantasy X\",\n                \"gameAbbrev\":\"ffx\",\n                \"totalRaces\":7,\n                \"gameRank\":4\n            }\n        ]\n    }\n}\n```\n\n#### Sample Output\n\n```jsonc\n{\n    \"data\":[\n        {\n            \"raceId\":267156,\n            \"raceGoal\":\"Any%\",\n            \"raceDate\":1578331429,\n            \"seasonId\":0,\n            \"game\":{\n                \"gameName\":\"Super Mario Sunshine\",\n                \"gameAbbrev\":\"sms\",\n                \"gamePopularity\":153,\n                \"isSeasonGame\":false\n            },\n            \"entrants\":[\n                {\n                    \"playerName\":\"_1UpsForLife\",\n                    \"place\":1,\n                    \"placeText\":\"\",\n                    \"time\":4882,\n                    \"message\":\"first weekly of the decade!\",\n                    \"oldRating\":720,\n                    \"newRating\":735\n                },\n                {\n                    /* ... */\n                }\n            ]\n        }\n    ],\n    \"totalPages\":48,\n    \"pageNumber\":1,\n    \"pageSize\":1\n}\n```\n\n## Countries\n\n### GET /api/countries\n\nReturns the list of countries available on SRL.\n\n#### Sample Output\n\n```jsonc\n{\n    \"data\": [\n        {\n            \"countryId\": 1,\n            \"countryName\": \"None\"\n        },\n        {\n            /* ... */\n        }\n    ]\n}\n\n```\n\n## User / Auth\n\n### POST /api/auth/login\n\nAuthenticates a user, returns a cookie called `auth_cookie` used for privileged actions.\n\n#### Payload\n\n```jsonc\n{\n    \"username\": \"\",\n    \"password\": \"\"\n}\n```\n\n### POST /api/auth/logout\n\nAllows users to log out, removes the `auth_cookie`.\n\n### GET /api/user/profile\n\nReturns the profile information of the currently authenticated user.\n\n#### Sample Output\n\n```jsonc\n{\n    \"data\":{\n        \"playerName\":\"psychonauter\",\n        \"twitch\":\"psychonauter\",\n        \"youtube\":\"\",\n        \"twitter\":\"psychonauter\",\n        \"country\":\"Switzerland\",\n        \"countryId\":191,\n        \"frontPagePref\":2\n    }\n}\n```\n\n### PUT /api/user/profile\n\nUpdates the profile information of the currently authenticated user.\n\n#### Payload\n\n```jsonc\n{\n    \"playerName\":\"psychonauter\",\n    \"twitch\":\"psychonauter\",\n    \"youtube\":\"\",\n    \"twitter\":\"psychonauter\",\n    \"countryId\":191,\n    \"frontPagePref\":\"2\"\n}\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbitpatty%2Fsrl-api-docs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbitpatty%2Fsrl-api-docs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbitpatty%2Fsrl-api-docs/lists"}