Runtime Key

A Runtime Key is a unique base64 string identifier representing a device (PC, mobile phone, camera…). Every SDK developed by us have a function named requestRuntimeLicenseKey() to generate this unique string.


  • This function doesn’t require network connection.

  • This key can be publicly shared.


Once the Runtime Key is generated you have to activate it in order to get a Token. Some activation use cases can be found here.



A Token is an activated Runtime Key. This is actually the license key for the device uniquely identified by the Runtime Key.

We recommend saving the Token in a file (for example in “assets” folder on Android) to avoid repeating the activation process.


  • You can retrieve the Token using the web application, the REST API or the C++ SDK.

  • The Token is valid forever.

  • The Token can be publicly shared (e.g. hard-coded in the code or in a file).

Master Key

The Master key is available via the web application. You have to login first to get your Master Key.

For every product (e.g. ANPR or NSFW) you’ll have as many master keys as operating systems (e.g. Android or Raspberry Pi). For example, if you’ve subscribed to the ANPR SDK for Android and Raspberry Pi then, you’ll have 2 master keys.


  • A Master Key can only activate a Runtime Key targeting the same operating system and product.


The Master Key is confidential and must NEVER EVER be shared in any form. For example, you must not include the Master Key in your code or send it to the end user.

Slave Key

As explained above the Master Key must never ever be shared with the end user. A Slave Key is generated using a Master Key and it’s like a bearer bond with 1-unit credit.

From Wikipedia, about bearer bond: “Whoever physically holds the paper on which the bond is issued is the presumptive owner of the instrument”.


  • You can create a Slave Key using the web application, the REST API or the C++ SDK.

  • You can include a Slave Key in the application or send it to the end user via secure channel (e.g. email or usb key).

A Slave Key can only be used once and will decrease your balance by 1-unit at maximum. Once it’s used to activate a Runtime Key it’ll be frozen. If you try to use the same Slave and Runtime keys for another activation then, it’ll succeed without changing your balance. But, if you try to use the Slave with a different Runtime key then, it will fail and your balance won’t change.