GaitPrint™ SDK Setup


GaitPrint allows services to generate unique “fingerprints” for their mobile users based on an individual’s manner of walking, known as “gait”. By applying advanced machine learning to motion data collected from the device, UnifyID is able to uniquely identify the human behind the device. This allows customers to detect when a single individual is using multiple accounts, or when a previously banned user is back with a new username.

GaitPrint allows you to:

  • Protect your bottom line
    Prevent promotions and referral abuse.
  • Strengthen the integrity of your platform and its content
    Detect and lock out fraudulent/fake accounts.
  • Safeguard your community
    Control spam and content abuse from malicious users.

When integrated into your app, the GaitPrint SDK operates passively in the background. Good users won’t notice a thing, and the users you catch won’t know what hit them.

Note: GaitPrint™ is currently being offered through a private beta. For more information about this product, please contact us at


The GaitPrint Android SDK requires:

  • Java 7 or greater
  • Android API level 21 or greater

Initializing the SDK

GaitPrint is in private beta. For access to the SDK, please contact us at

Initialize an instance of GaitPrint with your SDK Key. Because this may attempt a network call, this should not be run in the main thread.

new Thread(() -> {
    try {
        GaitPrint gaitPrint = GaitPrint.getInstance(getApplicationContext(), sdkKey);
    } catch (GaitPrintException e) {

Data collection begins upon initialization, even if no user context has been set. This allows GaitPrint to collect data for users even before they log in or sign up.

Data Collection and Upload

Data collection refers to both:

  1. Device motion data being captured and buffered locally
  2. Data being uploaded to UnifyID servers

Data is buffered locally and is uploaded based on a variety of factors, including:

  • User account age (new accounts may initially upload data near real-time)
  • Device conditions (Wi-Fi, battery level)
  • User activity and behavior

GaitPrint will automatically and dynamically adjust data upload behavior over the course of a user’s lifetime.

Setting the User

Once a user has registered or logged in, you can provide a unique, immutable identifier to the GaitPrint instance. This attributes collected data to the user:

String uniqueUserId = "xxxxxxxxx";

This identifier must not change for a given user, so usernames and emails are not recommended if your service allows users to change those attributes.

As needed, you can query and clear the user from the GaitPrint instance (when logging out, for example):

String user = gaitPrint.getUser();

Pausing and Resuming Data Collection

GaitPrint begins collecting data immediately upon initialization. At any point, whether or not a user has been set, you can choose to pause and resume data collection. This could be useful if, for example, you do not wish to collect data prior to login or signup:

GaitPrint gaitPrint = GaitPrint.getInstance(sdkKey);

// When you wish to resume data collection...
if (!gaitPrint.isRunning()) {


In addition to collecting gait data, you can also tell GaitPrint about specific events or actions taken by the user. The following global events are currently supported:

// Send immediately after registration, *after* the user has been set

// Send after an existing user has signed in, *after* the user has been set

// Send when a user logs out, *prior* to clearing the user

GaitPrint API

As data is collected, GaitPrint continuously looks for user accounts that have a high likelihood of belonging to the same physical person. This data can be consumed through a variety of channels:

  1. Webhooks
    Set up a webhook endpoint on your server, and UnifyID will call your endpoint when a match is detected.
  2. User Lookup API
    Look up the status for a specific user based on their user ID, and GaitPrint will return matches with confidence scores.
  3. Dashboard
    The UnifyID Developer Dashboard provides a convenient user lookup interface on the web.

For additional information about the GaitPrint API, please contact us at