Contact Info
303 N Glenoaks Blvd, Ste 200
Burbank, CA 91502
+1 (818) 858 1282
Follow Us

DRM – Other Game Engines

DRM – Native Integration

Document Revision: 31st May 2019


1. Read the Windows Registry key: HKEY_CURRENT_USER\Software\SynthesisVR\app\pc


2. Prepare and send the following HTTP POST request to:


POST Parameters:

  • game=1234
    Hint: replace 1234 with your unique SynthesisVR game id. You will find it under your web account >> Administration >> Games
  • key=123456789
    Hint: request the key value by send an email to
  • pc=11111111-2222-3333-4444-555555555555
    Hint: use the value from point 1

In response, you’ll get a non-sense string like this:

  • KL8//cE2nU7uyjc7bl5mS4YNCQUNNZ7QWhFet1z1u1VZ0CffCjklwBVaZDdeQ5NjfnqRi4+JJ/wwFl3EfiGddQ==

This string us trustworthy and will be used by Synthesis to validate the game instance. It can be cached locally on the PC and refreshed every few weeks or .. never.


3. Prepare a JSON formatted string with the following parameters:

  • p=12345
    Hint: 12345 is the Windows PID of the current game instance.
    Hint 2: In C++, you can obtain the value from GetCurrentProcessId();
  • g=KL8//cE2nU7uyjc7bl5mS4YNCQUNNZ7QWhFet1z1u1VZ0CffCjklwBVaZDdeQ5NjfnqRi4+JJ/wwFl3EfiGddQ==
    Hint: this is the value from step 2
  • do_not_bill=true|false (optional ; default=false)
    Hint: if set to true, the current session wont be billed. The option is purposed for dedicated game server instances
  • new_session=true|false (optional ; default=false)
  • Hint: this option makes sense with the Pay Per Session billing. To be used when a full game is played and the game session is restarted within the game (without the game being closed and re-launched)

Example JSON string:

  • {“g”:”KL8//cE2nU7uyjc7bl5mS4YNCQUNNZ7QWhFet1z1u1VZ0CffCjklwBVaZDdeQ5NjfnqRi4+JJ/wwFl3EfiGddQ==”,”p”:12345}


4. Perform a local HTTP POST request to:

  • http://localhost:8080/control/onlineContentVerification


  • json={“g”:”KL8//cE2nU7uyjc7bl5mS4YNCQUNNZ7QWhFet1z1u1VZ0CffCjklwBVaZDdeQ5NjfnqRi4+JJ/wwFl3EfiGddQ==”,”p”:12345}


5. In response, you’ll get a JSON string with the following data:

  • forceRecache — boolean value. If true, re-run steps 1 + 2 + 3 + 4
  • quitGame — boolean value. If true, exit the game. “True” value will mean Synthesis isn’t able to validate the PC as having an active license and the game access should be forbidden
  • status — integer. Same logic as quitGame, but coming as integer (0 = false ; 1 = true).  A value of 1 will mean the PC is successfully validated
  • hash — string. Serves for further, optional check (described in point 6).

Important note: optimize your code to quit the game if there is no response to the onlineContentVerification call. This will mean Synthesis is not running and the minutes usage may not be properly tracked or tracked at all. Also, it is advisable to re-run steps 4 and 5 during the game instance is active.



6. Verifying the hash value is optional and requires internet connectivity. Its purpose is to prevent people from trying to somehow emulate the local Synthesis services and provide fake positive responses.

Our suggestion is to cache the positive response of this check for a period of 2-3 weeks and then invalidate the cache.

To verify the hash value, perform an HTTP POST to:



  • hash=<hash string>

The response will be either 0 or 1:

  • 0 = hash validation failed
  • 1 = hash validation succeed


7. Upload the build on SynthesisVR CDN (link)


← Back