Returns the complete project configuration including network ports, player authentication, default environment variables, server pool settings, and lobby/matchmaking rules.
These settings are applied as defaults to every server started in this project. Individual settings can be overridden per-server at start time.
GET
/
api
/
v3
/
projects
/
settings
Get project settings
curl --request GET \ --url https://api.computeflow.cloud/api/v3/projects/settings \ --header 'api-key: <api-key>'
{"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/projects/get-project-settings","slug":"/api-reference/projects/get-project-settings","pageMetadata":{"title":"Get project settings","description":"Returns the complete project configuration including network ports, player authentication, default environment variables, server pool settings, and lobby/matchmaking rules.\n\nThese settings are applied as defaults to every server started in this project. Individual settings can be overridden per-server at start time.","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc get /api/v3/projects/settings","href":"/api-reference/projects/get-project-settings","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 p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Returns the complete project configuration including network ports, player authentication, default environment variables, server pool settings, and lobby/matchmaking rules.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"These settings are applied as defaults to every server started in this project. Individual settings can be overridden per-server at start time.\"\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 project settings","description":"Returns the complete project configuration including network ports, player authentication, default environment variables, server pool settings, and lobby/matchmaking rules.\n\nThese settings are applied as defaults to every server started in this project. Individual settings can be overridden per-server at start time.","deprecated":null,"version":null,"openapi":"https://api.computeflow.cloud/api/doc get /api/v3/projects/settings","href":"/api-reference/projects/get-project-settings","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"getProjectSettings","tags":["Projects"],"summary":"Get project settings","description":"Returns the complete project configuration including network ports, player authentication, default environment variables, server pool settings, and lobby/matchmaking rules.\n\nThese settings are applied as defaults to every server started in this project. Individual settings can be overridden per-server at start time.","responses":{"200":"79907aa5-4451-4d02-90d5-3de73eb4e903","500":"192b9c21-b01f-4bbb-b1e6-d55ccf4938aa"},"method":"get","type":"path","servers":["10dc6c24-ec8f-48c6-85d3-b4e04b596923"],"security":["0648c24c-6553-4c47-aec3-e48fcddd9e9d"],"path":"/api/v3/projects/settings","baseUrlOptions":["https://api.computeflow.cloud"],"title":"Get project settings","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"responses":{"79907aa5-4451-4d02-90d5-3de73eb4e903":{"description":"Complete current project settings.","content":{"application/json":{"schema":{"type":"object","properties":{"port_configs":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":30,"description":"Human-readable name for this port (1–30 chars). Example: \"game_udp\", \"query_tcp\", \"voice\".","isRequired":true,"uniqueKey":"port_configs.items.[INDEX].name","typeLabel":"string"},"internal_port":{"type":"integer","minimum":1,"maximum":65535,"description":"Port number your game server listens on inside the container (1–65535). Must be unique per protocol within the project.","isRequired":true,"uniqueKey":"port_configs.items.[INDEX].internal_port","typeLabel":"integer"},"protocol":{"type":"string","enum":["udp","tcp"],"description":"Network protocol. \"udp\" for real-time game traffic, \"tcp\" for reliable connections and WebSocket.","isRequired":true,"uniqueKey":"port_configs.items.[INDEX].protocol","typeLabel":"enum\u003cstring>"},"tls_enabled":{"type":"boolean","description":"Enable automatic TLS termination. Only valid for TCP ports. When enabled, clients connect via TLS and PlayFlow handles certificate management.","isRequired":true,"uniqueKey":"port_configs.items.[INDEX].tls_enabled","typeLabel":"boolean"},"id":{"type":"string","description":"Auto-generated unique identifier for this port config entry. Omit when creating new configs.","uniqueKey":"port_configs.items.[INDEX].id","typeLabel":"string"}},"required":["name","internal_port","protocol","tls_enabled"],"description":"Defines a network port that PlayFlow allocates for every server in this project.","uniqueKey":"port_configs.items.[INDEX]","typeLabel":"object"},"description":"Current network port configuration for the project.","isRequired":true,"uniqueKey":"port_configs","typeLabel":"object[]"},"auth_config":{"oneOf":[{"type":"object","description":"Current player authentication configuration.","required":["provider"],"properties":{"provider":{"type":"string","enum":["none"],"description":"No player authentication. Any token (or no token) is accepted. Use only for development or trusted environments.","isRequired":true,"uniqueKey":"auth_config.oneOf.0.provider","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"auth_config.oneOf.0","typeLabel":"object"},{"type":"object","description":"Current player authentication configuration.","required":["provider","jwks_url"],"properties":{"provider":{"type":"string","enum":["custom_jwt"],"description":"Verify player tokens as JWTs using a JWKS endpoint. Works with Auth0, Firebase Auth, Supabase Auth, Clerk, and any OIDC-compliant provider.","isRequired":true,"uniqueKey":"auth_config.oneOf.1.provider","typeLabel":"enum\u003cstring>"},"jwks_url":{"type":"string","format":"uri","description":"JWKS endpoint URL for verifying JWT signatures. Example: \"https://your-domain.auth0.com/.well-known/jwks.json\".","isRequired":true,"uniqueKey":"auth_config.oneOf.1.jwks_url","typeLabel":"string\u003curi>"},"issuer":{"type":"string","description":"Expected JWT issuer (iss claim). Tokens with a different issuer are rejected. Example: \"https://your-domain.auth0.com/\".","uniqueKey":"auth_config.oneOf.1.issuer","typeLabel":"string"},"audience":{"type":"string","description":"Expected JWT audience (aud claim). Example: \"your-api-identifier\".","uniqueKey":"auth_config.oneOf.1.audience","typeLabel":"string"}},"isRequired":true,"uniqueKey":"auth_config.oneOf.1","typeLabel":"object"},{"type":"object","description":"Current player authentication configuration.","required":["provider","title_id"],"properties":{"provider":{"type":"string","enum":["playfab"],"description":"Verify player tokens using PlayFab entity tokens.","isRequired":true,"uniqueKey":"auth_config.oneOf.2.provider","typeLabel":"enum\u003cstring>"},"title_id":{"type":"string","minLength":1,"description":"Your PlayFab Title ID. Found in the PlayFab dashboard under Settings > API Keys.","isRequired":true,"uniqueKey":"auth_config.oneOf.2.title_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"auth_config.oneOf.2","typeLabel":"object"},{"type":"object","description":"Current player authentication configuration.","required":["provider","app_id","web_api_key"],"properties":{"provider":{"type":"string","enum":["steam"],"description":"Verify player tokens using Steam session tickets via the Steamworks Web API.","isRequired":true,"uniqueKey":"auth_config.oneOf.3.provider","typeLabel":"enum\u003cstring>"},"app_id":{"type":"string","minLength":1,"description":"Your Steam App ID. Found in the Steamworks dashboard.","isRequired":true,"uniqueKey":"auth_config.oneOf.3.app_id","typeLabel":"string"},"web_api_key":{"type":"string","minLength":1,"description":"Your Steamworks Web API key for server-side ticket verification.","isRequired":true,"uniqueKey":"auth_config.oneOf.3.web_api_key","typeLabel":"string"}},"isRequired":true,"uniqueKey":"auth_config.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"auth_config","typeLabel":"object"},"environment_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"environment_variables.additionalProperties","typeLabel":"string"},"description":"Current default environment variables for all servers.","isRequired":true,"uniqueKey":"environment_variables","typeLabel":"object"},"pool_config":{"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether server pooling is active. When enabled, PlayFlow maintains pre-provisioned stopped machines that can be claimed instantly (~5s vs ~30s cold start).","isRequired":true,"uniqueKey":"pool_config.oneOf.0.enabled","typeLabel":"boolean"},"regions":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"integer","minimum":0,"maximum":10,"uniqueKey":"pool_config.oneOf.0.regions.additionalProperties.additionalProperties","typeLabel":"integer"},"uniqueKey":"pool_config.oneOf.0.regions.additionalProperties","typeLabel":"object"},"description":"Pool size configuration per region and compute size. Structure: { \"region\": { \"compute_size\": count } }. Example: { \"us-east\": { \"small\": 3, \"medium\": 1 }, \"eu-west\": { \"small\": 2 } }. Max 10 machines per region/size combination.","isRequired":true,"uniqueKey":"pool_config.oneOf.0.regions","typeLabel":"object"},"build_name":{"type":"string","description":"Build name to pre-warm pool machines with. When set, pool-sweep provisions machines using the latest ready version of this build. When omitted, uses the latest ready build regardless of name.","uniqueKey":"pool_config.oneOf.0.build_name","typeLabel":"string"},"build_version":{"type":"integer","minimum":1,"description":"Specific build version to pin pool machines to. Only used when build_name is also set. When omitted, the latest version of the named build is used.","uniqueKey":"pool_config.oneOf.0.build_version","typeLabel":"integer"}},"required":["enabled","regions"],"description":"Current server pool configuration. Null if pooling has never been configured.","isRequired":true,"uniqueKey":"pool_config.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"enabled":{"type":"boolean","description":"Whether server pooling is active. When enabled, PlayFlow maintains pre-provisioned stopped machines that can be claimed instantly (~5s vs ~30s cold start)."},"regions":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"integer","minimum":0,"maximum":10}},"description":"Pool size configuration per region and compute size. Structure: { \"region\": { \"compute_size\": count } }. Example: { \"us-east\": { \"small\": 3, \"medium\": 1 }, \"eu-west\": { \"small\": 2 } }. Max 10 machines per region/size combination."},"build_name":{"type":"string","description":"Build name to pre-warm pool machines with. When set, pool-sweep provisions machines using the latest ready version of this build. When omitted, uses the latest ready build regardless of name."},"build_version":{"type":"integer","minimum":1,"description":"Specific build version to pin pool machines to. Only used when build_name is also set. When omitted, the latest version of the named build is used."}},"required":["enabled","regions"],"description":"Current server pool configuration. Null if pooling has never been configured.","isRequired":true,"uniqueKey":"pool_config.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"pool_config","typeLabel":"object | null"},"lobby_configs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Unique identifier for this lobby configuration (e.g., \"ranked-2v2\", \"casual-ffa\").","isRequired":true,"uniqueKey":"lobby_configs.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","minLength":1,"maxLength":255,"description":"Human-readable lobby name displayed to players (e.g., \"Ranked 2v2\", \"Casual Free-for-All\").","isRequired":true,"uniqueKey":"lobby_configs.items.[INDEX].name","typeLabel":"string"},"enabled":{"type":"boolean","description":"Whether this lobby is active and accepting players.","isRequired":true,"uniqueKey":"lobby_configs.items.[INDEX].enabled","typeLabel":"boolean"},"timeout":{"type":"integer","minimum":1,"description":"Lobby timeout in seconds. Lobbies are cleaned up after this duration of inactivity.","isRequired":true,"uniqueKey":"lobby_configs.items.[INDEX].timeout","typeLabel":"integer"},"heartbeat":{"type":"boolean","description":"Whether lobbies require periodic heartbeat signals to stay alive.","uniqueKey":"lobby_configs.items.[INDEX].heartbeat","typeLabel":"boolean"},"heartbeatTimeout":{"type":"integer","description":"Seconds of missed heartbeats before a lobby is considered dead.","uniqueKey":"lobby_configs.items.[INDEX].heartbeatTimeout","typeLabel":"integer"},"hostLeaveBehavior":{"type":"string","enum":["promote","delete"],"default":"promote","description":"What happens when the host leaves a lobby. `promote` (default) transfers host duty to the next player; `delete` destroys the lobby and evicts all remaining players. Use `delete` for one-shot private rooms where the host's session IS the room.","uniqueKey":"lobby_configs.items.[INDEX].hostLeaveBehavior","typeLabel":"enum\u003cstring>"},"customProperties":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"lobby_configs.items.[INDEX].customProperties.additionalProperties","typeLabel":"any"},"default":{},"description":"Arbitrary properties attached to lobbies of this type. Accessible by game clients for filtering.","uniqueKey":"lobby_configs.items.[INDEX].customProperties","typeLabel":"object"},"inviteCodeConfig":{"type":"object","properties":{"type":{"type":"string","enum":["numeric","alphanumeric","alphabetic"],"description":"Character set for generated invite codes.","isRequired":true,"uniqueKey":"lobby_configs.items.[INDEX].inviteCodeConfig.type","typeLabel":"enum\u003cstring>"},"length":{"type":"integer","minimum":1,"maximum":16,"description":"Length of generated invite codes (1–16 characters).","isRequired":true,"uniqueKey":"lobby_configs.items.[INDEX].inviteCodeConfig.length","typeLabel":"integer"},"prefix":{"type":"string","description":"Optional prefix prepended to all invite codes (e.g., \"PF-\" produces codes like \"PF-A3B7\").","uniqueKey":"lobby_configs.items.[INDEX].inviteCodeConfig.prefix","typeLabel":"string"}},"required":["type","length"],"description":"Configuration for auto-generated invite codes. Omit to disable invite codes for this lobby type.","uniqueKey":"lobby_configs.items.[INDEX].inviteCodeConfig","typeLabel":"object"},"serverSettings":{"type":"object","properties":{"gameBuild":{"type":"string","description":"Build name to use for servers created by this lobby/mode (e.g., \"default\", \"ranked\").","uniqueKey":"lobby_configs.items.[INDEX].serverSettings.gameBuild","typeLabel":"string"},"gameBuildVersion":{"type":"integer","description":"Specific build version number. Pin to an exact version for consistency.","uniqueKey":"lobby_configs.items.[INDEX].serverSettings.gameBuildVersion","typeLabel":"integer"},"serverSize":{"type":"string","description":"Compute size for servers created by this lobby (e.g., \"small\", \"medium\", \"large\").","uniqueKey":"lobby_configs.items.[INDEX].serverSettings.serverSize","typeLabel":"string"},"maxGameTime":{"type":"integer","description":"Maximum game duration in seconds. Server auto-stops after this time.","uniqueKey":"lobby_configs.items.[INDEX].serverSettings.maxGameTime","typeLabel":"integer"}},"default":{},"description":"Default server configuration for servers created by this lobby type.","uniqueKey":"lobby_configs.items.[INDEX].serverSettings","typeLabel":"object"},"matchmaking":{"type":"object","properties":{"modes":{"type":"object","additionalProperties":{"type":"object","properties":{"teams":{"type":"integer","minimum":1,"description":"Number of teams in a match (e.g., 2 for team deathmatch, 1 for FFA).","isRequired":true,"uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.teams","typeLabel":"integer"},"playersPerTeam":{"type":"integer","minimum":1,"description":"Maximum players per team.","isRequired":true,"uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.playersPerTeam","typeLabel":"integer"},"minPlayersPerTeam":{"type":"integer","minimum":1,"description":"Minimum players per team required to start the match.","isRequired":true,"uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.minPlayersPerTeam","typeLabel":"integer"},"timeout":{"type":"integer","minimum":1,"description":"Matchmaking timeout in seconds. Players are removed from the queue if not matched within this time.","isRequired":true,"uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.timeout","typeLabel":"integer"},"maxPartySize":{"type":"integer","minimum":1,"description":"Maximum number of players that can queue together as a party.","isRequired":true,"uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.maxPartySize","typeLabel":"integer"},"minTeams":{"type":"integer","minimum":1,"description":"Minimum number of teams required to start. Defaults to the value of teams.","uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.minTeams","typeLabel":"integer"},"teamComposition":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"number","uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.teamComposition.additionalProperties.additionalProperties","typeLabel":"number"},"uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.teamComposition.additionalProperties","typeLabel":"object"},"description":"Custom team composition. Structure: { teamName: { roleName: count } }. Omit or leave empty for standard teams × playersPerTeam matches. Supports asymmetric teams (e.g. { monsters: { boss: 1 }, hunters: { medic: 1, assault: 2 } }).","uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.teamComposition","typeLabel":"object"},"excludedFromQueue":{"type":"array","items":{"type":"string","uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.excludedFromQueue.items.[INDEX]","typeLabel":"string"},"description":"List of player attribute field names that exclude players from this queue (e.g., [\"banned\", \"cooldown\"]).","uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.excludedFromQueue","typeLabel":"string[]"},"allowBackfill":{"type":"boolean","description":"DEPRECATED alias for `backfill: { enabled: true }`. When true, newly-queued players are routed into an already-running match with open slots instead of always launching a new server. Prefer the structured `backfill` object; this flag is kept for backwards compatibility and maps to `{ enabled: true }`.","uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.allowBackfill","typeLabel":"boolean"},"backfill":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Master switch. When true, newly-queued lobbies can join an already-running match with open slots (real backfill) before a fresh server is launched.","isRequired":true,"uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.backfill.enabled","typeLabel":"boolean"},"windowSeconds":{"type":"integer","minimum":1,"description":"How long after match formation the match stays open to joiners. Omit for the engine default.","uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.backfill.windowSeconds","typeLabel":"integer"},"closeWhenFull":{"type":"boolean","description":"Close backfill automatically once the match reaches capacity. Defaults to true.","uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.backfill.closeWhenFull","typeLabel":"boolean"},"skill":{"type":"object","properties":{"field":{"type":"string","description":"Player-state field to gate joiners on (e.g., \"mmr\").","isRequired":true,"uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.backfill.skill.field","typeLabel":"string"},"maxDifference":{"type":"number","description":"A joining lobby's average value on `field` must be within this distance of the running match's band to be admitted.","isRequired":true,"uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.backfill.skill.maxDifference","typeLabel":"number"}},"required":["field","maxDifference"],"description":"Optional skill gate for backfill joiners.","uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.backfill.skill","typeLabel":"object"}},"required":["enabled"],"description":"Backfill configuration. Omit or set enabled:false to disable — non-backfill modes behave exactly as before. Takes precedence over the deprecated `allowBackfill` flag.","uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.backfill","typeLabel":"object"},"rules":{"type":"array","items":{"oneOf":[{"type":"object","description":"One of five rule primitives (difference, equals, not_equals, region, expression). See docs.","required":["type","field","maxDifference"],"properties":{"type":{"type":"string","enum":["difference"],"isRequired":true,"uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.rules.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"field":{"type":"string","minLength":1,"description":"Numeric player attribute field to compare (e.g., \"mmr\", \"level\").","isRequired":true,"uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.rules.items.[INDEX].oneOf.0.field","typeLabel":"string"},"maxDifference":{"type":"number","minimum":0,"description":"Max |A.field - B.field|. Auto-expands with wait time.","isRequired":true,"uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.rules.items.[INDEX].oneOf.0.maxDifference","typeLabel":"number"}},"uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.rules.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"One of five rule primitives (difference, equals, not_equals, region, expression). See docs.","required":["type","field"],"properties":{"type":{"type":"string","enum":["equals"],"isRequired":true,"uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.rules.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"field":{"type":"string","minLength":1,"description":"Field whose value must match on both sides (e.g., \"gameVersion\").","isRequired":true,"uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.rules.items.[INDEX].oneOf.1.field","typeLabel":"string"}},"uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.rules.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","description":"One of five rule primitives (difference, equals, not_equals, region, expression). See docs.","required":["type","field"],"properties":{"type":{"type":"string","enum":["not_equals"],"isRequired":true,"uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.rules.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"field":{"type":"string","minLength":1,"description":"Field whose values must differ (e.g., \"lastOpponent\" — anti-rematch).","isRequired":true,"uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.rules.items.[INDEX].oneOf.2.field","typeLabel":"string"}},"uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.rules.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","description":"One of five rule primitives (difference, equals, not_equals, region, expression). See docs.","required":["type"],"properties":{"type":{"type":"string","enum":["region"],"isRequired":true,"uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.rules.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"minOverlap":{"type":"integer","minimum":1,"description":"Minimum shared regions. Default 1.","uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.rules.items.[INDEX].oneOf.3.minOverlap","typeLabel":"integer"}},"uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.rules.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","description":"One of five rule primitives (difference, equals, not_equals, region, expression). See docs.","required":["type","cel"],"properties":{"type":{"type":"string","enum":["expression"],"isRequired":true,"uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.rules.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"cel":{"type":"string","minLength":1,"description":"CEL expression. Tickets `a` and `b` plus `ctx` are in scope. e.g., `a.state.mmr > 1000 \u0026\u0026 b.state.mmr > 1000`.","isRequired":true,"uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.rules.items.[INDEX].oneOf.4.cel","typeLabel":"string"}},"uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.rules.items.[INDEX].oneOf.4","typeLabel":"object"}],"uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.rules.items.[INDEX]","typeLabel":"object"},"description":"Declarative match rules. All must pass for two lobbies to match. See docs for full primitive grammar.","uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.rules","typeLabel":"object[]"},"useVersionFromState":{"type":"string","description":"When set, the server's build name (`version_tag`) is taken from this field in the matched players' state. Lets you run multiple game versions simultaneously with no rolling updates. REQUIRED: an `equals` rule on the same field, so matched players always share the version.","uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.useVersionFromState","typeLabel":"string"},"matchConfirmation":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When true, matches enter `match_found` and await player acceptance.","isRequired":true,"uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.matchConfirmation.enabled","typeLabel":"boolean"},"timeoutSeconds":{"type":"integer","minimum":1,"description":"Seconds players have to confirm before the match cancels.","isRequired":true,"uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.matchConfirmation.timeoutSeconds","typeLabel":"integer"},"requireAllPlayers":{"type":"boolean","description":"When true (default), every participating lobby must confirm. When false, partial confirmations can proceed.","uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.matchConfirmation.requireAllPlayers","typeLabel":"boolean"}},"required":["enabled","timeoutSeconds"],"description":"Optional 'Accept Match' flow. Matches pause at `match_found` for player confirmation before launching.","uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.matchConfirmation","typeLabel":"object"},"serverOverrides":{"type":"object","properties":{"gameBuild":{"type":"string","description":"Build name to use for servers created by this lobby/mode (e.g., \"default\", \"ranked\").","uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.serverOverrides.gameBuild","typeLabel":"string"},"gameBuildVersion":{"type":"integer","description":"Specific build version number. Pin to an exact version for consistency.","uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.serverOverrides.gameBuildVersion","typeLabel":"integer"},"serverSize":{"type":"string","description":"Compute size for servers created by this lobby (e.g., \"small\", \"medium\", \"large\").","uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.serverOverrides.serverSize","typeLabel":"string"},"maxGameTime":{"type":"integer","description":"Maximum game duration in seconds. Server auto-stops after this time.","uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.serverOverrides.maxGameTime","typeLabel":"integer"}},"description":"Override the lobby's default server settings for this specific mode.","uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties.serverOverrides","typeLabel":"object"}},"required":["teams","playersPerTeam","minPlayersPerTeam","timeout","maxPartySize"],"description":"Configuration for a matchmaking mode within a lobby. Defines team structure, player limits, and matching rules.","uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes.additionalProperties","typeLabel":"object"},"description":"Named matchmaking modes. Keys are mode identifiers (e.g., \"ranked\", \"casual\"). Values define team structure and rules.","isRequired":true,"uniqueKey":"lobby_configs.items.[INDEX].matchmaking.modes","typeLabel":"object"}},"required":["modes"],"description":"Matchmaking configuration. Omit to create a lobby without automated matchmaking.","uniqueKey":"lobby_configs.items.[INDEX].matchmaking","typeLabel":"object"}},"required":["id","name","enabled","timeout"],"description":"Configuration for a lobby type. Defines player limits, matchmaking rules, and server settings.","uniqueKey":"lobby_configs.items.[INDEX]","typeLabel":"object"},"description":"Current lobby and matchmaking configurations.","isRequired":true,"uniqueKey":"lobby_configs","typeLabel":"object[]"},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 timestamp of the last settings update.","isRequired":true,"uniqueKey":"updated_at","typeLabel":"string\u003cdate-time>"}},"required":["port_configs","auth_config","environment_variables","pool_config","lobby_configs","updated_at"],"description":"Complete current project settings including ports, auth, environment, pool, and lobby configurations.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"port_configs":[{"name":"\u003cstring>","internal_port":32768,"protocol":"udp","tls_enabled":true,"id":"\u003cstring>"}],"auth_config":{"provider":"none"},"environment_variables":{},"pool_config":{"enabled":true,"regions":{},"build_name":"\u003cstring>","build_version":2},"lobby_configs":[{"id":"\u003cstring>","name":"\u003cstring>","enabled":true,"timeout":2,"heartbeat":true,"heartbeatTimeout":123,"hostLeaveBehavior":"promote","customProperties":{},"inviteCodeConfig":{"type":"numeric","length":8,"prefix":"\u003cstring>"},"serverSettings":{},"matchmaking":{"modes":{}}}],"updated_at":"2023-11-07T05:31:56Z"}}},"exampleType":"generated"}},"exampleType":"generated"},"192b9c21-b01f-4bbb-b1e6-d55ccf4938aa":{"description":"Internal server error while fetching settings.","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:49.496Z","originalFileLocation":"api-reference/projects/get-project-settings.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 complete project configuration including network ports, player authentication, default environment variables, server pool settings, and lobby/matchmaking rules. These settings are applied as defaults to every server started in this project. Individual settings can be overridden per-server at start time.\">\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/projects/get-project-settings\">\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=Projects\u0026amp;title=Get+project+settings\u0026amp;description=Returns+the+complete+project+configuration+including+network+ports%2C+player+authentication%2C+default+environment+variables%2C+server+pool+settings%2C+and+lobby%2Fmatchm\u0026amp;theme=efdcb79398ff0a4a395f8bf0\u0026amp;signature=5e152b79604497e77bf42418eea3e7dfb599a386a9653097d8b81497f7928b10\">\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=Projects\u0026amp;title=Get+project+settings\u0026amp;description=Returns+the+complete+project+configuration+including+network+ports%2C+player+authentication%2C+default+environment+variables%2C+server+pool+settings%2C+and+lobby%2Fmatchm\u0026amp;theme=efdcb79398ff0a4a395f8bf0\u0026amp;signature=5e152b79604497e77bf42418eea3e7dfb599a386a9653097d8b81497f7928b10\">\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/projects/get-project-settings\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/projects/get-project-settings.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/projects/get-project-settings#webpage\",\"url\":\"https://docs.playflowcloud.com/api-reference/projects/get-project-settings\",\"name\":\"Get project settings\",\"description\":\"Returns the complete project configuration including network ports, player authentication, default environment variables, server pool settings, and lobby/matchmaking rules. These settings are applied as defaults to every server started in this project. Individual settings can be overridden per-server at start time.\",\"dateModified\":\"2026-07-13T17:20:49.496Z\",\"isPartOf\":{\"@id\":\"https://docs.playflowcloud.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.playflowcloud.com/api-reference/projects/get-project-settings#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.playflowcloud.com/api-reference/projects/get-project-settings#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.playflowcloud.com/api-reference/servers/get-the-authoritative-match-roster\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Projects\",\"item\":\"https://docs.playflowcloud.com/api-reference/projects/get-project-wide-log-volume-histogram\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Get project settings\",\"item\":\"https://docs.playflowcloud.com/api-reference/projects/get-project-settings\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.playflowcloud.com/api-reference/projects/get-project-settings#apireference\",\"headline\":\"Get project settings\",\"name\":\"Get project settings\",\"description\":\"Returns the complete project configuration including network ports, player authentication, default environment variables, server pool settings, and lobby/matchmaking rules. These settings are applied as defaults to every server started in this project. Individual settings can be overridden per-server at start time.\",\"url\":\"https://docs.playflowcloud.com/api-reference/projects/get-project-settings\",\"mainEntityOfPage\":{\"@id\":\"https://docs.playflowcloud.com/api-reference/projects/get-project-settings#webpage\"},\"dateModified\":\"2026-07-13T17:20:49.496Z\",\"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","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)","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","description":"Retrieves aggregated runtime logs from all servers in the project. Each log entry includes the server name, making it easy to filter and search across your entire fleet.\n\nUse `start_time` and optionally `end_time` to define the time range. Returns the **most recent** entries within that window (up to `limit`), ordered oldest-to-newest.\n\nNarrow results server-side with `search` (case-insensitive substring) and/or `level` (error/warn/info) — both apply across the ENTIRE window, not just the returned page, so you can find a specific error or session ID anywhere in the range. Set `include_counts=true` to also get per-level totals for the window.\n\n**Paging back:** if the window holds more than `limit` entries, pass the response's `older_token` as `end_time` (keeping the same `start_time`) to fetch the next older page. **Live tail:** poll with `next_token` as the next `start_time`; it points just after the newest entry returned, so each poll fetches only newer 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","description":"Updates project-level configuration. All fields are optional — only include what you want to change. Omitted fields remain unchanged. **Requires a server key (pf_...); client keys (pfclient_*) are rejected with 403.**\n\n**port_configs:** Network ports allocated for every server (max 10). Define game ports, query ports, etc.\n\n**auth_config:** Player authentication provider (none, custom_jwt, playfab, steam).\n\n**environment_variables:** Default env vars injected into every game server.\n\n**pool_config:** Pre-provisioned server pool sizes per region and compute size.\n\n**lobby_configs:** Lobby types with matchmaking rules, team structures, and invite codes (max 20).","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"]}