Troubleshoot Licensing and findface-ntls
When troubleshooting licensing and findface-ntls (see Licensing), the first step is to retrieve the licensing information and findface-ntls status. You can do so by sending an API request to findface-ntls. Necessary actions are then to be undertaken, subject to the response content.
Tip
Please do not hesitate to contact our experts on troubleshooting by support@ntechlab.com.
Note
The online licensing is done via the NtechLab Global License Manager license.ntechlab.com. A stable internet connection and DNS are required.
Get Licenses Information
To retrieve the FindFace licensing information and findface-ntls status, execute on the findface-ntls host console:
curl http://localhost:3185/v1/licenses.json -s | jq
The response will be given in JSON. One of the most significant parameters is .licenses[].last_updated. It indicates in seconds how long ago the local license has been checked for the last time.
Interpret the .licenses[].last_updated value as follows:
[0, 5] — everything is alright.
(5, 30] — there may be some problems with connection, or with the local drive where the license file is stored.
(30; 120] — almost certainly something bad happened. You should check the
ntlslogs for additional information.
(120; ∞) — the licensing source response has been timed out. Take action.
.licenses[].valid.valid == false: connection with the licensing source was never established.
Another important field is .products. It describes the available features and resources:
.products[].features: available features.
.products[].resources: available resource limits and usage of these resources.
.products[].extra: miscellaneous license information.
The response also contains the following parameters:
.time: the current server time, in Unix timestamp format.
.licenses[].expire_date: license expiration date. Treat this field with respect to.time.
.licenses[].type: license type.
.licenses[].license_id: license ID.
.licenses[].generated: license generation time.
.licenses[].source: the path to the license file.
.licenses[].products: which features and resources each license provides. Basically structure is similar the structure of.products, but resource usage isn’t reported here.
.licenses[].valid.description: if.licenses[].valid.valid == false, then this field contains the reason why the license is not valid.
.services: an array of FindFace Multi services connected tontls.
Response example
{
    "name": "NTLS",
    "time": 1709825691,
    "licenses": [
        {
            "expire_date": 1737208526,
            "generated": 1705586179,
            "last_updated": 2,
            "license_id": "018f4c50e6044f0aa618436ad9450ac0",
            "products": {
                "multi": {
                    "extra": {},
                    "features": {
                        "sec-external-vms": {
                            "value": true
                        },
                        "sec-genetec": {
                            "value": true
                        }
                    },
                    "resources": {}
                },
                "server": {
                    "extra": {},
                    "features": {
                        "body_bags": {
                            "value": true
                        },
                        "body_emben": {
                            "value": true
                        },
                        ...
                    },
                    "resources": {
                        "cameras": {
                            "value": 60
                        },
                        "extapi": {
                            "value": 256
                        },
                        "objects_tntapi": {
                            "value": 200000000
                        }
                    }
                }
            },
            "source": "/ntech/license/Test_license_018f4c50e6044f0aa618436ad9450ac0.lic",
            "type": "offline",
            "valid": {
                "description": "",
                "valid": true
            }
        },
        {
            "expire_date": 0,
            "generated": 1581946976,
            "last_updated": 1,
            "license_id": "017c40d9401742ce9eff8b48d93ded9a",
            "products": {},
            "source": "/ntech/license/ntech_license_017c40d9401742ce9eff8b48d93ded9a.lic",
            "type": "online",
            "valid": {
                "description": "License is not valid",
                "valid": false
            }
        }
    ],
    "products": {
        "multi": {
            "features": {
                "sec-external-vms": {
                    "value": true
                },
                "sec-genetec": {
                    "value": true
                }
            },
            "resources": {},
            "extra": {}
        },
        "server": {
            "features": {
                "body_bags": {
                    "value": true
                },
                "body_emben": {
                    "value": true
                },
                ...
            },
            "resources": {
                "cameras": {
                    "current": 11,
                    "value": 60
                },
                "extapi": {
                    "current": 1,
                    "value": 256
                },
                "objects_tntapi": {
                    "current": 12321,
                    "value": 200000000
                }
            },
            "extra": {}
        }
    },
    "services": [
        { "name": "video-worker-gpu", "ip": "10.255.233.12:48844" },
        { "name": "findface-extraction-api", "ip": "10.255.233.11:44182" },
        { "name": "FindFace-tarantool", "ip": "10.255.233.13:46444" }
    ]
}
Get a report
To get a report of the license interval counters, execute on the findface-ntls host console the command below. It updates once an hour.
curl http://localhost:3185/v1/usage-report.json -s | jq
Response example
{
  "b2c4658412f44184a6e34a2a369ce58c": {
    "active_limits": {
      "counters": {
        "server": {
          "face_beard": {
            "available": 10000,
            "used": 3589
          }
        }
      },
      "since": "2024-07-17T17:00:00+00:00",
      "till": null
    },
    "by_interval": [
      {
        "counters": {
          "server": {
            "body_bags": {
              "used": 0
            }
          }
        },
        "since": "2024-06-30T17:00:00+00:00",
        "till": "2024-07-08T17:00:00+00:00"
      },
      {
        "counters": {
          "server": {
            "face_age": {
              "used": 77
            }
          }
        },
        "since": "2024-07-08T17:00:00+00:00",
        "till": "2024-07-17T17:00:00+00:00"
      },
      {
        "counters": {
          "server": {
            "face_beard": {
              "used": 3589
            }
          }
        },
        "since": "2024-07-17T17:00:00+00:00",
        "till": null
      }
    ]
  },
  "6b5392f68fa84861bb39ce86fa5e42f9": {
    "active_limits": {
      "counters": {
        "server": {
          "body_bags": {
            "available": 10000,
            "used": 1591
          },
          "face_age": {
            "available": 1500,
            "used": 28780
          },
          "face_beard": {
            "available": 5,
            "used": 30852
          },
          "face_emotions": {
            "available": 100,
            "used": 25082
          },
          "face_gender": {
            "available": 10000,
            "used": 1135
          },
          "face_hair": {
            "available": 50,
            "used": 0
          },
          "face_liveness": {
            "available": 10000,
            "used": 184
          }
        }
      },
      "since": "2024-09-18T17:00:00+00:00",
      "till": "2025-07-16T17:00:00+00:00"
    },
    "by_interval": [
      {
        "counters": {
          "server": {
            "body_action_base": {
              "used": 0
            },
            "car_categories": {
              "used": 0
            },
            "face_beard": {
              "used": 0
            }
          }
        },
        "since": "2024-04-24T17:00:00+00:00",
        "till": "2024-04-25T17:00:00+00:00"
      },
      {
        "counters": {
          "server": {
            "body_action_base": {
              "used": 0
            },
            "body_bags": {
              "used": 0
            },
            "car_categories": {
              "used": 0
            },
            "face_age": {
              "used": 0
            }
          }
        },
        "since": "2024-04-25T17:00:00+00:00",
        "till": "2024-04-26T17:00:00+00:00"
      },
      {
        "counters": {
          "server": {
            "car_description": {
              "used": 477785
            },
            "face_emotions": {
              "used": 1843574
            },
            "face_liveness": {
              "used": 0
            },
            "garbage_types": {
              "used": 0
            }
          }
        },
        "since": "2024-04-26T17:00:00+00:00",
        "till": "2024-09-18T17:00:00+00:00"
      },
      {
        "counters": {
          "server": {
            "body_bags": {
              "used": 1591
            },
            "face_age": {
              "used": 28780
            },
            "face_beard": {
              "used": 30852
            },
            "face_emotions": {
              "used": 25082
            },
            "face_gender": {
              "used": 1135
            },
            "face_hair": {
              "used": 0
            },
            "face_liveness": {
              "used": 184
            }
          }
        },
        "since": "2024-09-18T17:00:00+00:00",
        "till": "2025-07-16T17:00:00+00:00"
      },
      {
        "counters": {
          "server": {
            "all_attrs": {
              "used": 0
            },
            "body_action_car": {
              "used": 0
            },
            "body_bags": {
              "used": 0
            },
            "body_other_attrs": {
              "used": 0
            },
            "car_description": {
              "used": 0
            },
            "car_license_plate": {
              "used": 0
            },
            "car_license_plate_visibility": {
              "used": 0
            },
            "car_orientation": {
              "used": 0
            },
            "car_other_attrs": {
              "used": 0
            },
            "car_weight_types": {
              "used": 0
            },
            "face_age": {
              "used": 0
            },
            "face_beard": {
              "used": 0
            },
            "face_emotions": {
              "used": 0
            },
            "face_eyes_attrs": {
              "used": 0
            },
            "face_eyes_openness": {
              "used": 0
            },
            "face_gender": {
              "used": 0
            },
            "face_glasses": {
              "used": 0
            },
            "face_hair": {
              "used": 0
            },
            "face_headpose": {
              "used": 0
            },
            "face_highlight": {
              "used": 0
            },
            "face_liveness": {
              "used": 0
            },
            "face_mouth_attrs": {
              "used": 0
            },
            "garbage_types": {
              "used": 0
            }
          }
        },
        "since": "2025-07-16T17:00:00+00:00",
        "till": null
      }
    ]
  }
}