Gamehub
A little more you.

Sign in to save your favorites and make yourself at home.

For developers and publishers
Browse docs Game configuration reference
On this page

One app. One configuration reference.

Try it first

Configure one game and its services#

You need A studio-owned game and a choice of managed, self-hosted or hybrid services.

  1. Confirm the selected app and its unique Game ID.
  2. Configure browser settings and keep server secrets in your backend or vault.
  3. Test a purchase and contest entry beside the running game; inspect verification and delivery separately.

Check your result Each enabled service has an owner, configuration and a tested integration path.

Start with your selected app in Developer tools → Game setup. Configure only the services your game uses. Keep the same game, studio, environment and player identity through checkout, verification and fulfillment.

1. Decide who runs each part#

ModePayment processingTrusted game backendWallet responsibility
Self HostedYour processor, or Playmos by explicit choiceYour server creates orders, verifies receipts, grants items and validates scoresPlayer approves purchases; your authorized operator manages server signing.
Hybrid ManagedPlaymos Managed IAP / contest payment railYour server owns fulfillment and admission; callback server can be yoursPlayer checkout and studio payout wallets remain separate.
Fully ManagedConfigured Playmos servicesProvisioned services must explicitly support the game’s inventory, admission and scoringManaged custody needs a configured signing provider; vaulted API keys do not authorize signing.

Hosting the browser page, processing money, granting inventory and signing server operations are four separate capabilities. The game’s service readiness checks show what is actually configured. An uploaded ZIP or successful payment does not enable the other capabilities automatically.

2. App identity and hosting#

ValueRequired whenWhere it comes from / where it belongs
App nameEvery gameYour studio app record. Visible above the testing tabs.
Game identifier / externalIdCreating a Managed IAP app connectionChoose 1–80 letters, numbers, dashes or underscores. Availability is checked within your SDK studio; saving claims it atomically. Keep it stable.
gameId / registered SDK game IDPlaymos payment callsUse the exact server-returned ID. Do not substitute a draft UUID, Studio session ID, product ID or display name.
Studio session + build version / buildSha256Studio managed credential accessSelect the exact saved build. New builds require their own credential binding.
Draft ID + package build IDUploaded browser gameYour Publisher draft and the uploaded build record. These identify the game release, not its payment rail.
entryPath / entryQueryZIP hostingRelative HTML entry file, usually index.html, and optional public launch parameters. No credentials in query strings.
Playable URL / selfHostedOriginExternal hostingSeparate-origin HTTPS page. Local HTTP is supported for development.
backendOriginsUploaded builds calling a backendExact HTTPS API origins allowed by the build’s CSP. Never wildcard an authenticated API.
Hub / portal originSDK checkout bridge or development adapterExact parent origin, such as https://test.playmos.io. Your frame-ancestors policy must permit it.

3. Browser-safe SDK values#

SDK valueRequired whenRule
apiKey: pk_test_…Playmos payment processingPublishable key from the same studio as the registered game. An external processor needs no Playmos payment credentials.
network: base-sepoliaTest paymentsBase Sepolia chain ID 84532. Test USDC has no cash value.
apiBaseUrlExplicit test service routingSDK API base including /v1, currently https://api.test.playmos.io/v1 on the test Hub. Keep the same environment on client and server.
playerIdEach paid order / attemptAuthenticated game player from your server. Do not trust a player ID supplied by an arbitrary browser.
wallet.providerWallet-funded standalone / parent-host checkoutYour EIP-1193 provider. Embedded Hub games request checkout through createCheckoutBridge; no wallet provider crosses the iframe.
wallet.delegatedBatchSame-address atomic Base Sepolia checkoutPinned implementation + bytecode hash, payer, chain reads, receipt lookup and authorization hook. SDK batches approval and payment; no sequential fallback.
gas.mode / paymasterUrlChoosing who pays gasPlayer-funded gas or an explicitly configured sponsored provider. Never switch payer after uncertainty.
services.purchase / services[contest-entry]Registered Hub checkout hostDeclare processing and fulfillment independently. The host registers these capabilities; the iframe does not choose its own authority.
Install the SDKTerminal
  1. npm install @playmos/sdk@0.3.38

4. IAP catalogue and fulfillment#

Value / contractRequired whenOwner and behavior
sku, name, amount, type, activeManaged IAP productPayment server catalogue. CSV / Excel import manages these records; the game keeps item effects and inventory logic.
catalogVersionFreezing an orderServer-returned catalogue revision. The saved quote pins the product and amount before payment.
App Store / Google Play product IDsNative store integrationKeep native IDs mapped to the same logical SKU. Native billing, server receipt verification, notifications and restore remain separate provider integrations.
order ID + idempotencyKey / requestIdEvery checkoutCreate and persist before signing. Retry the same order and payment; do not create a replacement on timeout.
onIntent / onSigning / onWalletCallsWallet checkout recoveryDurably bind the intent, signing uncertainty and wallet batch before the next operation.
Create / bind / complete backend methodsSelf-hosted or hybrid fulfillmentAuthenticated game backend creates the frozen quote, binds its exact payment and verifies before granting once. Route names are yours.
Callback URL + webhook signing secretWebhook deliveryHTTPS receiver on your backend. Verify raw bytes with verifyWebhook from @playmos/sdk/server and X-Playmos-Signature, then deduplicate. A callback acknowledgement is not inventory delivery.

