> For the complete documentation index, see [llms.txt](https://navixy.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://navixy.com/docs/navixy-api/user-api/resources/tracking/tracker/sensor/calibration_data.md).

# Sensor calibration data

The curve that converts a sensor's raw readings into meaningful units.

Calibration data converts what a sensor actually reports into what a reader wants to see. An analogue fuel sensor reports volts, and the calibration curve turns those volts into litres. Without it a reading is a raw number with no useful meaning.

Updating replaces the whole curve rather than adding points to it. For Omnicomm sensors a third operation takes the manufacturer's own calibration file directly.

## API actions

API base path: `/tracker/sensor/calibration_data`.

***

## Read calibration data

> Get a sensor's calibration curve. Available to demo accounts, and reachable from a fuel-server session.

```json
{"openapi":"3.1.0","info":{"title":"Navixy Platform API","version":"1.0.0"},"tags":[{"name":"Trackers","description":"Trackers, the devices the platform tracks, together with the geo links that share their live location with people outside the account. Resources under the /tracker/ path."}],"servers":[{"url":"https://api.eu.navixy.com/v2","description":"Navixy production server on European platform"},{"url":"https://api.us.navixy.com/v2","description":"Navixy production server on American platform"},{"url":"https://api.me.navixy.com/v2","description":"Navixy production server on Middle East platform"}],"security":[{"api_key":[]}],"components":{"securitySchemes":{"api_key":{"type":"apiKey","description":"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.","name":"Authorization","in":"header"}},"schemas":{"CalibrationPoint":{"type":"object","description":"One point on a sensor's calibration curve, mapping a raw reading to a real-world value. An analogue fuel sensor, for instance, reports volts that have to become litres.","properties":{"in":{"type":"number","description":"Raw value from the sensor."},"out":{"type":"number","description":"Value it corresponds to."}},"required":["in","out"]}},"responses":{"ResponseError":{"description":"Error response object","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Always false."},"status":{"type":"object","description":"Error status. Present only when an error occurred.","properties":{"code":{"type":"integer","description":"An error code in this API, not an HTTP code."},"description":{"type":"string","description":"An error description."}}},"errors":{"type":"array","description":"Per-parameter detail, returned with validation failures such as error code 7. A parameter name here may be an internal field name rather than the documented parameter name.","items":{"type":"object","properties":{"parameter":{"type":"string","description":"Name of the parameter that failed validation."},"error":{"type":"string","description":"What was wrong with it."}}}}}}}}}}},"paths":{"/tracker/sensor/calibration_data/read":{"post":{"tags":["Trackers"],"summary":"Read calibration data","description":"Get a sensor's calibration curve. Available to demo accounts, and reachable from a fuel-server session.","operationId":"trackerSensorCalibrationDataRead","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tracker_id":{"type":"integer","description":"ID of the tracker, also known as the object ID. Must belong to the current account and not be blocked."},"sensor_id":{"type":"integer","description":"Sensor ID.","minimum":1}},"required":["tracker_id","sensor_id"]}}}},"responses":{"200":{"description":"The calibration curve","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"`true` if request finished successfully.","readOnly":true},"value":{"type":"array","items":{"$ref":"#/components/schemas/CalibrationPoint"}}}}}}},"400":{"description":"Bad request. The response body carries the API-level error code in `status.code`. Validation failures also include an `errors` array naming each offending parameter.","$ref":"#/components/responses/ResponseError"},"403":{"description":"Error 201: no tracker with this ID belongs to the account. Error 228: the sensor does not support calibration.","$ref":"#/components/responses/ResponseError"},"default":{"$ref":"#/components/responses/ResponseError"}}}}}}
```

#### Errors

These errors come in addition to the [general error codes](/docs/navixy-api/general/errors.md#error-codes):

* 201 - No tracker with this ID belongs to the account.
* 228 - The sensor does not support calibration.

***

*Required sub-user rights:* `tracker_update`.

## Replace calibration data

> \*\*Replaces\*\* a sensor's whole calibration curve rather than adding points to it.\
> \
> Requires the \`tracker\_update\` right.

```json
{"openapi":"3.1.0","info":{"title":"Navixy Platform API","version":"1.0.0"},"tags":[{"name":"Trackers","description":"Trackers, the devices the platform tracks, together with the geo links that share their live location with people outside the account. Resources under the /tracker/ path."}],"servers":[{"url":"https://api.eu.navixy.com/v2","description":"Navixy production server on European platform"},{"url":"https://api.us.navixy.com/v2","description":"Navixy production server on American platform"},{"url":"https://api.me.navixy.com/v2","description":"Navixy production server on Middle East platform"}],"security":[{"api_key":[]}],"components":{"securitySchemes":{"api_key":{"type":"apiKey","description":"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.","name":"Authorization","in":"header"}},"schemas":{"CalibrationPoint":{"type":"object","description":"One point on a sensor's calibration curve, mapping a raw reading to a real-world value. An analogue fuel sensor, for instance, reports volts that have to become litres.","properties":{"in":{"type":"number","description":"Raw value from the sensor."},"out":{"type":"number","description":"Value it corresponds to."}},"required":["in","out"]}},"responses":{"OK":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"`true` if request finished successfully.","readOnly":true}}}}}},"ResponseError":{"description":"Error response object","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Always false."},"status":{"type":"object","description":"Error status. Present only when an error occurred.","properties":{"code":{"type":"integer","description":"An error code in this API, not an HTTP code."},"description":{"type":"string","description":"An error description."}}},"errors":{"type":"array","description":"Per-parameter detail, returned with validation failures such as error code 7. A parameter name here may be an internal field name rather than the documented parameter name.","items":{"type":"object","properties":{"parameter":{"type":"string","description":"Name of the parameter that failed validation."},"error":{"type":"string","description":"What was wrong with it."}}}}}}}}}}},"paths":{"/tracker/sensor/calibration_data/update":{"post":{"tags":["Trackers"],"summary":"Replace calibration data","description":"**Replaces** a sensor's whole calibration curve rather than adding points to it.\n\nRequires the `tracker_update` right.","operationId":"trackerSensorCalibrationDataUpdate","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tracker_id":{"type":"integer","description":"ID of the tracker, also known as the object ID. Must belong to the current account and not be blocked."},"sensor_id":{"type":"integer","description":"Sensor ID.","minimum":1},"data":{"type":"array","description":"The complete new curve.","items":{"$ref":"#/components/schemas/CalibrationPoint"}}},"required":["tracker_id","sensor_id","data"]}}}},"responses":{"200":{"description":"The curve was replaced","$ref":"#/components/responses/OK"},"400":{"description":"Bad request. The response body carries the API-level error code in `status.code`. Validation failures also include an `errors` array naming each offending parameter.","$ref":"#/components/responses/ResponseError"},"403":{"description":"Error 201: no tracker with this ID belongs to the account. Error 219: the tracker is a clone. Error 228: the sensor does not support calibration.","$ref":"#/components/responses/ResponseError"},"default":{"$ref":"#/components/responses/ResponseError"}}}}}}
```

#### Errors

These errors come in addition to the [general error codes](/docs/navixy-api/general/errors.md#error-codes):

* 201 - No tracker with this ID belongs to the account.
* 219 - The tracker is a clone.
* 228 - The sensor does not support calibration.

***

*Required sub-user rights:* `tracker_update`.

## Upload an Omnicomm calibration file

> Replace a sensor's calibration curve from an Omnicomm LLS monitor XML configuration file. \*\*Multipart request\*\*, with the file in a part named \`file\`.\
> \
> When the file describes several sensors, \`sensor\_id\` selects which one to take.\
> \
> Requires the \`tracker\_update\` right.

```json
{"openapi":"3.1.0","info":{"title":"Navixy Platform API","version":"1.0.0"},"tags":[{"name":"Trackers","description":"Trackers, the devices the platform tracks, together with the geo links that share their live location with people outside the account. Resources under the /tracker/ path."}],"servers":[{"url":"https://api.eu.navixy.com/v2","description":"Navixy production server on European platform"},{"url":"https://api.us.navixy.com/v2","description":"Navixy production server on American platform"},{"url":"https://api.me.navixy.com/v2","description":"Navixy production server on Middle East platform"}],"security":[{"api_key":[]}],"components":{"securitySchemes":{"api_key":{"type":"apiKey","description":"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.","name":"Authorization","in":"header"}},"responses":{"OK":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"`true` if request finished successfully.","readOnly":true}}}}}},"ResponseError":{"description":"Error response object","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Always false."},"status":{"type":"object","description":"Error status. Present only when an error occurred.","properties":{"code":{"type":"integer","description":"An error code in this API, not an HTTP code."},"description":{"type":"string","description":"An error description."}}},"errors":{"type":"array","description":"Per-parameter detail, returned with validation failures such as error code 7. A parameter name here may be an internal field name rather than the documented parameter name.","items":{"type":"object","properties":{"parameter":{"type":"string","description":"Name of the parameter that failed validation."},"error":{"type":"string","description":"What was wrong with it."}}}}}}}}}}},"paths":{"/tracker/sensor/calibration_data/upload_omnicomm":{"post":{"tags":["Trackers"],"summary":"Upload an Omnicomm calibration file","description":"Replace a sensor's calibration curve from an Omnicomm LLS monitor XML configuration file. **Multipart request**, with the file in a part named `file`.\n\nWhen the file describes several sensors, `sensor_id` selects which one to take.\n\nRequires the `tracker_update` right.","operationId":"trackerSensorCalibrationDataUploadOmnicomm","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"tracker_id":{"type":"integer","description":"ID of the tracker, also known as the object ID. Must belong to the current account and not be blocked."},"sensor_id":{"type":"integer","description":"Sensor ID.","minimum":1},"file":{"type":"string","description":"The LLS monitor XML file.","format":"binary"}},"required":["tracker_id","sensor_id","file"]}}}},"responses":{"200":{"description":"The curve was replaced","$ref":"#/components/responses/OK"},"400":{"description":"Bad request. The response body carries the API-level error code in `status.code`. Validation failures also include an `errors` array naming each offending parameter.","$ref":"#/components/responses/ResponseError"},"403":{"description":"Error 201: no tracker with this ID belongs to the account. Error 219: the tracker is a clone. Error 228: the sensor does not support calibration. Error 233: no file part was sent. Error 234: the file is not a valid LLS monitor XML file. Error 235: the file holds no calibration data for that sensor number.","$ref":"#/components/responses/ResponseError"},"default":{"$ref":"#/components/responses/ResponseError"}}}}}}
```

#### Errors

These errors come in addition to the [general error codes](/docs/navixy-api/general/errors.md#error-codes):

* 201 - No tracker with this ID belongs to the account.
* 219 - The tracker is a clone.
* 228 - The sensor does not support calibration.
* 233 - No file part was sent.
* 234 - The file is not a valid LLS monitor XML file.
* 235 - The file holds no calibration data for that sensor number.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://navixy.com/docs/navixy-api/user-api/resources/tracking/tracker/sensor/calibration_data.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
