> ## Documentation Index
> Fetch the complete documentation index at: https://docs.playflowcloud.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Migration Guide

> Migrate your existing game servers from PlayFlow 1.0 to PlayFlow Cloud.

# Migrate from PlayFlow 1.0

If you're currently using PlayFlow 1.0, moving to PlayFlow Cloud is a clean re-onboarding: you create a new account, project, and API keys, then re-upload your existing server build. There is no automatic import that reaches back into PlayFlow 1.0 — you bring your build zip forward and launch it against the new engine.

> [!NOTE]
>
> **What changed in 2.0.** PlayFlow Cloud is a ground-up rebuild. Servers are launched through a REST engine at `https://api.computeflow.cloud/api`, builds are selected by their **name** (`version_tag`) rather than an internal build ID, every server start now **requires a region**, and connection details (host + port) are returned in the API response instead of being fixed. The steps below map your old workflow onto the new one.

## [Prerequisites](#prerequisites)

Before you start, have the following ready:

* Your PlayFlow 1.0 **server build zip** (a Linux dedicated-server build). If you no longer have the zip, rebuild it from your game project.
* A machine with `curl` (or your language's HTTP client) for the upload and launch steps.
* A few minutes to create a new account — there is no data carried over automatically from PlayFlow 1.0.

## [Create your PlayFlow Cloud account](#create-your-playflow-cloud-account)

To begin migrating to PlayFlow Cloud, you'll need to create a new account:

1. Visit [app.playflowcloud.com](https://app.playflowcloud.com)
2. Sign up with your email or connect with your GitHub/Google account
3. Verify your email address if prompted

> [!NOTE]
>
> Even if you had a PlayFlow 1.0 account, you'll need to create a new account for PlayFlow Cloud. This ensures you get access to all the new features and improved infrastructure.

## [Set up your organization](#set-up-your-organization)

Organizations help you manage your game projects and team collaborations:

1. After logging in, you'll be prompted to create an organization
2. Give your organization a descriptive name (e.g., your studio name)
3. *Optional:* Invite team members by entering their email addresses
   * Team members will receive an invitation email
   * They can access all projects within your organization

## [Create your project](#create-your-project)

Set up a project for your migrated game:

1. From your organization dashboard, click **Create Project**
2. Enter the same name as your PlayFlow 1.0 project (or choose a new one)
3. *Optional:* Add a description to help identify the project
4. Click **Create Project** to proceed

## [Get your API key](#get-your-api-key)

Server and build operations run through the engine API, so grab a key first:

1. Open the **API Keys** tab in your new project
2. Copy the **server key** (prefix `pf_`) — it has full access and must stay server-side
3. Note the **client key** (prefix `pfclient_`) for anything you ship inside a game build

Authenticate every request with the `api-key` header.

> [!WARNING]
>
> Uploading and deleting builds and updating project settings require the **server key** (`pf_`). A client key (`pfclient_`) is rejected with `403` on those operations. Never embed a server key in a shipped game client.

## [Re-upload your build](#re-upload-your-build)

There is no legacy importer — you upload your existing build zip to the new project. This is a two-step flow: request a one-time upload URL, then `PUT` your zip to it. Pick a build **name** (`?name=`); PlayFlow auto-increments the version each time you upload under the same name.

```bash Request an upload URL theme={null}
curl -X POST "https://api.computeflow.cloud/api/v3/builds/upload-url?name=my-server" \
  -H "api-key: pf_your_server_key"
```

```json Response theme={null}
{
  "build_id": "b3f1c2a4-...",
  "name": "my-server",
  "upload_url": "https://...r2.cloudflarestorage.com/...",
  "message": "Upload URL generated"
}
```

```bash Upload the zip theme={null}
curl -X PUT "<upload_url from the response>" \
  --data-binary @my-server.zip
```

> [!NOTE]
>
> The `upload_url` expires **60 minutes** after it is issued. Upload your zip before then; if it expires, request a new one. PlayFlow processes the build after upload and moves it from `processing` to `ready`.

## [Verify your build](#verify-your-build)

After the upload:

1. Open the **Builds** tab and confirm your build reached **ready** status
2. Check that the build name matches what you'll pass as `version_tag` when launching servers
3. Note the version number — you can pin a specific version at launch, or omit it to use the latest under that name

## [Configure network settings](#configure-network-settings)

Port configuration lives under the **Settings** tab, not a separate Configuration tab:

1. Go to the **Settings** tab in your project
2. In the port configuration section, add each port your server listens on:
   * Set the protocol with the **TCP/UDP** toggle
   * Enable the separate **TLS** checkbox if that port needs TLS termination
3. Save your settings

> [!WARNING]
>
> Ports are **allocated by PlayFlow** at launch and do not match your internal port — don't assume `7777` or any fixed value. When you connect a client, read the public host and port from the server's API response: iterate `network_ports[]` and use its `host` and `external_port`. TCP ports resolve to a relay host; UDP ports resolve to a proxy IPv4.

## [Deploy and test](#deploy-and-test)

Now you're ready to launch your migrated server. From the dashboard, open the **Servers** tab and start a server: give it a name, choose a **region**, select your build, and pick a compute size. Or launch it directly through the API:

```bash Launch a server theme={null}
curl -X POST "https://api.computeflow.cloud/api/v3/servers/start" \
  -H "api-key: pf_your_server_key" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "my-server-1",
    "region": "us-east",
    "version_tag": "my-server",
    "compute_size": "small",
    "ttl": 3600
  }'
```

`name` and `region` are **required**. Select your build with `version_tag` (the build **name** you uploaded) plus an optional `version`. There is no `build_id` field on server start. Region must be one of the 13 canonical regions (for example `us-east`, `eu-west`, `ap-south`, `sea`). Read the connection host and port back from `network_ports[]` in the response, then test with your game client.

> [!NOTE]
>
> **Free plan limits.** New organizations start on the Free plan: at most **1 active server**, compute size forced to **small**, and TTL forced to **1 hour** (`3600` seconds). Upgrade to **Pro** (\$20/mo) for all compute sizes, TTL up to 24 hours (`86400` seconds), and unlimited active servers.

## [What's improved in PlayFlow Cloud](#whats-improved-in-playflow-cloud)

PlayFlow Cloud offers several advantages over PlayFlow 1.0:

> [card] Modern Infrastructure
>
> Rebuilt server infrastructure with global multi-region deployment

> [card] Enhanced Monitoring
>
> Real-time server metrics and detailed logging capabilities

> [card] Simplified Management
>
> Streamlined dashboard and easier project organization

> [card] Built-in Player Auth
>
> Verified player identity via JWT, PlayFab, or Steam providers

## [Need help?](#need-help)

If you encounter any issues during migration:

* Check our [Discord community](https://discord.gg/P5w45Vx5Q8) for support
* Review the [Quick Start guide](https://docs.playflowcloud.com/quickstart.md) for additional setup help
* Contact our support team through the dashboard

## [Next steps](#next-steps)

Once your migration is complete, explore PlayFlow Cloud's new features:

> [card] [WebGL Deployments](https://docs.playflowcloud.com/guides/webgl-deployments.md)
>
> Optimize your servers for browser-based games

> [card] [Unity Modules](https://docs.playflowcloud.com/guides/unity-modules.md)
>
> Simplify deployment directly from Unity Editor

> [card] [Server Types](https://docs.playflowcloud.com/fundamentals/plan-instance-types.md)

> [card] [API Integration](https://docs.playflowcloud.com/fundamentals/api.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.