Returns the authoritative roster of players admitted to the match backing this server. Game servers call this (with their server API key and their own INSTANCE_ID) to know exactly which players to admit — this is the source of truth for admission and fixes reconnect / “denied by proxy” edge cases.
The response includes per-team slots, total capacity, current_players, backfill state, and a monotonically increasing roster_version. Poll roster_version cheaply to detect roster changes (e.g., when a backfill joiner is admitted).
Only available for servers that back a match (created through matchmaking/lobbies).
GET
/
api
/
v3
/
servers
/
{instance_id}
/
roster
Get the authoritative match roster
curl --request GET \ --url https://api.computeflow.cloud/api/v3/servers/{instance_id}/roster \ --header 'api-key: <api-key>'
Authoritative flat list of admitted players. The game server uses this to admit connecting players.
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Documentation - PlayFlow Cloud","colors":{"primary":"#2563EB","light":"#60A5FA","dark":"#1E3A8A"},"logo":{"light":"https://mintcdn.com/playflow/eqeqAmqAMsOYKFZn/logo/svgs/3.svg?fit=max\u0026auto=format\u0026n=eqeqAmqAMsOYKFZn\u0026q=85\u0026s=ec6b551d72d9a0550eceaf8372781505","dark":"https://mintcdn.com/playflow/eqeqAmqAMsOYKFZn/logo/svgs/4.svg?fit=max\u0026auto=format\u0026n=eqeqAmqAMsOYKFZn\u0026q=85\u0026s=56ed179b4ec9ff9a3b8c659b610385e1"},"favicon":"https://mintcdn.com/playflow/eqeqAmqAMsOYKFZn/favicon.svg?fit=max\u0026auto=format\u0026n=eqeqAmqAMsOYKFZn\u0026q=85\u0026s=4f01ae4525de4b30fd0fef06c5145d06","navbar":{"links":[{"href":"https://discord.gg/P5w45Vx5Q8","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://app.playflowcloud.com"}},"footer":{"socials":{"x":"https://x.com/PlayFlowCloud","github":"https://github.com/PlayFlowCloud","linkedin":"https://www.linkedin.com/company/84953462"}},"seo":{"metatags":{"description":"Official documentation for PlayFlow Cloud. Learn to build, deploy, and scale multiplayer games with our tools for server hosting, matchmaking, and lobbies.","keywords":"PlayFlow, PlayFlow Cloud, game development, multiplayer, Unity, Unreal Engine, Godot, game servers, server hosting, matchmaking, lobbies, WebGL, game backend, documentation","author":"PlayFlow Cloud","robots":"index, follow","googlebot":"index, follow","language":"en","copyright":"Copyright 2025 PlayFlow Cloud","distribution":"global","coverage":"Worldwide","category":"Game Development","og:title":"PlayFlow Cloud Documentation","og:description":"Official documentation for PlayFlow Cloud. Learn to build, deploy, and scale multiplayer games with our tools for server hosting, matchmaking, and lobbies.","og:type":"website","og:site_name":"PlayFlow Cloud","og:url":"https://docs.playflowcloud.com","og:locale":"en_US","twitter:card":"summary_large_image","twitter:site":"@PlayFlowCloud","twitter:creator":"@PlayFlowCloud","twitter:title":"PlayFlow Cloud Documentation","twitter:description":"Official documentation for PlayFlow Cloud. Learn to build, deploy, and scale multiplayer games with our tools for server hosting, matchmaking, and lobbies."},"indexing":"all"},"icons":{"library":"lucide"},"integrations":{"posthog":{"apiKey":"phc_fBrC62lJ5zi3r6ItRQsm4NcKIJOvc2e73YZtSaTpYxy"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Community","icon":"discord","href":"https://discord.gg/P5w45Vx5Q8"},{"anchor":"Blog","icon":"newspaper","href":"https://playflowcloud.com/"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"playflow","hasAudioNarration":false,"actualSubdomain":"playflow","customDomains":["docs.playflowcloud.com"],"gitSource":{"type":"github","owner":"playflowcloud","repo":"playflow-core","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a551e6696ba02c71ec13582","collectionId":"3524da5f-fd4d-49f3-a07a-bea7ab61d2ef","schemaVersion":"v3"},"feedback":{"thumbs":false},"entitlements":{},"buildId":"6a551e6696ba02c71ec13582:success","clientVersion":"0.0.3965","searchFilterCounts":[{"language":"default","tag":"Documentation","count":37},{"language":"default","tag":"API Reference","count":36},{"language":"default","tag":"Endpoints","count":35},{"language":"default","tag":"Lobbies","count":18},{"language":"default","tag":"Lobbies \u0026 Matchmaking","count":12},{"language":"default","tag":"Getting Started","count":10},{"language":"default","tag":"Guides","count":8},{"language":"default","tag":"Servers","count":8},{"language":"default","tag":"Quick Start Guides","count":7},{"language":"default","tag":"Unity SDK","count":6}]},"assistantConfig":{},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/servers/get-the-authoritative-match-roster","slug":"/api-reference/servers/get-the-authoritative-match-roster","pageMetadata":{"title":"Get the authoritative match roster","description":"Returns the authoritative roster of players admitted to the match backing this server. Game servers call this (with their server API key and their own `INSTANCE_ID`) to know exactly which players to admit — this is the source of truth for admission and fixes reconnect / \"denied by proxy\" edge cases.\n\nThe response includes per-team slots, total `capacity`, `current_players`, backfill state, and a monotonically increasing `roster_version`. Poll `roster_version` cheaply to detect roster changes (e.g., when a backfill joiner is admitted).\n\nOnly available for servers that back a match (created through matchmaking/lobbies).","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc get /api/v3/servers/{instance_id}/roster","href":"/api-reference/servers/get-the-authoritative-match-roster","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Returns the authoritative roster of players admitted to the match backing this server. Game servers call this (with their server API key and their own \", _jsx(_components.code, {\n children: \"INSTANCE_ID\"\n }), \") to know exactly which players to admit — this is the source of truth for admission and fixes reconnect / “denied by proxy” edge cases.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The response includes per-team slots, total \", _jsx(_components.code, {\n children: \"capacity\"\n }), \", \", _jsx(_components.code, {\n children: \"current_players\"\n }), \", backfill state, and a monotonically increasing \", _jsx(_components.code, {\n children: \"roster_version\"\n }), \". Poll \", _jsx(_components.code, {\n children: \"roster_version\"\n }), \" cheaply to detect roster changes (e.g., when a backfill joiner is admitted).\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"Only available for servers that back a match (created through matchmaking/lobbies).\"\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Get the authoritative match roster","description":"Returns the authoritative roster of players admitted to the match backing this server. Game servers call this (with their server API key and their own `INSTANCE_ID`) to know exactly which players to admit — this is the source of truth for admission and fixes reconnect / \"denied by proxy\" edge cases.\n\nThe response includes per-team slots, total `capacity`, `current_players`, backfill state, and a monotonically increasing `roster_version`. Poll `roster_version` cheaply to detect roster changes (e.g., when a backfill joiner is admitted).\n\nOnly available for servers that back a match (created through matchmaking/lobbies).","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc get /api/v3/servers/{instance_id}/roster","href":"/api-reference/servers/get-the-authoritative-match-roster","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"getServerRoster","tags":["Servers"],"summary":"Get the authoritative match roster","description":"Returns the authoritative roster of players admitted to the match backing this server. Game servers call this (with their server API key and their own `INSTANCE_ID`) to know exactly which players to admit — this is the source of truth for admission and fixes reconnect / \"denied by proxy\" edge cases.\n\nThe response includes per-team slots, total `capacity`, `current_players`, backfill state, and a monotonically increasing `roster_version`. Poll `roster_version` cheaply to detect roster changes (e.g., when a backfill joiner is admitted).\n\nOnly available for servers that back a match (created through matchmaking/lobbies).","parameters":["cec3bf07-247d-492e-8523-42eabff4fa39"],"responses":{"200":"b2116d32-b580-445c-8f83-ceb7963e766f","404":"eb908d92-54bf-41c8-93f4-a0d8b5bc5084"},"method":"get","type":"path","servers":["10dc6c24-ec8f-48c6-85d3-b4e04b596923"],"security":["0648c24c-6553-4c47-aec3-e48fcddd9e9d"],"path":"/api/v3/servers/{instance_id}/roster","baseUrlOptions":["https://api.computeflow.cloud"],"title":"Get the authoritative match roster","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"cec3bf07-247d-492e-8523-42eabff4fa39":{"schema":{"type":"string","description":"Server instance ID (the game server's own INSTANCE_ID).","isRequired":true,"uniqueKey":"","typeLabel":"string"},"required":true,"description":"Server instance ID (the game server's own INSTANCE_ID).","name":"instance_id","in":"path"}},"responses":{"b2116d32-b580-445c-8f83-ceb7963e766f":{"description":"Authoritative roster for the match backing this server.","content":{"application/json":{"schema":{"type":"object","properties":{"match_id":{"type":"string","description":"Identifier of the match backing this server.","isRequired":true,"uniqueKey":"match_id","typeLabel":"string"},"instance_id":{"type":"string","description":"Server instance backing this match.","isRequired":true,"uniqueKey":"instance_id","typeLabel":"string"},"status":{"type":"string","enum":["in_game","locked","completed"],"description":"Match lifecycle status. \"in_game\": active. \"locked\": no further joiners. \"completed\": ended.","isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"capacity":{"type":"integer","description":"Total admissible players across all teams (teams × playersPerTeam).","isRequired":true,"uniqueKey":"capacity","typeLabel":"integer"},"current_players":{"type":"integer","description":"Number of players currently on the roster.","isRequired":true,"uniqueKey":"current_players","typeLabel":"integer"},"backfill_open":{"type":"boolean","description":"Whether the match is currently accepting backfill joiners.","isRequired":true,"uniqueKey":"backfill_open","typeLabel":"boolean"},"backfill_deadline":{"oneOf":[{"type":"string","format":"date-time","description":"ISO 8601 timestamp after which backfill closes. Null if no window is active.","isRequired":true,"uniqueKey":"backfill_deadline.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"ISO 8601 timestamp after which backfill closes. Null if no window is active.","isRequired":true,"uniqueKey":"backfill_deadline.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"backfill_deadline","typeLabel":"string\u003cdate-time> | null"},"roster_version":{"type":"integer","description":"Monotonically increasing version bumped on every roster change. Poll this to detect updates cheaply.","isRequired":true,"uniqueKey":"roster_version","typeLabel":"integer"},"teams":{"type":"object","additionalProperties":{"type":"object","properties":{"capacity":{"type":"integer","description":"Maximum players this team admits.","isRequired":true,"uniqueKey":"teams.additionalProperties.capacity","typeLabel":"integer"},"players":{"type":"array","items":{"type":"object","properties":{"playerId":{"type":"string","description":"Player identifier.","isRequired":true,"uniqueKey":"teams.additionalProperties.players.items.[INDEX].playerId","typeLabel":"string"},"lobbyId":{"type":"string","description":"Lobby the player joined through.","isRequired":true,"uniqueKey":"teams.additionalProperties.players.items.[INDEX].lobbyId","typeLabel":"string"}},"required":["playerId","lobbyId"],"uniqueKey":"teams.additionalProperties.players.items.[INDEX]","typeLabel":"object"},"description":"Players currently occupying slots on this team.","isRequired":true,"uniqueKey":"teams.additionalProperties.players","typeLabel":"object[]"}},"required":["capacity","players"],"description":"Per-team capacity and occupancy for a running match.","uniqueKey":"teams.additionalProperties","typeLabel":"object"},"description":"Per-team slot map keyed by team name.","isRequired":true,"uniqueKey":"teams","typeLabel":"object"},"roster":{"type":"array","items":{"type":"object","properties":{"playerId":{"type":"string","description":"Player identifier admitted to this match.","isRequired":true,"uniqueKey":"roster.items.[INDEX].playerId","typeLabel":"string"},"team":{"type":"string","description":"Team the player is assigned to (e.g., \"team_1\", \"hunters\").","isRequired":true,"uniqueKey":"roster.items.[INDEX].team","typeLabel":"string"},"lobbyId":{"type":"string","description":"Lobby the player joined through.","isRequired":true,"uniqueKey":"roster.items.[INDEX].lobbyId","typeLabel":"string"},"joinedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when the player joined the match roster.","isRequired":true,"uniqueKey":"roster.items.[INDEX].joinedAt","typeLabel":"string\u003cdate-time>"}},"required":["playerId","team","lobbyId","joinedAt"],"description":"A single authoritative roster entry for a player in a running match.","uniqueKey":"roster.items.[INDEX]","typeLabel":"object"},"description":"Authoritative flat list of admitted players. The game server uses this to admit connecting players.","isRequired":true,"uniqueKey":"roster","typeLabel":"object[]"}},"required":["match_id","instance_id","status","capacity","current_players","backfill_open","backfill_deadline","roster_version","teams","roster"],"description":"Authoritative roster for a running match. Game servers poll this (by instance_id, with a server API key) to know which players to admit.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"match_id":"\u003cstring>","instance_id":"\u003cstring>","status":"in_game","capacity":123,"current_players":123,"backfill_open":true,"backfill_deadline":"2023-11-07T05:31:56Z","roster_version":123,"teams":{},"roster":[{"playerId":"\u003cstring>","team":"\u003cstring>","lobbyId":"\u003cstring>","joinedAt":"2023-11-07T05:31:56Z"}]}}},"exampleType":"generated"}},"exampleType":"generated"},"eb908d92-54bf-41c8-93f4-a0d8b5bc5084":{"description":"No active match found for this instance_id in your project.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message describing what went wrong.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"status":{"type":"number","description":"HTTP status code (matches the response status code).","isRequired":true,"uniqueKey":"status","typeLabel":"number"},"detail":{"type":"string","description":"Additional error context. May contain the same text as error or more specific technical details.","uniqueKey":"detail","typeLabel":"string"}},"required":["error","status"],"description":"Standard error response returned by all API endpoints on failure.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","status":123,"detail":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"0648c24c-6553-4c47-aec3-e48fcddd9e9d":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"api-key","scopes":[]}}},"servers":{"10dc6c24-ec8f-48c6-85d3-b4e04b596923":{"url":"https://api.computeflow.cloud"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"api-key","scopes":[]},"schema":{"title":"api-key","type":"string","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKeyAuth","name":"api-key"}],"title":"ApiKeyAuth"}]},"originalFileLocation":"https://api.computeflow.cloud/api/doc"},"subdomain":"playflow","siteName":"Documentation - PlayFlow Cloud","title":"PlayFlow Cloud Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-07-13T17:20:48.968Z","originalFileLocation":"api-reference/servers/get-the-authoritative-match-roster.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Returns the authoritative roster of players admitted to the match backing this server. Game servers call this (with their server API key and their own INSTANCE_ID) to know exactly which players to admit — this is the source of truth for admission and fixes reconnect / \u0026quot;denied by proxy\u0026quot; edge cases. The response includes per-team slots, total capacity, current_players, backfill state, and a monotonically increasing roster_version. Poll roster_version cheaply to detect roster changes (e.g., when a backfill joiner is admitted). Only available for servers that back a match (created through matchmaking/lobbies).\">\u003cmeta data-mint-head name=\"keywords\" content=\"PlayFlow, PlayFlow Cloud, game development, multiplayer, Unity, Unreal Engine, Godot, game servers, server hosting, matchmaking, lobbies, WebGL, game backend, documentation\">\u003cmeta data-mint-head name=\"application-name\" content=\"Documentation - PlayFlow Cloud\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003cmeta data-mint-head name=\"robots\" content=\"index, follow\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/playflow/bdsieV7iirvG9AV3/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/playflow/bdsieV7iirvG9AV3/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/playflow/bdsieV7iirvG9AV3/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/playflow/bdsieV7iirvG9AV3/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/playflow/bdsieV7iirvG9AV3/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/playflow/bdsieV7iirvG9AV3/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/playflow/bdsieV7iirvG9AV3/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/playflow/bdsieV7iirvG9AV3/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/playflow/bdsieV7iirvG9AV3/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"PlayFlow Cloud Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Official documentation for PlayFlow Cloud. Learn to build, deploy, and scale multiplayer games with our tools for server hosting, matchmaking, and lobbies.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"PlayFlow Cloud\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.playflowcloud.com/api-reference/servers/get-the-authoritative-match-roster\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://playflow.mintlify.app/_mintlify/api/og/v2?division=Servers\u0026amp;title=Get+the+authoritative+match+roster\u0026amp;description=Returns+the+authoritative+roster+of+players+admitted+to+the+match+backing+this+server.+Game+servers+call+this+%28with+their+server+API+key+and+their+own+%60INSTANCE\u0026amp;theme=efdcb79398ff0a4a395f8bf0\u0026amp;signature=a71ee0d70d4891f7bec6f82741b9a823d3221f2721f28c5111005e62c89fe3ee\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"PlayFlow Cloud Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Official documentation for PlayFlow Cloud. Learn to build, deploy, and scale multiplayer games with our tools for server hosting, matchmaking, and lobbies.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://playflow.mintlify.app/_mintlify/api/og/v2?division=Servers\u0026amp;title=Get+the+authoritative+match+roster\u0026amp;description=Returns+the+authoritative+roster+of+players+admitted+to+the+match+backing+this+server.+Game+servers+call+this+%28with+their+server+API+key+and+their+own+%60INSTANCE\u0026amp;theme=efdcb79398ff0a4a395f8bf0\u0026amp;signature=a71ee0d70d4891f7bec6f82741b9a823d3221f2721f28c5111005e62c89fe3ee\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/playflow/bdsieV7iirvG9AV3/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Documentation - PlayFlow Cloud\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2563EB\">\u003cmeta data-mint-head name=\"og:locale\" content=\"en_US\">\u003cmeta data-mint-head name=\"author\" content=\"PlayFlow Cloud\">\u003cmeta data-mint-head name=\"googlebot\" content=\"index, follow\">\u003cmeta data-mint-head name=\"language\" content=\"en\">\u003cmeta data-mint-head name=\"copyright\" content=\"Copyright 2025 PlayFlow Cloud\">\u003cmeta data-mint-head name=\"distribution\" content=\"global\">\u003cmeta data-mint-head name=\"coverage\" content=\"Worldwide\">\u003cmeta data-mint-head name=\"category\" content=\"Game Development\">\u003cmeta data-mint-head name=\"twitter:creator\" content=\"@PlayFlowCloud\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.playflowcloud.com/api-reference/servers/get-the-authoritative-match-roster\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/servers/get-the-authoritative-match-roster.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.playflowcloud.com/#organization\",\"name\":\"Documentation - PlayFlow Cloud\",\"url\":\"https://docs.playflowcloud.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/playflow/eqeqAmqAMsOYKFZn/logo/svgs/3.svg?fit=max\u0026auto=format\u0026n=eqeqAmqAMsOYKFZn\u0026q=85\u0026s=ec6b551d72d9a0550eceaf8372781505\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.playflowcloud.com#website\",\"name\":\"Documentation - PlayFlow Cloud\",\"url\":\"https://docs.playflowcloud.com\",\"publisher\":{\"@id\":\"https://docs.playflowcloud.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.playflowcloud.com/api-reference/servers/get-the-authoritative-match-roster#webpage\",\"url\":\"https://docs.playflowcloud.com/api-reference/servers/get-the-authoritative-match-roster\",\"name\":\"Get the authoritative match roster\",\"description\":\"Returns the authoritative roster of players admitted to the match backing this server. Game servers call this (with their server API key and their own INSTANCE_ID) to know exactly which players to admit — this is the source of truth for admission and fixes reconnect / \\\"denied by proxy\\\" edge cases. The response includes per-team slots, total capacity, current_players, backfill state, and a monotonically increasing roster_version. Poll roster_version cheaply to detect roster changes (e.g., when a backfill joiner is admitted). Only available for servers that back a match (created through matchmaking/lobbies).\",\"dateModified\":\"2026-07-13T17:20:48.968Z\",\"isPartOf\":{\"@id\":\"https://docs.playflowcloud.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.playflowcloud.com/api-reference/servers/get-the-authoritative-match-roster#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.playflowcloud.com/api-reference/servers/get-the-authoritative-match-roster#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Documentation - PlayFlow Cloud\",\"item\":\"https://docs.playflowcloud.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Get the authoritative match roster\",\"item\":\"https://docs.playflowcloud.com/api-reference/servers/get-the-authoritative-match-roster\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.playflowcloud.com/api-reference/servers/get-the-authoritative-match-roster#apireference\",\"headline\":\"Get the authoritative match roster\",\"name\":\"Get the authoritative match roster\",\"description\":\"Returns the authoritative roster of players admitted to the match backing this server. Game servers call this (with their server API key and their own INSTANCE_ID) to know exactly which players to admit — this is the source of truth for admission and fixes reconnect / \\\"denied by proxy\\\" edge cases. The response includes per-team slots, total capacity, current_players, backfill state, and a monotonically increasing roster_version. Poll roster_version cheaply to detect roster changes (e.g., when a backfill joiner is admitted). Only available for servers that back a match (created through matchmaking/lobbies).\",\"url\":\"https://docs.playflowcloud.com/api-reference/servers/get-the-authoritative-match-roster\",\"mainEntityOfPage\":{\"@id\":\"https://docs.playflowcloud.com/api-reference/servers/get-the-authoritative-match-roster#webpage\"},\"dateModified\":\"2026-07-13T17:20:48.968Z\",\"publisher\":{\"@id\":\"https://docs.playflowcloud.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.playflowcloud.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Documentation - PlayFlow Cloud\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Documentation - PlayFlow Cloud","nav":{"global":{"anchors":[{"anchor":"Community","icon":"discord","href":"https://discord.gg/P5w45Vx5Q8"},{"anchor":"Blog","icon":"newspaper","href":"https://playflowcloud.com/"}]},"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":""}]},{"tab":"API Reference","icon":"code","groups":[{"group":"Overview","icon":"book-open","pages":[{"title":"API Introduction","description":"Authenticate, explore endpoints, and download the OpenAPI spec for the PlayFlow REST API.","icon":"book-open","href":"/api-reference/introduction"}]},{"group":"Endpoints","icon":"code","pages":[{"group":"Servers","pages":[{"title":"Get the authoritative match roster","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc get /api/v3/servers/{instance_id}/roster","href":"/api-reference/servers/get-the-authoritative-match-roster"},{"title":"Override backfill state (server-authoritative)","description":"Lets an advanced game server take control of its match's backfill. Set `accepting` to open or close backfill joiners, and optionally replace the `skillBand` that gates joiners.\n\nThis is an optional override — the engine manages backfill automatically for modes with backfill enabled. Use this only when the game server has better knowledge of when it can accept joiners (e.g., between rounds).\n\nRequires a server API key (`pf_...`).","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc patch /api/v3/servers/{instance_id}/backfill","href":"/api-reference/servers/override-backfill-state-server-authoritative"},{"title":"Close backfill (server-authoritative)","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc post /api/v3/servers/{instance_id}/backfill/lock","href":"/api-reference/servers/close-backfill-server-authoritative"},{"title":"List servers","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc get /api/v3/servers","href":"/api-reference/servers/list-servers"},{"title":"Start a new server","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc post /api/v3/servers/start","href":"/api-reference/servers/start-a-new-server"},{"title":"Get server details","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc get /api/v3/servers/{instance_id}","href":"/api-reference/servers/get-server-details"},{"title":"Stop a server","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc delete /api/v3/servers/{instance_id}","href":"/api-reference/servers/stop-a-server"},{"title":"Update server custom_data","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc post /api/v3/servers/{instance_id}/update","href":"/api-reference/servers/update-server-custom_data"},{"title":"Restart a server","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc post /api/v3/servers/{instance_id}/restart","href":"/api-reference/servers/restart-a-server"},{"title":"Get server runtime logs","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc get /api/v3/servers/{instance_id}/logs","href":"/api-reference/servers/get-server-runtime-logs"},{"title":"Get server resource metrics","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc get /api/v3/servers/{instance_id}/metrics","href":"/api-reference/servers/get-server-resource-metrics"},{"title":"Get server log-volume histogram","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc get /api/v3/servers/{instance_id}/log-histogram","href":"/api-reference/servers/get-server-log-volume-histogram"}]},{"group":"Projects","pages":[{"title":"Get project-wide log-volume histogram","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc get /api/v3/projects/log-histogram","href":"/api-reference/projects/get-project-wide-log-volume-histogram"},{"title":"Get project-wide server logs","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc get /api/v3/projects/logs","href":"/api-reference/projects/get-project-wide-server-logs"},{"title":"Get project settings","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc get /api/v3/projects/settings","href":"/api-reference/projects/get-project-settings"},{"title":"Update project settings","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc post /api/v3/projects/settings","href":"/api-reference/projects/update-project-settings"}]},{"group":"Builds","pages":[{"title":"List builds","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc get /api/v3/builds","href":"/api-reference/builds/list-builds"},{"title":"Get presigned upload URL","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc post /api/v3/builds/upload-url","href":"/api-reference/builds/get-presigned-upload-url"},{"title":"Create build from Docker image","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc post /api/v3/builds/docker-image","href":"/api-reference/builds/create-build-from-docker-image"},{"title":"Get build details","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc get /api/v3/builds/{build_id}","href":"/api-reference/builds/get-build-details"},{"title":"Delete a build","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc delete /api/v3/builds/{build_id}","href":"/api-reference/builds/delete-a-build"},{"title":"Get build processing logs","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc get /api/v3/builds/{build_id}/logs","href":"/api-reference/builds/get-build-processing-logs"}]},{"group":"Lobbies","pages":[{"title":"Browse lobbies","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc get /api/v3/lobbies/{config}","href":"/api-reference/lobbies/browse-lobbies"},{"title":"Create a lobby","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc post /api/v3/lobbies/{config}","href":"/api-reference/lobbies/create-a-lobby"},{"title":"Join a lobby","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc post /api/v3/lobbies/{config}/join","href":"/api-reference/lobbies/join-a-lobby"},{"title":"Get my lobby","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc get /api/v3/lobbies/{config}/me","href":"/api-reference/lobbies/get-my-lobby"},{"title":"Leave a lobby","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc delete /api/v3/lobbies/{config}/me","href":"/api-reference/lobbies/leave-a-lobby"},{"title":"Update my player state","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc patch /api/v3/lobbies/{config}/me","href":"/api-reference/lobbies/update-my-player-state"},{"title":"Update lobby settings","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc patch /api/v3/lobbies/{config}/me/settings","href":"/api-reference/lobbies/update-lobby-settings"},{"title":"Kick a player","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc delete /api/v3/lobbies/{config}/me/players/{playerId}","href":"/api-reference/lobbies/kick-a-player"},{"title":"Start the game","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc post /api/v3/lobbies/{config}/me/start","href":"/api-reference/lobbies/start-the-game"},{"title":"Start matchmaking","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc post /api/v3/lobbies/{config}/me/matchmaking","href":"/api-reference/lobbies/start-matchmaking"},{"title":"Cancel matchmaking","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc delete /api/v3/lobbies/{config}/me/matchmaking","href":"/api-reference/lobbies/cancel-matchmaking"},{"title":"End the current match","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc post /api/v3/lobbies/{config}/me/end-match","href":"/api-reference/lobbies/end-the-current-match"},{"title":"Confirm a found match","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc post /api/v3/lobbies/{config}/me/confirm-match","href":"/api-reference/lobbies/confirm-a-found-match"},{"title":"Decline a found match","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc delete /api/v3/lobbies/{config}/me/confirm-match","href":"/api-reference/lobbies/decline-a-found-match"},{"title":"Send a player heartbeat","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc post /api/v3/lobbies/{config}/me/heartbeat","href":"/api-reference/lobbies/send-a-player-heartbeat"},{"title":"Subscribe to lobby events (SSE)","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc get /api/v3/lobbies/{config}/me/events","href":"/api-reference/lobbies/subscribe-to-lobby-events-sse"},{"title":"Get lobby by ID","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc get /api/v3/lobbies/{config}/{id}","href":"/api-reference/lobbies/get-lobby-by-id"},{"title":"Delete a lobby by ID (admin)","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc delete /api/v3/lobbies/{config}/{id}","href":"/api-reference/lobbies/delete-a-lobby-by-id-admin"}]}]}]}]},"title":"PlayFlow Cloud Documentation","buildId":"dpl_849ArpqvBiCczQiT1Y1stNGpbqHT","deploymentId":"dpl_849ArpqvBiCczQiT1Y1stNGpbqHT","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-Bbp7I60D.js","utils-C3RIvJha.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DqD-vLt8.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-B31Loprg.js","snippetPresets-DKpk-b8t.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-Cj65AhOR.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BXtn5gcC.js","shallow-RY2b03Cp.js","getApiPlaygroundDisplay-B0jeiPk3.js","CodeSnippet-CYgBjjwn.js","CodeSnippets-DOngDrYB.js","Page-n7I5XbKb.js","getPastedJson-DRQbJx-T.js","icon-CQiQCicY.js","MethodPill-BKTLdNtu.js","DuplicateIcon-B9jpAdat.js","createIcon-DCddRrXv.js","DynamicMarkdown-a8hUKrw6.js","SectionHeading-eECVV2eH.js","axios-vUo_bRtp.js","Markdown--GF7ZIpf.js","clsx-DZLdJUrt.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-2LoAhjKH.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-Zwc0ZncM.js"]}