---
title: Reports
slug: reports
docTags: 
createdAt: 2022-04-12T13:40:13.000Z
---

Methods allow you to get list of available reports, view information about them, and update them forcibly.

***

::::ExpandableHeading{isOpen="true"}
# <font color="#2166ae">GET</font> /reports

Retrieves a list of all available reports.

Reports are JSON documents created for a **scene** based on recognized images and, optionally, pre-loaded display master data such as a planogram. The system provides a small set of basic report types in all instances, though it is not uncommon to implement custom report types based on specific client requirements. These custom reports are available on specific instances only and are documented elsewhere.

:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://instance_name/api/v1.5/reports/",
  "name": "Request example",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "Authorization",
        "type": "string",
        "description": "String in \"Token XXXXXX....\" format."
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "optional",
        "name": "limit",
        "type": "Integer",
        "description": "Number of results to return per page."
      },
      {
        "kind": "optional",
        "name": "offset",
        "type": "Integer",
        "description": "The initial index from which to return the results."
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "wKFMcd5oqGssMiCu9UNqX",
        "code": "{\n   \"count\":125455,\n   \"next\":\"http://example.com\",\n   \"previous\":null,\n   \"results\":[\n      {\n         \"id\":1595,\n         \"status\":\"READY\",\n         \"report_type\":\"REALOGRAM\",\n         \"created_date\":\"2020-07-03T15:28:08.128466Z\",\n         \"updated_date\":\"2020-07-03T15:28:08.128486Z\",\n         \"visit\":13\n      },\n      {\n         \"id\":1596,\n         \"status\":\"READY\",\n         \"report_type\":\"MUST_HAVE_SKU\",\n         \"created_date\":\"2020-07-03T15:28:08.189385Z\",\n         \"updated_date\":\"2020-07-03T15:28:08.189408Z\",\n         \"visit\":13\n      }\n   ]\n}",
        "language": "200",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "wKFMcd5oqGssMiCu9UNqX"
  },
  "examples": {
    "languages": [
      {
        "id": "FtYDt5B9gA7hoOHv0Toz6",
        "code": "curl –i –X GET\n  https://test.eyrene.com/api/v1.5/reports/19765/ \n  -H ‘Authorization: Token 39fbb6e9-fbf9-459a-9e1b-416dbcf51875e’",
        "language": "curl",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "FtYDt5B9gA7hoOHv0Toz6"
  },
  "description": "GET /reports",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "autoGeneratedAnchorSlug": "request-example",
  "legacyHash": "hcu7aHV6RB0vdUl-tN7d8"
}
```
:::

[](https://help.inspector-cloud.com/en/docs/api/backend/methods/v1.5/reports/reports#response-example)The response to the request returns a list of available reports with the IDs. Detailed information about the report can be viewed via [/reports/&#x7B;report\_id}](https://docs.eyrene.com/reports#fe-get-reportsreportid).

## Response parameters[​](https://help.inspector-cloud.com/en/docs/api/backend/methods/v1.5/reports/reports#response-definitions)

***

**`id`** *string*

Report ID.

***

**`status`** *string*

Report status.

- `NOT_READY` — the report is in the process of preparation. The client must repeat the request later.
- `READY` — the report was successfully prepared. The client can use the "data" field.
- `ERROR` — error in the process of preparing the report. The error message is available in the «error» field.

***

**`report_type`** *string*

Type of report.

***

**`created_date`** *string (date-time)*

Date the report was created in the format "YYYY-MM-DDTHH\:MM\:SSZ".

***

**`updated_date`** *string (date-time)*

Date of information update in the report in the format "YYYY-MM-DDTHH\:MM\:SSZ".

***

**`visit`** *string*

Visit ID

***
::::

***

::::ExpandableHeading{isOpen="true"}
# <font color="#2166ae">GET</font> /reports/&#x7B;report\_id}

Get report details by ID.

:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://instance_name/api/data/v1.5/reports/{report_id}/",
  "name": "Request example",
  "method": "GET",
  "request": {
    "pathParameters": [
      {
        "kind": "required",
        "name": "report_id",
        "type": "string",
        "description": "Report ID."
      }
    ],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "Authorization",
        "type": "string",
        "description": "String in \"Token XXXXXX....\" format."
      }
    ],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "II_DRLHKrO-aKOzXsMd6-",
        "code": "{\n   \"id\":1786,\n   \"status\":\"READY\",\n   \"created_date\":\"2016-08-31КT10:32:15.687287Z\",\n   \"report_type\":\"FACING_COUNT\",\n   \"json\":{//...\n      \n   }\n}",
        "language": "200",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "II_DRLHKrO-aKOzXsMd6-"
  },
  "examples": {
    "languages": [
      {
        "id": "xD7tT77yPlIr13E_XaGnT",
        "code": "curl –i –X GET\n  https://test.eyrene.com/api/data/v1.5/reports/1786/ \n  -H ‘Authorization: Token 39fbb6e9-fbf9-459a-9e1b-416dbcf51875e’",
        "language": "curl",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "xD7tT77yPlIr13E_XaGnT"
  },
  "description": "GET /reports/{report_id}",
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "autoGeneratedAnchorSlug": "request-example-1",
  "legacyHash": "tV-Ut30k8XIX-HPwQqS21"
}
```
:::

## Response parameters[​](https://help.inspector-cloud.com/en/docs/api/backend/methods/v1.5/reports/report_id#response-definitions)

***

**`id`** *string*

Report ID.

***

**`status`** *string*

Report status.

- `NOT_READY` — the report is in the process of preparation. The client must repeat the request later.
- `READY` — the report was successfully prepared. The client can use the "data" field.
- `ERROR` — error in the process of preparing the report. The error message is available in the "error" field.

***

**`report_type`** *string*

Type of report.

***

### For reports with the status `READY`[​](https://help.inspector-cloud.com/en/docs/api/backend/methods/v1.5/reports/report_id#for-reports-with-the-status-ready)

***

**`created_date`** *string (date-time)*

Date the report was created in the format "YYYY-MM-DDTHH\:MM\:SSZ".

***

**`previous_report`** *string (report ID)*

The ID of the previous report with the same type, display, and customer\_id or null.

***

**`json`** *Object*

Report data. The schema depends on the report type.

***

### For reports with the status `ERROR`[​](https://help.inspector-cloud.com/en/docs/api/backend/methods/v1.5/reports/report_id#for-reports-with-the-status-error)

***

**`error`** *string*

Error message.

***

[](https://help.inspector-cloud.com/en/docs/api/backend/methods/v1.5/reports/reports)
::::

***

::::ExpandableHeading{isOpen="true"}
# <font color="#3b9f0f">POST</font> /reports/force\_update

Updates report details. Use this method to retrospectively update reports when needed, e.g. when master data has changed.

:::hint{type="info"}
**Note**

This method does not trigger image recognition, just reports of business logic.
:::

:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://instance_name/api/v1.5/uploads/uploads_by_url",
  "name": "Request example",
  "method": "POST",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "optional",
        "name": "Authorization",
        "type": "string",
        "description": "String in \"Token XXXXXX....\" format."
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "reports ",
        "type": "Object",
        "description": "List of reports IDs.\nBefore the end of processing, each report from this list will receive the status of NOT_READY. If the report is ready, its status changes to READY."
      },
      {
        "kind": "optional",
        "name": "webhook",
        "type": "String",
        "description": "URL\nUse webhook to reduce latency. If specified, the reports will be sent by POST request to this URL immediately when ready (one by one).\nIf not specified, the client should explicitly poll reports."
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "jfrDsbFrqSnVHD-nZAATs",
        "code": "{\n   \"reports\":[\n      1786,\n      1787,\n      1788\n   ]\n}",
        "language": "200",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "jfrDsbFrqSnVHD-nZAATs"
  },
  "examples": {
    "languages": [
      {
        "id": "djhA1RzPv68ygzR2kX7kD",
        "code": "curl –i –X POST\n  https://test.eyrene.com/api/v1.5/reports/ \n  -H ‘Authorization: Token 39fbb6e9-fbf9-459a-9e1b-416dbcf51875e’\n  -F \"reports=[1786, 1787, 1788]\"",
        "language": "curl",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "djhA1RzPv68ygzR2kX7kD"
  },
  "description": "POST /reports/force_update",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "autoGeneratedAnchorSlug": "request-example-2",
  "legacyHash": "YeFgq6e-A311syxzqB06e"
}
```
:::

If the webhook is specified, as soon as the reports are updated to it, a JSON will be sent as a POST request.

:::CodeblockTabs
200

```json
{
   "1786":{
      "..." // request JSON-object
   },
   :{
      "..." // request JSON-object
   },
   :{
      "..." // request JSON-object
   }
}
```
:::


::::

***

# Types of reports

The type of the report in the response to the request is specified in the type field. Depending on the type of report, the contents of the JSON object in the response will be different.

## FACING\_COUNT[​](https://help.inspector-cloud.com/en/docs/api/backend/methods/v1.5/reports/report_types#facing_count)

`FACING_COUNT` report provides information on all distinct SKU recognized in the scene with facing count and share of the shelf (measured as a fraction of facings). Use facing count report to measure share of shelf and share of assortment KPIs.

**Master data**: none.

### JSON example[​](https://help.inspector-cloud.com/en/docs/api/backend/methods/v1.5/reports/report_types#json-example)

```json
[
   {
      "sku_id":10, // SKU ID
      "count":6   // Number of facings
   },
// ...   
]
```

## SHARE\_OF\_SPACE[​](https://help.inspector-cloud.com/en/docs/api/backend/methods/v1.5/reports/report_types#share_of_space)

`SHARE_OF_SPACE` report provides information about the fraction of facing count and facing width for every recognized SKU.

**Master data**: none.

### JSON example[​](https://help.inspector-cloud.com/en/docs/api/backend/methods/v1.5/reports/report_types#json-example-1)

```json
[
   {
      "sku_id":10,               // SKU ID
      "share_of_count":0.015,    // Number of facings / total number of facings
      "share_of_space":0.017     // Total SKU facings width / total width
   },
// ...   
]
```

## REALOGRAM[​](https://help.inspector-cloud.com/en/docs/api/backend/methods/v1.5/reports/report_types#realogram)

`REALOGRAM` report provides detailed "raw" data on coordinates and size in pixels for products and shelves recognized in images of the scene. In the report, the coordinates of the SKUs are relative to the upper-left corner of the corresponding image. "x", "y" are the coordinates of the center of the rectangle describing the product (bounding box). "h", "w" are height and width of this rectangle.

If scene images overlap, some products could be detected in several distinct images. In this case, all but one corresponding annotation will have the "duplicate" field set to "true".

Shelf annotation specifies the start (x1, y1) and end coordinates.

**Master data**: none.

### JSON example[​](https://help.inspector-cloud.com/en/docs/api/backend/methods/v1.5/reports/report_types#json-example-2)

```json
[      
   {
      "image": 156673,    // Image upload ID, see uploads endpoint
      "annotations": [    // List of sku object found in the image
         {
            "sku_id": 232,  // SKU id, see sku endpoint
            "x": 569,       // Bounding box center x
            "y": 312,       // Bounding box center y
            "h": 112,       // Bounding box height
            "w": 112        // Bounding box width
            "duplicate": false
         },
         "shelf_annotations": [    // List of shelf object found in the image
           "x1": 45,               // x1, y1: shelf start in px
           "y1": 63,
           "x2": 46,               // x2, y2: shelf end in px
           "y2": 89
          ]
      // Other products in the image here
      ]
   },
   // Other images in the scene here
]
```

## PRICE\_TAGS[​](https://help.inspector-cloud.com/en/docs/api/backend/methods/v1.5/reports/report_types#price_tags)

Provides a relation between SKU and prices as determined based on recognized price tags.

**Master data**: none.

### JSON example[​](https://help.inspector-cloud.com/en/docs/api/backend/methods/v1.5/reports/report_types#json-example-3)

```json
[
   {  
      "sku_id":28,                                // SKU ID
      "price": 130.57,                            // SKU price
      "price_tag_colors": ["yellow", "white"]     // Primary SKU price tag colors
   },
]
```

## MHL\_COMPLIANCE[​](https://help.inspector-cloud.com/en/docs/api/backend/methods/v1.5/reports/report_types#mhl_compliance)

Compares assortment of SKU recognized in the scene with a pre-defined must-have list.

**Master data**: Must-have list (MHL).

### JSON example[​](https://help.inspector-cloud.com/en/docs/api/backend/methods/v1.5/reports/report_types#json-example-4)

```json
{
   "mhl_id": 16752, // Must have list ID
   "compliance": 93.5,  // MHL compliance in %
   "records": [
      {
         "mhl_record_id":70,   // Must have list record ID
         "compliant": false    // True if SKU was recognized in the scene, false otherwise
      },
      // ...
   ]
}
```

## PLANOGRAM\_COMPLIANCE[​](https://help.inspector-cloud.com/en/docs/api/backend/methods/v1.5/reports/report_types#planogram_compliance)

Provides detailed planogram compliance status and the list of actions required. Aggregated planogram compliance is measured as a fraction of correctly placed faces.

**Master data**: planogram.

### JSON example[​](https://help.inspector-cloud.com/en/docs/api/backend/methods/v1.5/reports/report_types#json-example-5)

```json
{
   "planogram_id": 13249,     // Planogram ID, see planograms endpoint
   "compliance": 70.4,   // Planogram compliance in %
   "images" : [
      {
         "image_id" : 7877,
         "actions": [              // How to fix the compliance
            {  
               "x": 569,    // Bounding box center x. Not available for the action ADD.
               "y": 312,        // Bounding box center y. Not available for the action ADD.
               "h": 112,    // Bounding box height. Not available for the action ADD.
               "w": 112,    // Bounding box width. Not available for the action ADD.
               "shelf_index":2,         // Shelf ID (top to bottom starting from 0)
               "rack_index": 1,         // Rack ID (left to right starting from 0)
               "product_index": 7,        // Shelf position (left to right starting from 0)
               "sku_id": 77,        // SKU ID as recognized in the image
               "action_type": "ADD", // ADD, DELETE OR REPLACE
               "planogram_sku_id": 76, // Optional. Specified if sku_action=REPLACE
                                                       // SKU ID as found in the planogram
                     // Human-readable prescription. Prescription language depends on instance settings
               "text": "Replace ACME Cola 2000 ml with ACME Orange 2000 ml" 
            }, 
            {"id" :2
            //... 
            },
         ]
      }
      // ...
    ]
}Provides detailed planogram compliance status and the list of actions required. Aggregated planogram compliance is measured as a fraction of correctly placed faces.
```

## PANORAMA[​](https://help.inspector-cloud.com/en/docs/api/backend/methods/v1.5/reports/report_types#panorama)

Provides panoramic images stitched from the images of the scene. Note that it is not guaranteed that the whole scene will be stitched to the single panorama, therefore the report format provides a list of stitched images.

**Master data**: none.

### JSON example[​](https://help.inspector-cloud.com/en/docs/api/backend/methods/v1.5/reports/report_types#json-example-6)

```json
{
   "rendered": [ // a single image was stitched for this scene
      {
         "id": 156673,
         "url": "https:/test.inspector-cloud.com/media/ c118916f-36b5-4801-8910-c9fc1e575e33.jpg ",
         "width": 7200,
         "height": 12800,
      }
   ]
}
```

