Getting started

The shortest path from nothing to a signed-in player reading your config. It takes about ten minutes of your time, plus the wait for GreenMind to review your new project, and everything here happens in your project's test environment, so nothing you do reaches real players.

You need a GreenMind account to sign in to the console, and a game server (or any backend of yours) that can make HTTPS requests.

Before you sign up: your org

Everything you publish belongs to an org, and every GreenMind account comes with one. Nothing else is needed to start: sign up, and your account's org is there, ready for its first project.

That org is an org like any other. For a studio, either:

  • Name it for your studio. On your GreenMind account, open the org and rename it under Settings, then invite the rest of your team as admins under Admins. You can later leave it to them, and your account gets a fresh org of its own.
  • Or make an account with your studio's email address, such as games@yourstudio.com, so the studio's org does not hang off anybody's personal account. Name its org for the studio, and invite your team as admins.

Either way the org, its projects and its agreements are the studio's, whoever joins or leaves. A project can be moved to another org later by somebody who is an admin of both, from the org's Projects page on your GreenMind account.

More orgs than the one your account comes with are for supporters of GreenMind: a supporter can make as many as they need, and keeps them if their support ends.

Plans, licences and more

Every org starts on the Free plan, which is sized for building and testing a game with a small group. The console's Usage page shows your plan's limits and what each environment has used against them.

  • A higher plan. Press Request a higher plan on the Usage page. Your request reaches GreenMind's support team with your org, its plan and its usage attached; say where we should reply and anything we should know. The page shows that the request is waiting until we answer. A new plan takes effect at once for what you make, and within a minute for the API's rate limits.
  • A GmCommon licence. Press Request a GmCommon licence on the org's GmCommon page, choosing the tier and the number of seats. See GmCommon.
  • When an environment is full. Once an environment holds as many players as your plan allows, a player it has never seen cannot sign in: the API answers 403 quota-exceeded and says why, and the Usage page marks the environment as full. Players it already has keep playing. Request a higher plan to raise the cap.

An admin of the org can make every request. Anybody given Usage or Licences on the org can make the matching one.

1. Choose an org

Sign in to the console. You start in your account's org. To work in another, such as your studio's, choose it from the org switcher at the top of the page.

The org's home in the console has a checklist for your first project: make a project, accept the agreements, wait for GreenMind's review, make a server key, install the SDK, see your first player sign in and promote config from test to production. Each step ticks itself as you do it, and the steps below follow the same order.

2. Make a project

A project is one game. Give it a name and a key. An org's first project asks its admin to accept, on the org's behalf, the Publisher Terms, the Data Processing Addendum and the Acceptable Use Policy.

Choose the key carefully: it cannot be changed. It becomes your production environment's app key, the value your shipped builds send forever. A key is 3 to 40 characters: lower-case letters, digits and hyphens, starting with a letter (skyforge, tiny-tactics).

A new project starts with two environments:

Environment App key
production skyforge
test skyforge_test

Players, config, keys and everything else are separate in each one. See Environments and releases.

Wait for the review

GreenMind reviews every new project before it may use the platform. Making one asks for the review: our staff see your org, its plan, the project and who made it, and anything you wrote for them in the new project dialog. The project page says where the review stands.

While it waits, you can set the project up: rename it, give people and teams roles, write config, flags, tours and blog posts, and read every page of the console and these docs. What reaches players or the outside world waits for the approval:

  • the platform API refuses the project's credentials and sign-ins with 403 project-not-approved;
  • server keys, webhook endpoints, Login with GreenMind apps, a custom dashboard, analytics, store credentials and test players in the API explorer cannot be made;
  • a service cannot be switched on (switching one off always works).

If GreenMind does not approve the project, the project page says why. Put it right, then press Resubmit for review there with a note on what changed; the project waits for review again. GreenMind can also suspend an approved project, with a reason, which closes it the same way until GreenMind reinstates it or you resubmit it.

To follow the rest of this page once the project is approved, switch on the Config service for the project and add one config value in the test environment (for example maxPartySize, type int, value 4).

3. Make a server key

Open the test environment and make a server key. The console shows the whole key once:

gmsk_0199a7c2-5b1e-7c3a-9f4e-2d6b8a1c0e57_Xq3v...

Copy it into your game server's configuration. Only a hash of it is kept, so if you lose it, revoke it and make another. Never put a server key in a game client. See Authentication.

4. Sign a player in from your server

Your server vouches for a player by your own id for them. The first time an id is seen, a player is made for it, and the answer is 201; after that it is 200.

curl -X POST https://api.greenmindmedia.com/api/platform/v1/auth/server \
  -H "Authorization: Bearer $GM_SERVER_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "subject": "account-1234", "displayName": "Ada" }'
{
  "accessToken": "eyJhbGciOiJFZERTQSIs...",
  "refreshToken": "eyJhbGciOiJFZERTQSIs...",
  "expiresIn": 3600,
  "player": {
    "id": "0199a7c3-0b2d-7e11-8c55-5f0e3d9a4b21",
    "displayName": "Ada",
    "createdAt": "2026-09-29T12:00:00.000Z"
  }
}

Hand accessToken and refreshToken to the player's game client.

5. Call the API from the client

The client sends the access token as a bearer token. It never needs the server key.

curl https://api.greenmindmedia.com/api/platform/v1/players/me \
  -H "Authorization: Bearer $ACCESS_TOKEN"

curl https://api.greenmindmedia.com/api/platform/v1/config/values \
  -H "Authorization: Bearer $ACCESS_TOKEN"

A player's own things are always under /players/me. Every list answers a page, { "items": [...], "next": null }, and next is the cursor to send for the page after when there is one.

The same from TypeScript:

const API = 'https://api.greenmindmedia.com/api/platform/v1'

async function platform<T>(path: string, accessToken: string): Promise<T> {
  const response = await fetch(`${API}${path}`, {
    headers: { Authorization: `Bearer ${accessToken}` },
  })
  const body = await response.json()
  if (!response.ok) throw new Error(`${body.error}: ${body.message}`)
  return body as T
}

const me = await platform<{ id: string; displayName: string | null }>('/players/me', accessToken)
const { items: configs } = await platform<{
  items: { key: string; valueInt: number | null }[]
  next: string | null
}>('/config/values', accessToken)

The access token lasts an hour. Before it runs out, the client exchanges its refresh token for a new pair with POST /auth/refresh.

Every route is described for programs, too, in the API's OpenAPI document: give it to your HTTP client or code generator of choice.

Try it in the browser, or from Unreal

  • The API explorer lists every route with what it takes, an example body and what it can refuse. Signed in, choose one of your environments and send any request from the page, with a server key you paste or a test player the console makes for you in test with one press. Making a test player needs the Manage players permission on the environment, and is never offered in production. A pasted key stays in the page's memory and is forgotten when you leave it.
  • The GmPlatform sample is a small Unreal Engine 5.8 project that signs a player in with Epic Online Services through our GmPlatform plugin, reads config and flags, writes a save slot, credits a currency from a server key and lists the player's inventories. Its README builds it up from an empty project.

6. Promote to production

Once test holds the config you want, open the project and choose Promote to copy what changed into production in one step. See Environments and releases.

Next