For the complete documentation index, see llms.txt. This page is also available as Markdown.

Report tracker

Generate, poll, retrieve, and download the account's tracker reports.

A report turns a period of tracking data into tables and graphs: distance travelled, stops made, fuel used, geofences visited. Which report is produced is decided by the plugin named in plugin.plugin_id, and most of the plugin object is specific to that plugin.

Generation is asynchronous, so a caller runs a sequence rather than a single call: generate queues the report and returns its ID, status reports progress, and retrieve or download fetches the result. For a walkthrough, see how to obtain report information.

API actions

API base path: /report/tracker.

Every operation on this page requires the reports sub-user right.

The geocoder parameter chooses which geocoder resolves addresses. The plugin-specific parameters are documented in report plugins. A plugin object looks like this:

{
  "details_interval_seconds": 300,
  "plugin_id": 9,
  "show_seconds": false,
  "graph_type": "time",
  "smoothing": false,
  "sensors": [
    {
      "tracker_id": 123456,
      "sensor_id": 123456
    }
  ]
}

include_places_in_address and include_zones_in_address both default to true, preserving the historical behaviour of prefixing an address with the name of the place or geofence containing the point. They apply to report plugins that render an address column, such as trips or stops. The values are echoed back in list under parameters, and are stored with scheduled reports.


Generate report

post
/report/tracker/generate

Queue a report for generation and return its ID. Generation is asynchronous: poll report/tracker/status, then fetch the result with report/tracker/retrieve or report/tracker/download.

Which report is produced is decided by plugin.plugin_id, and most of the plugin object is plugin-specific. See the tracker report plugins reference for what each one accepts.

Report by trackers takes trackers; a report by employees takes employees instead.

Error 211 carries extra data. When the period is too long the error body includes max_time_span, a human-readable English string such as 120 days rather than an ISO 8601 duration, so a caller can retry with a period that fits rather than guessing.

Requires the reports right.

Authorizations
AuthorizationstringRequired

Either a user session hash or an API key, with the "NVX " prefix, for example "NVX 22eac1c27af4be7b9d04da2ce1af111b". Obtain a session hash from the userAuth operation, or create an API key from the API keys operations. A small number of operations accept a session hash only and reject an API key with error code 4; each says so in its description.

Body
fromstringRequired

Start of the reporting period.

Example: 2026-08-24 09:00:00
tostringRequired

End of the reporting period. Must be after from.

Example: 2026-08-24 09:00:00
titlestringOptional

Report title. A default title is used when null.

geocoderstringOptional

Which geocoder to use for resolving addresses.

trackersinteger[]Optional

Trackers to include, for a report by trackers.

employeesinteger[]Optional

Employees to include, for a report by employees.

include_places_in_addressbooleanOptional

Optional. Default true. Prepend the name of the place a point falls inside to the address in report columns. Set false for the geocoded address alone.

include_zones_in_addressbooleanOptional

Optional. Default true. Prepend the name of the geofence a point falls inside to the address in report columns. Set false for the geocoded address alone.

Responses
200

The queued report

application/json
successbooleanRead-onlyOptional

true if request finished successfully.

Example: true
idintegerOptional

ID of the report queued for generation. Use it to poll status and to fetch the result.

post/report/tracker/generate
POST /v2/report/tracker/generate HTTP/1.1
Host: api.eu.navixy.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 355

{
  "from": "2026-08-24 09:00:00",
  "to": "2026-08-24 09:00:00",
  "title": "text",
  "geocoder": "text",
  "trackers": [
    1
  ],
  "employees": [
    1
  ],
  "time_filter": {
    "from": "2026-08-24 09:00:00",
    "to": "2026-08-24 09:00:00",
    "weekdays": [
      1
    ]
  },
  "plugin": {
    "plugin_id": 1,
    "show_seconds": true,
    "ANY_ADDITIONAL_PROPERTY": "anything"
  },
  "include_places_in_address": true,
  "include_zones_in_address": true
}
{
  "success": true,
  "id": 1
}

Errors

