Skip to main content
PlayFlow is a game server hosting and orchestration platform. Deploy, manage, and scale multiplayer game servers globally with built-in matchmaking, lobby management, and billing.

OpenAPI Spec (JSON)

Download the machine-readable OpenAPI 3.1 spec for use with Postman, code generators, or custom tooling.

Interactive Reference

Try out endpoints directly in the Scalar API playground with live request/response previews.

Authentication

All API endpoints (except Health) require the api-key header:
Each project has two keys:
Find your API keys in the PlayFlow Dashboard under Project Settings.
Never expose your Server API Key in client-side code. Use the Client API Key for anything that ships to players.
A few operations — deleting builds and updating project settings — require a Server API Key. A Client API Key on these endpoints returns 403.

Quick Start

1

Upload a build

POST /v3/builds/upload-url — get a presigned URL, then PUT your ZIP to it. Processing starts automatically when the upload completes.
2

Wait for it to be ready

Poll GET /v3/builds/{id} until status is ready.
3

Start a server

POST /v3/servers/start with a name, a region, and the build’s version_tag (its name). The response includes a network_ports array with the connection details.
4

Connect your game client

Read host and external_port from network_ports[] in the response to connect players. Ports are proxy-allocated, so always read them from the response rather than hardcoding a fixed port.
For detailed examples with cURL, C#, and Python, see the full API guide.

Key Concepts

  • Builds — Your game server binary packaged as a ZIP or Docker image. Versioned per name per project.
  • Servers — Running game server instances. Each gets dedicated compute and network ports with automatic health monitoring. Servers launch on-demand and cold-start.
  • Regions — 13 global regions. region is required when you start a server. See Server Regions for the full list.
  • Compute Sizes — 9 launchable sizes, from micro (1 shared vCPU / 512MB) to dedicated-xlarge (2 perf vCPU / 16GB). The default is small. See Plan & Instance Types.

Lifecycles

Server Lifecycle

Build Lifecycle


Rate Limits

Rate limit status is returned via X-RateLimit-Limit and X-RateLimit-Remaining headers. Exceeding the limit returns 429.

Plan Limits


Error Format

All errors return a consistent JSON shape:
Validation errors (422) include structured details:

Base URL