Integration Snippets
There is no SDK. Your script talks to the REST API directly. These snippets are the starting point for any executor or language. If you want a maintained drop-in client that does all of this for you, see the reference client.Minimal check (pseudo-code)
Hardware ID
HWID is passthrough — Vampauth only compares equality. The quality of the fingerprint is on you. A single weak value is easy to spoof, so combine several signals into one fingerprint:- Persisted storage — Roblox offers per-machine storage that survives the session (e.g.
rblxanalytics-backed storage). Store a random identifier there once and reuse it; this is stable across sessions and hard to reset from the script alone. - Executor fingerprint — your executor (Synapse, Wave, etc.) exposes APIs or memory patterns that are unique to the current install. Hash whatever is available.
- Runtime signals — things an attacker would have to reproduce exactly: platform, executor version, Roblox client build, display resolution, locale.
sha256(raw)— simple, opaque, but the inputs are still guessable.hmac(raw, secret_key)— a secret baked into your script (and obfuscated) makes the fingerprint worthless without the key.encrypt(raw)— a real cipher over the concatenated fields; reversing it requires the key.
Nonce
A nonce is a random value you generate once per call. The server never stores it — it only echoes it back (nonce_echo) and includes it in the signature payload (sha256(nonce|hwid|expiresAtUnix|project_id)).
- Any string works, up to 128 characters.
- It must be fresh and random on every call. This is what makes replay protection work: if an attacker captures a valid response, the client’s next call uses a different nonce, so the captured signature no longer verifies.
- The client must check that
nonce_echomatches the nonce it sent (and the signature verifies) before trusting the response.
valid response unchanged.