Environments

A project has two environments: Sandbox and Live.

Sandbox is not a mock. It behaves exactly as Live does, down to webhook delivery, with no simulated players, no seeded data and no test-mode endpoints. The only difference is consequence: nothing in Sandbox reaches a real player.

What the two share

Two settings, chosen when the project is created and the same on both environments. Neither can be changed afterwards, so getting one wrong means a new project.

SettingExampleWhat it decides
Default languageenThe language a player reads when they have not asked for another.
Default time zoneAmerica/New_YorkWhich day a player's activity falls on when you have not sent a time zone for them.

Images are the one thing wider than a project: they belong to your organization, so every project and both of its environments draw on the same library.

What the two do not share

Everything else. Each of these exists twice, once per environment, with nothing linking the copies:

  • Players, what they have done, what is true about them, and their points
  • Events and attributes
  • Missions, streaks and leaderboards, and every player's progress in them
  • The catalog, the shop and everything bought in it
  • Webhook endpoints and their signing secrets
  • API keys

There is no identity across environments. player-42 in Sandbox and player-42 in Live are two unrelated players, and nothing merges them.

A key belongs to one environment

EnvironmentKey
Sandboxstarts with gem_sbox_
Livestarts with gem_live_

The key is what decides where a call lands, not anything you send. There is one address, https://api.gemifier.io, for both, and a Sandbox key cannot read or write anything in Live.

A key is shown once, when you create it, and never again. Revoking one takes effect immediately and cannot be undone, so create the replacement first.

A key has no scopes. Any key is full access to its environment, so both kinds stay on your server. See Authentication.

Next

On this page