The client SDK lets your game client talk to a physically connected SentinelID USB dongle. It handles the HID framing protocol, reads the device’s signed DeviceCheckRequest, and hands it back to your code to forward to your game server.
The signed payload produced by the device must be forwarded to your game server, which then calls the Server SDK to verify it with the Sentinel Network API. Never send your API key to the game client.

Device VID / PID

All SDKs enumerate by the following USB descriptor. Note that these IDs are not exclusive to SentinelID hardware — the SDK matches on both VID and PID together.

Installation

Enumerate Devices

List all connected SentinelID dongles.

Open a Device and Request a Check

The typical flow is to open the first available device, send a check challenge, and receive a signed DeviceCheckRequest to forward to your server.

Open a Specific Device

If multiple dongles are connected, select one by path.

DeviceCheckRequest Fields

The object returned by requestCheck / request_check maps directly to the Device Check API body:

HID Protocol

The SDK handles the low-level framing automatically. Each HID report is 64 bytes.

Write (host → device)

Output reports use the following header layout: The challenge JSON {"publisher_id":"…","game_id":"…"} is split into 60-byte chunks and spread across one or more reports. The START flag is set on the first report; the END flag is set on the last.

Read (device → host)

Input reports have no leading report ID byte: Reports are read and concatenated until FLAG_END is set. If FLAG_ERROR is set, byte 3 contains an error code: Reads time out after 5 seconds; a TimeoutError / RuntimeException is thrown if no response is received.

Sandbox Testing

During development you can use the sentinelid-sim package to generate valid signed payloads without physical hardware. The simulator persists its identity (device ID + EC key pair) on first run, so the same device ID is reused across test sessions.
The simulator calls POST /v1/device/sim/register which is only available in the sandbox environment. Attempting to register a simulated device in production will be rejected. See the Device Simulator page for full subcommand reference and CI/CD usage.