These errors come in addition to the general error codes:

  • 15 - Too many requests. One user can only have so many reports generating in parallel.

  • 211 - Requested time span is too big, when the interval from from to to exceeds the maximum allowed.

  • 217 - List contains nonexistent entities, when a tracker ID belongs to no tracker or to another user's.

  • 222 - Plugin not found, when no report plugin has the given ID.

  • 236 - Feature unavailable due to tariff restrictions, when one of the trackers is on a tariff with reports disabled, meaning has_reports is false.

Error 211 carries the maximum allowed period in the response body, so a caller can retry with a period that fits:

max_time_span is a human-readable English phrase such as 120 days or 26 hours. It is not an ISO 8601 duration, so parse it as text rather than as a duration literal.


Get report status

post
/report/tracker/status

Return how far along a report's generation is.

Requires the reports right.

Also accepts GET with the same parameters as query-string values.

Authorizations
AuthorizationstringRequired

Either a user session hash or an API key, with the "NVX " prefix, for example "NVX 22eac1c27af4be7b9d04da2ce1af111b". Obtain a session hash from the userAuth operation, or create an API key from the API keys operations. A small number of operations accept a session hash only and reject an API key with error code 4; each says so in its description.

Body
report_idinteger · min: 1Required

ID of the report.

Responses
200

The generation progress

application/json
successbooleanRead-onlyOptional

true if request finished successfully.

Example: true
percent_readyintegerOptional

Report readiness, as a percentage.

post/report/tracker/status
POST /v2/report/tracker/status HTTP/1.1
Host: api.eu.navixy.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 15

{
  "report_id": 1
}
{
  "success": true,
  "percent_ready": 1
}

Errors

These errors come in addition to the general error codes:

  • 204 - Entity not found, when no report has the given ID.


Retrieve report

post
/report/tracker/retrieve

Return a generated report as JSON.

The body of report is plugin-dependent: its shape follows whichever report plugin generated it.

A report that is still generating returns error 229 rather than partial data, so poll report/tracker/status first.

Requires the reports right.

Also accepts GET with the same parameters as query-string values.

Authorizations
AuthorizationstringRequired

Either a user session hash or an API key, with the "NVX " prefix, for example "NVX 22eac1c27af4be7b9d04da2ce1af111b". Obtain a session hash from the userAuth operation, or create an API key from the API keys operations. A small number of operations accept a session hash only and reject an API key with error code 4; each says so in its description.

Body
report_idinteger · min: 1Required

ID of the report.

Responses
200

The generated report

application/json
successbooleanRead-onlyOptional

true if request finished successfully.

Example: true
post/report/tracker/retrieve
POST /v2/report/tracker/retrieve HTTP/1.1
Host: api.eu.navixy.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 15

{
  "report_id": 1
}
{
  "success": true,
  "report": {
    "id": 1,
    "title": "text",
    "created": "text",
    "from": "2026-08-24 09:00:00",
    "to": "2026-08-24 09:00:00",
    "time_filter": {
      "from": "2026-08-24 09:00:00",
      "to": "2026-08-24 09:00:00",
      "weekdays": [
        1
      ]
    },
    "sheets": [
      {
        "header": "text",
        "entity_ids": [
          1
        ],
        "additional_field": "text",
        "sections": [
          {
            "type": "table",
            "header": "text",
            "style": "text",
            "columns": [
              {
                "field": "text",
                "title": "text",
                "align": "left",
                "width": 1,
                "weight": 1,
                "highlight_min_max": true
              }
            ],
            "column_groups": [
              {
                "ANY_ADDITIONAL_PROPERTY": "anything"
              }
            ],
            "data": [
              {
                "header": "text",
                "rows": [
                  {
                    "ANY_ADDITIONAL_PROPERTY": {
                      "v": "text",
                      "raw": 1,
                      "type": "text",
                      "location": {
                        "lat": 1,
                        "lng": 1
                      },
                      "ANY_ADDITIONAL_PROPERTY": "anything"
                    }
                  }
                ]
              }
            ],
            "rows": [
              {
                "name": "text",
                "v": "text",
                "raw": 1,
                "highlight": true
              }
            ],
            "ANY_ADDITIONAL_PROPERTY": "anything"
          }
        ]
      }
    ],
    "ANY_ADDITIONAL_PROPERTY": "anything"
  }
}

