Choose your language.
JavaScript handles browser wallets. Server packages and HTTP handle verification and backend work.
Published packages#
| Package | Version / public availability |
|---|---|
| JavaScript / TypeScript | @playmos/sdk 0.3.20; browser and Node. Node 22 is supported. |
| C# / .NET | Playmos.Sdk 0.1.1-preview; server REST, no browser wallet signing. |
| Python | playmos 0.1.0a1; server REST. |
| Go | No public Playmos package; use direct server HTTP. |
| Engine bridges | See the engine support matrix; no public Unity UPM. |
npm install @playmos/sdk@0.3.20dotnet add package Playmos.Sdk --version 0.1.1-previewpip 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'.
curl --fail-with-body "https://api.sandbox.playmos.io/v1/payments/$PAYMENT_ID" \-H "Authorization: Bearer $PLAYMOS_SECRET"
Python server verification#
import json, osfrom urllib.request import Request, urlopenfrom urllib.parse import quotedef verify_purchase(payment_id, expected):req = Request("https://api.sandbox.playmos.io/v1/payments/" + quote(payment_id, safe=""),headers={"Authorization": "Bearer " + os.environ["PLAYMOS_SECRET"]},)with urlopen(req, timeout=15) as response:receipt = json.load(response)ready = (receipt.get("id") == payment_idand receipt.get("status") == "confirmed"and receipt.get("verifiedVia") == "chain"and all(receipt.get(k) == expected[k]for k in ("playerId", "sku", "amount")))return ready, receipt# 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.