Playmos
Gamehub
Make yourself at home.

Sign in to your Playmos account.

For developers
and publishers
Developers Languages & packages
Documentation Languages & packages

Choose your language.

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

Published packages#

PackageVersion / public availability
JavaScript / TypeScript@playmos/sdk 0.3.20; 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.20
  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.

Keep buildingYour first payment