Errors

These errors come in addition to the general error codes:

  • 204 - Entity not found, when no report has the given ID.

  • 229 - Requested data is not ready yet, when the report exists but is still generating.


Download report

post
/report/tracker/download

Return a generated report as a file.

The response is the file itself, not a JSON envelope. A report that is still generating returns error 229.

Requires the reports right.

Also accepts GET with the same parameters as query-string values.

Authorizations
AuthorizationstringRequired

Either a user session hash or an API key, with the "NVX " prefix, for example "NVX 22eac1c27af4be7b9d04da2ce1af111b". Obtain a session hash from the userAuth operation, or create an API key from the API keys operations. A small number of operations accept a session hash only and reject an API key with error code 4; each says so in its description.

Body
report_idinteger · min: 1Required

ID of the report.

formatstring · enumRequired

Format to render the report in.

Possible values:
headlessbooleanOptional

Optional. Default false. When true, omit the title page and the table of contents.

Responses
200

The rendered report file

string · binaryOptional
post/report/tracker/download
POST /v2/report/tracker/download HTTP/1.1
Host: api.eu.navixy.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 46

{
  "report_id": 1,
  "format": "xls",
  "headless": true
}
binary

Errors

These errors come in addition to the general error codes:

  • 204 - Entity not found, when no report has the given ID.

  • 229 - Requested data is not ready yet, when the report exists but is still generating.


List reports

post
/report/tracker/list

List every generated and in-progress report belonging to the user, with the parameters each was generated from.

percent tells you which are finished without polling each one.

Requires the reports right.

Callable with an empty body. Also accepts GET.

Authorizations
AuthorizationstringRequired

Either a user session hash or an API key, with the "NVX " prefix, for example "NVX 22eac1c27af4be7b9d04da2ce1af111b". Obtain a session hash from the userAuth operation, or create an API key from the API keys operations. A small number of operations accept a session hash only and reject an API key with error code 4; each says so in its description.

Responses
200

The reports

application/json
successbooleanRead-onlyOptional

true if request finished successfully.

Example: true
post/report/tracker/list
POST /v2/report/tracker/list HTTP/1.1
Host: api.eu.navixy.com
Authorization: YOUR_API_KEY
Accept: */*
{
  "success": true,
  "list": [
    {
      "id": 1,
      "title": "text",
      "created": "text",
      "from": "2026-08-24 09:00:00",
      "to": "2026-08-24 09:00:00",
      "time_filter": {
        "from": "2026-08-24 09:00:00",
        "to": "2026-08-24 09:00:00",
        "weekdays": [
          1
        ]
      },
      "percent": 1,
      "type": "text",
      "parameters": {
        "geocoder": "text",
        "trackers": [
          1
        ],
        "plugins": [
          {
            "ANY_ADDITIONAL_PROPERTY": "anything"
          }
        ],
        "include_places_in_address": true,
        "include_zones_in_address": true,
        "locale_info": {
          "locale": "text",
          "time_zone": "text",
          "measurement_system": "text"
        },
        "ANY_ADDITIONAL_PROPERTY": "anything"
      }
    }
  ]
}

Delete report

post
/report/tracker/delete

Delete a generated report.

Requires the reports right.

Also accepts GET with the same parameters as query-string values.

Authorizations
AuthorizationstringRequired

Either a user session hash or an API key, with the "NVX " prefix, for example "NVX 22eac1c27af4be7b9d04da2ce1af111b". Obtain a session hash from the userAuth operation, or create an API key from the API keys operations. A small number of operations accept a session hash only and reject an API key with error code 4; each says so in its description.

Body
report_idinteger · min: 1Required

ID of the report to delete.

Responses
200

Report deleted

application/json
successbooleanRead-onlyOptional

true if request finished successfully.

Example: true
post/report/tracker/delete
POST /v2/report/tracker/delete HTTP/1.1
Host: api.eu.navixy.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 15

{
  "report_id": 1
}
{
  "success": true
}

Errors

These errors come in addition to the general error codes:

  • 101 - In demo mode this function is disabled.

Last updated

Was this helpful?