{"id":20581570,"url":"https://github.com/sallie-may/speedruncomapi","last_synced_at":"2026-06-01T03:31:40.231Z","repository":{"id":251765252,"uuid":"838375360","full_name":"Sallie-May/speedruncomapi","owner":"Sallie-May","description":"A python speedrun.com API wrapper","archived":false,"fork":false,"pushed_at":"2024-08-05T14:55:22.000Z","size":26,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-06T12:17:42.742Z","etag":null,"topics":["api","apiwrapper","python","speedrun","speedruncom","wrapper","wrapper-api"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Sallie-May.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-08-05T14:08:46.000Z","updated_at":"2024-08-05T16:45:57.000Z","dependencies_parsed_at":"2024-08-05T16:32:26.849Z","dependency_job_id":"2d8fda2f-6282-4450-8bc1-1e6207de932b","html_url":"https://github.com/Sallie-May/speedruncomapi","commit_stats":null,"previous_names":["sallie-may/speedruncomapi"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Sallie-May/speedruncomapi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sallie-May%2Fspeedruncomapi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sallie-May%2Fspeedruncomapi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sallie-May%2Fspeedruncomapi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sallie-May%2Fspeedruncomapi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Sallie-May","download_url":"https://codeload.github.com/Sallie-May/speedruncomapi/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sallie-May%2Fspeedruncomapi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33759178,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-01T02:00:06.963Z","response_time":115,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["api","apiwrapper","python","speedrun","speedruncom","wrapper","wrapper-api"],"created_at":"2024-11-16T06:29:24.582Z","updated_at":"2026-06-01T03:31:40.212Z","avatar_url":"https://github.com/Sallie-May.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Speedrun API Wrapper\nThis Python package provides a convenient wrapper for the Speedrun API. It simplifies the process of interacting with the API by offering classes and methods for accessing user, game, run, and various other Speedrun-related data!\n\nIf I forgot some API tell me, i'll work on it.\n\nInstallation\n\nyou can install it using pip:\n\n```bash\npip install speedruncomapi\n```\n\n# Usage\nImporting the Package\n\n```py\n\nfrom speedruncomapi import User, Game, Run, Region, Platform, Developer, Engine, GameType, Genre, Guest, Leaderboard, Level, Notification, Profile, Publisher, Series, Variables, HiddenAPI\n```\n\nor \n\n```py\nimport speedruncomapi\n```\nwhich will lead to having to put speedruncomapi before everything like info = speedruncomapi.User.Info(name=\"username\")\n\n## User\n\nGet User Information\n\n```py\n\ninfo = User.Info(name=\"username\")  # or User.Info(ID=\"user_id\")\nprint(info)\n\n```\nGet Personal Bests\n\n```py\n\npersonal_bests = User.PersonalBest(name=\"username\", limit=5)\nprint(personal_bests)\n```\n\n\nGet Game ID\n\n```py\n\ngame_id = Game.get_game_id(\"game_id_or_name\")\nprint(game_id)\n\n```\n\nGet Categories\n```py\n\ncategories = Game.get_categories(\"game_id\")\nprint(categories)\n```\n\nGet Category Details\n```py\n\ncategory_details = Game.get_category_details(\"category_id\")\nprint(category_details)\n```\nGet Runs\n```py\n\nruns = Run.get_runs(user=\"username\", max_data=10)\nprint(runs)\n\n```\nGet Run by ID\n```py\n\nrun = Run.get_run_by_id(\"run_id\")\nprint(run)\n```\n\nCreate Run\n```py\n\nnew_run = Run.create_run(\n    auth_token=\"your_auth_token\",\n    category=\"category_id\",\n    level=\"level_id\",\n    date=\"YYYY-MM-DD\",\n    region=\"region_id\",\n    platform=\"platform_id\"\n)\nprint(new_run)\n\n```\nUpdate Run Status\n```py\n\nupdated_run = Run.update_run_status(\n    auth_token=\"your_auth_token\",\n    run_id=\"run_id\",\n    status=\"accepted\",\n    reason=\"Looks good!\"\n)\nprint(updated_run)\n```\n\nDelete Run\n```py\n\ndeleted_run = Run.delete_run(auth_token=\"your_auth_token\", run_id=\"run_id\")\nprint(deleted_run)\n\n```\n\n## Region\nGet All Regions\n```py\n\nregions = Region.get_all_regions()\nprint(regions)\n\n```\n\nGet Region by ID\n```py\n\nregion = Region.get_region_by_id(\"region_id\")\nprint(region)\n\n```\n\n## Platform\nGet All Platforms\n```py\n\nplatforms = Platform.get_all_platforms()\nprint(platforms)\n```\nGet Platform by ID\n```py\n\nplatform = Platform.get_platform_by_id(\"platform_id\")\nprint(platform)\n```\n\n## Developer\nGet All Developers\n```py\n\ndevelopers = Developer.get_all_developers()\nprint(developers)\n```\nGet Developer by ID\n```py\n\ndeveloper = Developer.get_developer_by_id(\"developer_id\")\nprint(developer)\n```\n## Engine\nGet All Engines\n```py\n\nengines = Engine.get_all_engines()\nprint(engines)\n```\nGet Engine by ID\n```py\n\nengine = Engine.get_engine_by_id(\"engine_id\")\nprint(engine)\n```\n## GameType\nGet All Game Types\n```py\n\ngame_types = GameType.get_all_gametypes()\nprint(game_types)\n```\n\nGet Game Type by ID\n```py\n\ngame_type = GameType.get_gametype_by_id(\"gametype_id\")\nprint(game_type)\n```\n## Genre\nGet All Genres\n```py\n\ngenres = Genre.get_all_genres()\nprint(genres)\n```\nGet Genre by ID\n```py\n\ngenre = Genre.get_genre_by_id(\"genre_id\")\nprint(genre)\n\n```\n## Guest\nGet Guest by Name\n```py\n\nguest = Guest.get_guest_by_name(\"guest_name\")\nprint(guest)\n```\n## Leaderboard\nGet Full Game Leaderboard\n\n```py\n\nleaderboard = Leaderboard.get_full_game_leaderboard(\"game_id\", \"category_id\")\nprint(leaderboard)\n\n```\n\nGet Individual Level Leaderboard\n```py\n\nlevel_leaderboard = Leaderboard.get_individual_level_leaderboard(\"game_id\", \"level_id\", \"category_id\")\nprint(level_leaderboard)\n```\n## Level\nGet Level by ID\n```py\n\nlevel = Level.get_level_by_id(\"level_id\")\nprint(level)\n```\nGet Level Categories\n```py\n\ncategories = Level.get_level_categories(\"level_id\")\nprint(categories)\n```\nGet Level Variables\n```py\n\nvariables = Level.get_level_variables(\"level_id\")\nprint(variables)\nGet Level Records\n```py\n\nrecords = Level.get_level_records(\"level_id\")\nprint(records)\n```\n## Notification\nGet Notifications\n```py\n\nnotifications = Notification.get_notifications()\nprint(notifications)\n```\n## Profile\nGet Profile\n```py\n\nprofile = Profile.get_profile(api_key=\"your_api_key\")\nprint(profile)\nGet Profile Notifications\n```py\n\nprofile_notifications = Profile.get_notifications(api_key=\"your_api_key\")\nprint(profile_notifications)\n```\n##Publisher\nGet Publishers\n```py\n\npublishers = Publisher.get_publishers()\nprint(publishers)\nGet Publisher by ID\n```py\n\npublisher = Publisher.get_publisher(\"publisher_id\")\nprint(publisher)\n```\n## Series\nGet Series\n```py\n\nseries = Series.get_series()\nprint(series)\n```\nGet Series by ID\n```py\n\nseries_by_id = Series.get_series_by_id(\"series_id\")\nprint(series_by_id)\n```\nGet Games in Series\n```py\n\ngames_in_series = Series.get_games_in_series(\"series_id\")\nprint(games_in_series)\n```\n## Variables\nGet Variable by ID\n```py\n\nvariable = Variables.get_variable(\"variable_id\")\nprint(variable)\n\n```\nGet Variables for Game\n```py\n\nvariables_for_game = Variables.get_variables_for_game(\"game_id\")\nprint(variables_for_game)\n```\nGet Variables for Category\n```py\n\nvariables_for_category = Variables.get_variables_for_category(\"category_id\")\nprint(variables_for_category)\n```\nGet Variables for Level\n```py\n\nvariables_for_level = Variables.get_variables_for_level(\"level_id\")\nprint(variables_for_level)\n```\n\n## HiddenAPI\nSend Message\n```py\n\nhidden_api = HiddenAPI(csrf_token=\"your_csrf_token\", cookie_session=\"your_cookie_session\")\nresponse = hidden_api.send_message(recipient_ids=[\"recipient_id\"], text=\"Hello!\")\nprint(response)\n```\nGet Conversations\n```py\n\nconversations = hidden_api.get_conversations(limit=5)\nprint(conversations)\n```\nGet Conversation Messages\n```py\n\nmessages = hidden_api.get_conversation_messages(conversation_id=\"conversation_id\", mark_as_read=True)\nprint(messages)\n```\nGet Moderations Runs\n\n```py\nmoderation_runs = api.get_moderation_runs(\n    game_id='game_id_here',\n    verified=0,  # No verified parameter: Everything, 0: unverified, 1: verified, 2: rejected\n    page=1,\n    limit=20\n)\nprint(moderation_runs)\n\n```\n## Contributing\nContributions are welcome! Please fork the repository and submit a pull request with your changes. Ensure that your code adheres to the existing coding style and includes appropriate tests.\n\n## License\nThis project is licensed under the MIT License. See the LICENSE file for details.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsallie-may%2Fspeedruncomapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsallie-may%2Fspeedruncomapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsallie-may%2Fspeedruncomapi/lists"}