# Docs - Documentation - **Get started** - [Introduction](/): Host Ball2D football rooms on your own server and run them with code. - [Node.js quickstart](/quickstart): Install the SDK and host your first public room from Node.js. - [Create an API key](/api-keys): Authorize a server to open rooms for your Ball2D account. - [How Ball2D works](/how-it-works): What runs on your server, what Ball2D provides, and how players reach your room. - **Host rooms** - [Room lifecycle](/rooms): Configure a room, open it, watch it run and close it cleanly. - [Players and teams](/players): Track who is in the room, organise teams and assign roles. - [Chat and announcements](/chat): Speak to players, filter what they say and build chat commands. - [Moderation](/moderation): Keep a room pleasant with mutes, kicks, bans, passwords and join verification. - [Matches](/matches): How a match flows, and how to start, pause, limit and follow it. - [Stadiums](/stadiums): Pick a bundled stadium, load your own, and check stadium files before you use them. - [Physics and discs](/physics): Read positions and change how the ball and players move. - [Recordings and replays](/recordings): Record matches on your server, save them and read them back. - [Browser entry](/browser): Host a room from a web page served by a Ball2D deployment. - **Operate** - [Admission and limits](/limits): How many keys, rooms and requests an account may use, and what happens at a limit. - [Errors and retries](/errors): Tell apart errors to fix from errors to retry, and back off correctly. - [Run in production](/deployment): Supported runtimes, secrets, shutdown, networking and monitoring for a long-running host. - [Security model](/security): What the SDK protects, what the service enforces, and what neither can promise. - **Resources** - [TypeScript](/typescript): Types ship with the package; configure your project to resolve the right entry. - [Changelog](/changelog): Changes to the ball2d package, newest first. - [Support and licensing](/support): Where to report problems, and the terms the SDK is distributed under. - Guides - **Room recipes** - [Chat commands](/guides/chat-commands): Let trusted players run the room from the chat, and keep commands out of it. - [Balance teams automatically](/guides/team-balancing): Put new players on the smaller team, rebalance when someone leaves and start matches when teams are ready. - [Record every match](/guides/record-matches): Save each match as a replay file, including the one in progress when the room closes. - **Operations** - [Keep a room online](/guides/keep-a-room-online): Reopen your room whenever it closes, with backoff that respects the service's limits. - [Run under a process manager](/guides/process-manager): Start the host at boot, restart it on failure and stop it cleanly with systemd, PM2 or Docker. - SDK Reference - **Functions** - [createRoom()](/sdk/create-room): Admit a room with the Ball2D service, start its host and resolve with the room. - [Stadiums and replays](/sdk/utilities): Check stadium files and decode recordings without opening a room. - **Room and events** - Room - [Room](/sdk/room): The controller createRoom() resolves with; identity, lifecycle and the method groups. - [Players and teams](/sdk/room/players): Read the roster, move players between teams and style the teams. - [Moderation](/sdk/room/moderation): Mute, kick and ban players, and control who can join. - [Chat](/sdk/room/chat): Talk to players as the host, and send styled announcements. - [Matches](/sdk/room/matches): Start, pause and stop matches, set their limits and read the score. - [Stadiums](/sdk/room/stadiums): Switch between bundled stadiums or load your own between matches. - [Physics](/sdk/room/physics): Read and change the discs that make up the match, including the ball and players. - [Recording](/sdk/room/recording): Record matches as replay files and receive recordings the room finishes for you. - [Events](/sdk/events): Callbacks the room calls when players act, matches change and the room reports problems. - **Errors and types** - [Errors](/sdk/errors): RoomAdmissionError, the errors startup can throw, and how to retry. - [Types](/sdk/types): Players, scores, match state, discs, replays and the other shapes the SDK returns.