REST API to analyze images and extract valuable information related to objects, number plates, and vehicle details. Whether you're building toll systems, law enforcement applications, or contributing to smart city initiatives, our API is designed to meet your diverse needs.
To access the API endpoints, you need to include your API key in the request header. You can find your API key here .
$ curl -X GET -H "apikey: YOUR_API_KEY_HERE" https://trafficeye.ai/info
{
"timestamp": 1697697742603,
"engines": [
{
"engineName": "LPM",
"engineType": "Detector",
"engineVersion": "v7.6-2023-11-10-Ubuntu-18.04-hasp9.0",
"moduleId": 802,
"moduleVersion": "802-generic.gen-none-v7.2",
"status": "RUNNING",
"task": "DETECTION"
},
{
"engineName": "LPM",
"engineType": "OCR",
"engineVersion": "v7.6-2023-11-10-Ubuntu-18.04-hasp9.0",
"moduleId": 801,
"moduleVersion": "801-generic.gen-gen-v7.9",
"status": "RUNNING",
"task": "OCR"
},
{
"engineName": "LPM",
"engineType": "OCR",
"engineVersion": "v7.6-2023-11-10-Ubuntu-18.04-hasp9.0",
"moduleId": 800,
"moduleVersion": "800-frontal.lp-eu-v7.20",
"status": "RUNNING",
"task": "OCR"
},
{
"engineName": "LPM",
"engineType": "OCR",
"engineVersion": "v7.6-2023-11-10-Ubuntu-18.04-hasp9.0",
"moduleId": 553,
"moduleVersion": "553-frontal.lp-na-v7.7",
"status": "RUNNING",
"task": "OCR"
},
{
"engineName": "MMR",
"engineType": "License Plate based",
"engineVersion": "2.21.0-Ubuntu-18.04-x86_64-HASP",
"moduleName": "MMR_VCMMGVCT_PREC_2023Q2.dat",
"moduleVersion": "20230512",
"status": "RUNNING",
"task": "MMR"
},
{
"engineName": "MMR",
"engineType": "Box based",
"engineVersion": "2.21.0-Ubuntu-18.04-x86_64-HASP",
"moduleName": "MMRBOX_VCMMGVCT_PREC_2023Q2.dat",
"moduleVersion": "20230513",
"status": "RUNNING",
"task": "MMR"
}
]
}
The following table describes each item in the response.
Property Description Type timestamp Current system time in milliseconds. integer engines Information about the SDK engines. array cost Cost of the recognition. The cost of one automatic number plate recognition (ANPR) or make and model recognition (MMR) computation is 1 Eyecoin each. Maximal cost of recognition is 2 Eyecoins. integer credit Your current credit balance in Eyecoins. integer
Property Description Type tasks An array of requested computation tasks: "DETECTION", "OCR", "MMR" (case insensitive). Optional; if absent, all available tasks are applied depending on other request items. array combinations An array containing combinations of detected road user objects (box and/or plates). Road users in a combination belong to each other and are usually physically connected. If absent, the detections must be obtained by the detector using the DETECTION task. Allowed only in combination with the [OCR, MMR], [OCR] and [MMR] tasks (without DETECTION task). array requestedDetectionTypes An array of object types to be detected by the detector: "BOX", "PLATE", "WINDSHIELD" (case insensitive). Optional; if absent, detections of all types supported by the detector will be returned. Allowed only if the tasks contain DETECTION. array roi The area of the input image to be scanned by the detector. Optional; if absent, the whole image will be scanned. Allowed only if the tasks contain DETECTION. object detectionModuleId The three-digit LPM Detector identifier to be used for the detection (see the LPM modules table). If absent, the default one will be used. Allowed only if the tasks contain DETECTION.
Allowed modules:- 802 - World Wide (default)
integer ocrModuleId The three-digit LPM Plate OCR identifier to be used for the OCR computation (see the LPM modules table). Optional; if absent, the default one will be used. Allowed only for the requestedDetectionTypes containing PLATE and tasks containing OCR.
Allowed modules:- 553 - Americas
- 555 - Middle East + Africa
- 556 - Asia
- 557 - Oceania
- 800 - Europe
- 801 - World Wide (default)
integer mmrPreference The preferred type of object for which the MMR is computed. Either "BOX", or "PLATE" (case insensitive). Optional; if absent, BOX is preferred. Allowed only if the tasks contain MMR. Must not be combined with the mmrModuleNames containing a single module name. string mmrModuleNames An object containing the names of the binary modules used for the MMR computation. Optional; if absent, the default ones (depending on the mmrPreference) will be used. Allowed only if the tasks contain MMR. object saveImage Save the requested image to show in the history. Default is false. boolean savePlateText Determines whether the license plate text should be saved in the history. Default is false, meaning license plate texts are removed from the request history. boolean
Request can contain manual detections. In that case, the tasks must not contain "DETECTION" (the detector will not be used). Each roadUser (vehicle) can contain one box and/or one or more plates. The encapsulating combinations are sets of one or more roadUsers, e.g. a tractor with a trailer. The combinations structure will be projected into the response.
For the OCR of a manually specified plate, its position (all four corners) must be specified. In case of a license plate, the OCR needs to know whether it is a single-line or multi-line. The engine takes this information from isSingleLine, if available, or from dimension otherwise. If none of them is specified, the type will be estimated.
If a roadUser contains more than one detected object (and MMR task is requested), the MMR is computed using only one of them based on the mmrPreference. If there are multiple plates and one of them is to be used for the MMR, the license plate with the highest detection score will be selected.
If the mmrModuleNames element is specified with both box and plate, the box module will be used for the MMR Box computation, and the plate module will be used for the MMR Plate computation. If only one of these modules is specified, only the corresponding engine will be used for the MMR computation. The mmrPreference is allowed only when mmrModuleNames include both box and plate elements or when mmrModuleNames are not specified at all (using the default MMR modules).
For the MMR of a manually specified plate, its center coordinates (centerCol and centerRow), rotation and pixelsPerMeter needs to be known. If not specified, they can be estimated from the plate corners (position); however, for the more accurate estimation of pixelsPerMeter parameter, either dimension or isSingleLine should be also specified.
$ curl -X POST -H "Content-Type: multipart/form-data" -F "file=@image.jpg" -H "apikey: YOUR_API_KEY_HERE" https://trafficeye.ai/recognition
$ curl -X POST -H "Content-Type: multipart/form-data" -F "file=@image.jpg" -F "request={\"requestedDetectionTypes\":[\"PLATE\"]}" -H "apikey: YOUR_API_KEY_HERE" https://trafficeye.ai/recognition
$ curl -X POST -H "Content-Type: multipart/form-data" -F "file=@image.jpg" -F "request=@request.json" -H "apikey: YOUR_API_KEY_HERE" https://trafficeye.ai/recognition
{
"tasks": [
"DETECTION",
"OCR"
],
"requestedDetectionTypes": [
"BOX",
"PLATE"
]
}
{
"requestedDetectionTypes": [
"BOX"
],
"roi": {
"topLeftCol": 176,
"topLeftRow": 362,
"bottomRightCol": 1234,
"bottomRightRow": 1000
}
}
{
"combinations": [
{
"roadUsers": [
{
"box": {
"position": {
"topLeftCol": 5,
"topLeftRow": 69,
"bottomRightCol": 954,
"bottomRightRow": 642
}
}
}
]
}
]
}
{
"combinations": [
{
"roadUsers": [
{
"plates": [
{
"centerCol": 176.5,
"centerRow": 362.0,
"rotation": -5.1,
"pixelsPerMeter": 214.3
}
]
}
]
}
]
}
{
"combinations": [
{
"roadUsers": [
{
"plates": [
{
"position": {
"topLeftCol": 817.2,
"topLeftRow": 892.5,
"topRightCol": 1181.4,
"topRightRow": 880.0,
"bottomRightCol": 1184.0,
"bottomRightRow": 956.5,
"bottomLeftCol": 819.9,
"bottomLeftRow": 969.0
},
"isSingleLine": true
}
]
}
]
}
]
}
Content type of the request is multipart/form-data, where the inputs are stored in the form data fields.
Input image is referenced with filepath (starting with @) in the form field file.
Optional parameter request can be referenced with filepath (starting with @, referencing a text file containing JSON string) or can contain the whole JSON as a string (special characters must be escaped).
There are many conditions limiting the use of optional request items. If the element combination is not allowed, the Bad Request error code 400 is returned with a message describing the problem. Some of the illegal combinations:
If the requested detectionModuleId or ocrModuleId engines are not available, the Bad Request error code 400 is returned with a message describing the problem.
If the requested engines (specified explicitly by tasks, detectionModuleId or ocrModuleId elements) are available but not running, the Internal Server error code 500 is returned with a message describing the problem. This makes the difference between the following cases:
{
"combinations": [
{
"roadUsers": [
{
"box": {
"position": {
"topLeftCol": 207.98956,
"topLeftRow": 254.33014,
"bottomRightCol": 1550.7578,
"bottomRightRow": 1209.3694,
"score": 0.9650459
},
"occlusion": 0.0010549176,
"truncated": false
},
"plates": [
{
"position": {
"topLeftCol": 817.24255,
"topLeftRow": 892.5229,
"topRightCol": 1181.434,
"topRightRow": 879.9859,
"bottomRightCol": 1184.0664,
"bottomRightRow": 956.45624,
"bottomLeftCol": 819.875,
"bottomLeftRow": 968.9932,
"score": 0.9058306
},
"occlusion": 0.0011757425,
"unreadable": 0.001019497,
"truncated": false,
"clusterScore": 1.0,
"isSingleLine": true,
"type": {
"value": "N",
"score": 0.99995106
},
"text": {
"value": "CV50070",
"score": 0.9999991
},
"dimension": {
"width": 520,
"height": 110,
"score": 1.0
}
}
],
"windshield": {
"position": {
"topLeftCol": 360.14645,
"topLeftRow": 341.9826,
"topRightCol": 1299.7959,
"topRightRow": 321.45706,
"bottomRightCol": 1304.929,
"bottomRightRow": 556.4519,
"bottomLeftCol": 365.27963,
"bottomLeftRow": 576.9774,
"score": 0.9375341
},
"occlusion": 4.424591e-05,
"truncated": false,
"clusterScore": 1.0
},
"mmr": {
"view": {
"value": "frontal",
"id": 1,
"score": 0.9999329
},
"category": {
"value": "CAR",
"id": 2,
"score": 0.9997303
},
"make": {
"value": "VW",
"id": 43,
"score": 0.9999216
},
"model": {
"value": "Passat",
"id": 3569,
"score": 0.9990373
},
"generation": {
"value": "Mk VI (2005)",
"id": 3691,
"score": 0.9979515
},
"color": {
"value": "WHITE",
"id": 13,
"score": 0.94161624
},
"tags": [
{
"name": "ambulance",
"value": "no",
"id": 14,
"score": 0.99998176
},
{
"name": "caravan",
"value": "no",
"id": 10,
"score": 0.99946773
},
{
"name": "fire_brigade",
"value": "no",
"id": 16,
"score": 0.9999783
},
{
"name": "law_enforcement",
"value": "yes",
"id": 11,
"score": 1.0
},
{
"name": "pickup",
"value": "no",
"id": 38,
"score": 0.6701908
},
{
"name": "push_bumper",
"value": "no",
"id": 30,
"score": 0.9948259
},
{
"name": "towed",
"value": "no",
"id": 51,
"score": 0.9955255
},
{
"name": "wood_truck",
"value": "no",
"id": 46,
"score": 0.9893941
}
],
"input": {
"box": {
"topLeftCol": 207.98956,
"topLeftRow": 254.33014,
"bottomRightCol": 1550.7578,
"bottomRightRow": 1209.3694
}
}
}
}
]
}
],
"engines": [
{
"task": "DETECTION",
"moduleId": 802,
"moduleVersion": "802-generic.gen-none-v7.2"
},
{
"task": "OCR",
"moduleId": 801,
"moduleVersion": "801-generic.gen-gen-v7.9"
},
{
"task": "MMR",
"moduleName": "MMRBOX_VCMMGVCT_PREC_2023Q2.dat",
"moduleVersion": "20230513"
}
]
}
If the request contains combinations (manual detections), the corresponding elements with the input values are projected into the combinations response element (in the same order). However, the position element is copied from the request to the response only if its encapsulating object contains some information added by the analysis. This means that a manually detected plate will be returned as an empty element if it is not processed by the OCR; a manually detected box will always be returned as an empty element.
The engines element lists only SDK engines, which were used to obtain the results. For example, if the request contains combinations (manual detections), there is no "DETECTION" task in the engines element.
The following table describes each item in the response.
Property Description Type combinations An array containing combinations of detected road users. array engines An array containing information about the engines involved in obtaining the results. array cost Cost of the recognition. The cost of one automatic number plate recognition (ANPR) or make and model recognition (MMR) computation is 1 Eyecoin each. Maximal cost of recognition is 2 Eyecoins. integer credit Your current credit balance in Eyecoins. integer
To help you get started quickly, here's a simple Python example demonstrating how to use our REST API for object detection. Make sure to replace IMAGE_PATH and API_KEY with your actual image URL and API key.
The API provides the class name and ID for each identified tag. To understand the output of the Make & Model Recognition module, you can download the classification classes file here