Gamehub
A little more you.

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

For developers and publishers
Browse docs Languages & packages
On this page

Choose your language.

Try it first

Choose an installable supported package#

You need Your target runtime and package manager.

  1. Check the published version and platform support below.
  2. Install that exact package in a small sample project.
  3. Run one documented test request before adding it to the game.

Check your result The package resolves and your runtime can run the supported API.

JavaScript handles browser wallets. Server packages and HTTP handle verification and backend work.

Published packages#

PackageVersion / public availability
JavaScript / TypeScript@playmos/sdk 0.3.38; browser and Node. Node 22 is supported.
C# / .NETPlaymos.Sdk 0.1.1-preview; server REST, no browser wallet signing.
Pythonplaymos 0.1.0a1; server REST.
GoNo public Playmos package; use direct server HTTP.
Engine bridgesSee the engine support matrix; no public Unity UPM.
Pinned installsTerminal
  1. npm install @playmos/sdk@0.3.38
  2. dotnet add package Playmos.Sdk --version 0.1.1-preview
  3. pip install playmos==0.1.0a1

Registry versions were checked on October 7, 2026. Preview/alpha clients do not necessarily expose every field available through JavaScript or HTTP. Check the response before relying on a chain-provenance field or a feature beyond the package’s public methods.

Verify over HTTP#

On your server, read GET /v1/payments/:id with the secret belonging to the studio that created that purchase. Require a successful HTTP response and matching ID, player, SKU, canonical amount, status === 'confirmed' and verifiedVia === 'chain'.

Server receipt readTerminal
  1. curl --fail-with-body "https://api.sandbox.playmos.io/v1/payments/$PAYMENT_ID" \
  2. -H "Authorization: Bearer $PLAYMOS_SECRET"

Python server verification#

Server HTTP verificationPython
  1. import json, os
  2. from urllib.request import Request, urlopen
  3. from urllib.parse import quote
  4. def verify_purchase(payment_id, expected):
  5. req = Request(
  6. "https://api.sandbox.playmos.io/v1/payments/" + quote(payment_id, safe=""),
  7. headers={"Authorization": "Bearer " + os.environ["PLAYMOS_SECRET"]},
  8. )
  9. with urlopen(req, timeout=15) as response:
  10. receipt = json.load(response)
  11. ready = (receipt.get("id") == payment_id
  12. and receipt.get("status") == "confirmed"
  13. and receipt.get("verifiedVia") == "chain"
  14. and all(receipt.get(k) == expected[k]
  15. for k in ("playerId", "sku", "amount")))
  16. return ready, receipt
  17. # Only grant once in your database transaction after ready is true.

C# and Go#

For .NET, PlaymosClient.VerifyAsync(id) is the published server method. Treat IsConfirmed as one status check, not complete purchase validation. If your package’s model omits provenance, use the HTTP response directly. For Go, build a request with a context/deadline, require a 2xx status, decode JSON and apply the same matching rules before a durable grant.

If it did not work#

A source candidate or planned language binding is not an available registry release; use supported REST or the browser host path.

Try one variation Compare the installed version with this guide’s example version. Identify unsupported calls before using them.

Continue with the next guide →