Explore the detailed technical specification to learn how to integrate NaBi into your application.

Contact the developer

Getting Started

Welcome to our API reference page! Here you can learn about the tools which we provide you to enrich any of your application or website with information about your devices. Here are a few ways you can integrate data into your website/application:

  • Fill your own map implementation with your track data
  • Track your device sensor data and make graphs about it

Log in or register an account

In order to getting started with our API you need to own a General Track device.

By purchasing the device you will be invited to the General Track website where you can get your credentials to use the API. We will send you an email with details how to finish the registration and then you can login to the system.

Obtaining API and Private key

Before you getting started you have to generate your own api key which identifies you and a private key to sign your request. It can be achieved by visiting the general track website's API manager page .

Generating the signature

Our API server needs to identify your request to be sure that you are the one who made the request. To achieve this you have to make a signature and include it to your request header.

We use Private and Public keys to verify your identity. You sign your request with the private key, and we verify it by it's public key. When you login to our website you can request your private key which we show you only once so you have to save it at that time.

We made the signing libraries, your only job is to include them to your code and use it like the example codes below.

The parameters we use:

  • data - String -

    The requested API uri with the version number. If there is whitespace in the URL encode it like the code below:

    Example: $data = str_replace(' ', '%20', '/v1/device/track/894823952?from=2019-04-27 10:10:10&to=2019-04-27 10:10:10')

  • keyPath - String -

    Relative path to the private key.

    Example: 'file://privateKey.pem'

                            if($signature = OpenSSL::Instance()->privateKey($keyPath)->sign($data)) {
                                echo $signature;
                            OpenSSL.privateKey(keyPath).sign(data).then((signature) => {
                            try {
                                String sign = OpenSSL.INSTANCE.privateKey(keyPath).sign(data);
                            } catch (Exception e) {

Making API requests

We provide you a simple PHP code to make use of our library and API endpoints. We made it straightforward, but there are some details you need to know again:

Signing the request

GT API require different sign to each request. You need to generate it before every request call with our library and your private key.

Constructing a URI

You need to use the following syntax:{API version}/{API path}/{IMEI (Optional)}?{parameters (Optional)} . The 'optional' keyword indicates that not all of our request needs them, for example:

Making API Request

The code assumes that the OpenSSL library file and the .PEM private key is in the root directory next to the script. Here you can set the endPoint and api key and make a request to the endpoint with CURL. The signature is generated by the OpenSSL instance, and set with the api key as headers.

                            require_once "./OpenSSL.php";

                            $baseURL = "";
                            $keyPath = "file://private.pem";
                            $endPoint = '/v1/device/list';
                            $apiKey = '-apikey-';

                            if($signature = OpenSSL::Instance()->privateKey($keyPath)->sign($endPoint)) {
                                $ch = curl_init();

                                $headers = [
                                    'x-apiKey: '.$apiKey,
                                    'x-signature: '.$signature

                                curl_setopt($ch, CURLOPT_URL, str_replace(' ', '%20', $baseURL.$endPoint));
                                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                                curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

                                $response = json_decode(curl_exec($ch));



You can download this document by clicking HERE

Mounting options

We provide different kind of mounting options for different applications.
You can see a few examples bellow. Please refer to the datasheet for exact dimensions.
We are open for custom mountings as well. Please feel free to contact our developer team.