Manual backend walkthrough · Checkout variants · Webhook verification

5. Contests and prize pools#

ValueRequired whenKeep it consistent
poolAddress / prizePool contractPlaymos contest paymentsUse your registered pool and its chain. Legacy rounds and epoch series have different APIs.
series + epoch OR roundId / roundKeyYour chosen contest contractPersist the exact server-created round identity. Never mix an epoch ID with the legacy enterRound API.
identity / attempt IDPaid entryUnique server-owned paid attempt, bound to player, round and payment. Reconcile that same identity before admission.
Entry price, round duration / closesAtCompetition rulesServer clock and immutable saved fee. A game’s displayed timer cannot extend admission.
Pool, next seed, studio and platform splitCreating a contest seriesThird-party default: 60% current, 30% next, 9% studio, 1% Playmos. Playmos game default: 60/30/10. Your saved contract configuration is authoritative.
Winner shares + score verifier + settlement operatorPrizesTrusted backend validates gameplay, ranks accepted scores and locks payouts. A simulation or confirmed entry is not a winner payout.
Attempt lifecycle / expiryPaid replaysNo new entry during an active run or unused paid attempt. Paid replay after completion is allowed until closing. Unused entries expire at closing. A running attempt may finish under its server deadline and score in the then-current round.

Contest integration · Pool and series setup

6. Server secrets and wallet roles#

ValueWhere it livesWhat it authorizes
PLAYMOS_SECRET_KEYYour backend, or the studio-bound managed vaultServer verification / catalogue administration within the configured SDK studio. Never ship an sk_ key in the game.
APP_ORIGIN / SESSION_MODULEManual backend exampleTrusted application origin and your authenticated session adapter. These are example application environment names, not automatically loaded SDK settings.
Webhook signing secretReceiver secret storeAuthenticates raw callback bodies; it is not a wallet key.
Player checkout walletPlayer wallet / parent Hub checkoutPays entry and IAP amounts after approval. Test payer selection does not relink the account.
Studio payout addressStudio payment setupReceives studio revenue on its configured rail. Replacement review does not rewrite old pool sinks or saved orders.
Privy appIdStandalone wallet connection, when using PrivyPublic connection configuration. Hub games inherit the host’s wallet flow.
Privy server credentials / signing authorizationAuthorized backend signing provider onlyCustodial or delegated server signing. Provision through the provider/vault; never put signing authority in frontend variables. Non-custodial publishers can retain their signer.

7. Optional services#

ServiceAdditional configurationOwner / guide
JavaScript diagnosticsportalOrigin + development adapter for external URLsStudio builds and uploaded test previews connect automatically. Error, rejected-promise and console.error / warn reports remain in the current tab; disconnected does not mean error-free.
AnalyticsConsent, analytics.logger, context, optional meter/exporterYour browser instrumentation and configured telemetry destination. Analytics setup
Anti-Cheatanticheat.transport: begin / checkpoint / submit / get; authenticated run and rulesetYour trusted game backend. Browser errors or telemetry never verify scores. Anti-Cheat setup
Live multiplayerSession token, input reader, simulation and snapshot/state mappingBackend provisioned room / session; short-lived player token in memory. Live setup
Controllers / Mo / trophiesRegistered host bridge, current player/session and game event hooksUse host-provided capabilities inside the Hub; configure standalone adapters explicitly. Controllers · Mo · Game services
Streaming / mediaConfigured provider, authorized stream/source and playback/session policyBackend provisioning and provider secrets; only authorized playback data in the client. Streaming API reference

8. Verify the complete configuration#

  1. Open the exact game build and confirm the app name and Game ID at the top.
  2. Check diagnostics are connected; exercise gameplay, cancellation and rejected promises.
  3. Make one test item purchase. Confirm the same receipt on the payment server and one inventory grant on the game backend.
  4. Buy one entry, confirm admission, finish the run, then test paid replay and expiry. Pending or cancelled payment must not admit a run.
  5. Restart / reconnect and recover the original order. Check a real callback separately from browser-only completion.
  6. Verify the deployed build, network and service configuration before recording or releasing. Store compatibility requires testing native billing and restore separately.

If it did not work#

If a service is unavailable, check its registered Game ID, environment and backend credentials before retrying the saved order.

Try one variation Disable one optional service and confirm free play still works without a wallet.

Continue with the next guide →