> 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/fleet/driver_journal/entry.md).

# Driver journal entry

A trip that has been categorised, so transport use can be split between business and private.

A driver journal entry is a trip that has been categorised. The journal is how a fleet accounts for how its vehicles were used, most often by separating business travel from private, which is what a tax authority or an employer wants to see.

Entries are created from [trip proposals](/docs/navixy-api/user-api/resources/fleet/driver_journal/proposal.md), which are the raw trips the Navixy platform has already detected over a period. For a walkthrough, see [how to use driver journals](/docs/navixy-api/user-api/guides/fleet-management/driver-journals.md).

## Driver journal entry object

## The DriverJournalEntry object

```json
{"openapi":"3.1.0","info":{"title":"Navixy Platform API","version":"1.0.0"},"components":{"schemas":{"DriverJournalEntry":{"type":"object","description":"A categorised trip in the driver journal.\n\nOn create, everything except `id`, `employee_id`, `comment` and the two odometer values is required, and `id` must be absent. On update only `id`, `type` and `comment` may be sent, and every other field is rejected.","properties":{"id":{"type":"integer","description":"ID of the entry. Absent when creating."},"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."},"start_date":{"type":"string","description":"Start date and time of the entry."},"end_date":{"type":"string","description":"End date and time of the entry. Must be after `start_date`."},"employee_id":{"type":["integer","null"],"description":"ID of the employee driving. Must exist when given."},"type":{"type":"string","description":"Type of the entry.","enum":["work","personal","other"]},"comment":{"type":["string","null"],"description":"Comment for the entry."},"start_location":{"allOf":[{"$ref":"#/components/schemas/JournalLocation"}],"description":"Where the entry starts."},"end_location":{"allOf":[{"$ref":"#/components/schemas/JournalLocation"}],"description":"Where the entry ends."},"length":{"type":"number","description":"Length of the trip, in kilometres."},"start_odometer":{"type":["number","null"],"description":"Odometer value at the start."},"end_odometer":{"type":["number","null"],"description":"Odometer value at the end."}}},"JournalLocation":{"type":"object","description":"A point with an address. Unlike a depot location it carries no radius.","properties":{"lat":{"type":"number","description":"Latitude."},"lng":{"type":"number","description":"Longitude."},"address":{"type":"string","description":"Address at this point."}}}}}}
```

## API actions

API base path: `/driver/journal/entry`.

All these calls need the `driver_journal` feature on the tracker's plan.

There are two ways to get entries: by their IDs, or by specifying a date range. Without `entry_ids`, entries are selected by intersecting their own date range with the range in the request.

***

## List driver journal entries

> Return driver journal entries for one tracker.\
> \
> There are two ways to select them. Give \`entry\_ids\` to fetch entries by ID, or give \`from\` and \`to\` to fetch every entry whose own date range intersects that period.\
> \
> Needs the \`driver\_journal\` feature on the tracker's plan, and returns error 236 without it.\
> \
> A request with an empty body reports \`interval\` as the missing parameter. That is the internal name of the field holding both dates; the public parameters are \`from\` and \`to\`.

```json
{"openapi":"3.1.0","info":{"title":"Navixy Platform API","version":"1.0.0"},"tags":[{"name":"Driver journal","description":"Trips categorised as work, personal or other, and the proposals a track can be turned into. All resources under the /driver/journal/ 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":{"DriverJournalEntry":{"type":"object","description":"A categorised trip in the driver journal.\n\nOn create, everything except `id`, `employee_id`, `comment` and the two odometer values is required, and `id` must be absent. On update only `id`, `type` and `comment` may be sent, and every other field is rejected.","properties":{"id":{"type":"integer","description":"ID of the entry. Absent when creating."},"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."},"start_date":{"type":"string","description":"Start date and time of the entry."},"end_date":{"type":"string","description":"End date and time of the entry. Must be after `start_date`."},"employee_id":{"type":["integer","null"],"description":"ID of the employee driving. Must exist when given."},"type":{"type":"string","description":"Type of the entry.","enum":["work","personal","other"]},"comment":{"type":["string","null"],"description":"Comment for the entry."},"start_location":{"allOf":[{"$ref":"#/components/schemas/JournalLocation"}],"description":"Where the entry starts."},"end_location":{"allOf":[{"$ref":"#/components/schemas/JournalLocation"}],"description":"Where the entry ends."},"length":{"type":"number","description":"Length of the trip, in kilometres."},"start_odometer":{"type":["number","null"],"description":"Odometer value at the start."},"end_odometer":{"type":["number","null"],"description":"Odometer value at the end."}}},"JournalLocation":{"type":"object","description":"A point with an address. Unlike a depot location it carries no radius.","properties":{"lat":{"type":"number","description":"Latitude."},"lng":{"type":"number","description":"Longitude."},"address":{"type":"string","description":"Address at this point."}}}},"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":{"/driver/journal/entry/list":{"post":{"tags":["Driver journal"],"summary":"List driver journal entries","description":"Return driver journal entries for one tracker.\n\nThere are two ways to select them. Give `entry_ids` to fetch entries by ID, or give `from` and `to` to fetch every entry whose own date range intersects that period.\n\nNeeds the `driver_journal` feature on the tracker's plan, and returns error 236 without it.\n\nA request with an empty body reports `interval` as the missing parameter. That is the internal name of the field holding both dates; the public parameters are `from` and `to`.","operationId":"driverJournalEntryList","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.","minimum":1},"from":{"type":"string","description":"Start of the period. Include entries whose range ends after this date."},"to":{"type":"string","description":"End of the period. Include entries whose range ends after this date. Must be after `from`."},"entry_ids":{"type":"array","description":"Optional. Entry IDs to return. **When given, `from` and `to` are ignored** and only these entries are looked up.","items":{"type":"integer"},"minItems":1},"types":{"type":"array","description":"Optional. Restrict to these entry types. At most 3.","items":{"type":"string","enum":["work","personal","other"]},"maxItems":3},"sort":{"type":"array","description":"Optional. Sort options, each a column and direction such as `start_date=asc`. **At most 6 options.** Defaults to `[\"start_date=asc\"]`. Columns: `start_date` sorts by date only, ignoring the time; `start_datetime` sorts by the raw value; `end_date` and `end_datetime` are the same pair for the end; `start_address` and `end_address` sort by address; `driver` sorts by last, first and middle name rather than by employee ID; `type` sorts by entry type.","items":{"type":"string"},"maxItems":6}},"required":["tracker_id","from","to"]}}}},"responses":{"200":{"description":"Matching entries","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"`true` if request finished successfully.","readOnly":true},"list":{"type":"array","items":{"$ref":"#/components/schemas/DriverJournalEntry"}}}}}}},"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"},"402":{"description":"Error 236: the tracker's plan does not include the driver journal feature.","$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):

* 236 - The tracker's plan does not include the driver journal feature.

***

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

## Create driver journal entries

> Create one or more driver journal entries.\
> \
> Each entry needs \`tracker\_id\`, \`start\_date\`, \`end\_date\`, \`type\`, \`start\_location\`, \`end\_location\` and \`length\`. It must not carry an \`id\`.\
> \
> Three rules are checked before anything is written, and any one of them fails the whole request: every \`start\_date\` must be before its \`end\_date\`; the entries in the request must not overlap each other; and none may overlap an entry already stored for the same tracker. Any \`employee\_id\` given must exist.\
> \
> Needs the \`driver\_journal\` feature on the tracker's plan, and returns error 236 without it.\
> \
> Requires the \`vehicle\_update\` right.

```json
{"openapi":"3.1.0","info":{"title":"Navixy Platform API","version":"1.0.0"},"tags":[{"name":"Driver journal","description":"Trips categorised as work, personal or other, and the proposals a track can be turned into. All resources under the /driver/journal/ 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":{"DriverJournalEntry":{"type":"object","description":"A categorised trip in the driver journal.\n\nOn create, everything except `id`, `employee_id`, `comment` and the two odometer values is required, and `id` must be absent. On update only `id`, `type` and `comment` may be sent, and every other field is rejected.","properties":{"id":{"type":"integer","description":"ID of the entry. Absent when creating."},"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."},"start_date":{"type":"string","description":"Start date and time of the entry."},"end_date":{"type":"string","description":"End date and time of the entry. Must be after `start_date`."},"employee_id":{"type":["integer","null"],"description":"ID of the employee driving. Must exist when given."},"type":{"type":"string","description":"Type of the entry.","enum":["work","personal","other"]},"comment":{"type":["string","null"],"description":"Comment for the entry."},"start_location":{"allOf":[{"$ref":"#/components/schemas/JournalLocation"}],"description":"Where the entry starts."},"end_location":{"allOf":[{"$ref":"#/components/schemas/JournalLocation"}],"description":"Where the entry ends."},"length":{"type":"number","description":"Length of the trip, in kilometres."},"start_odometer":{"type":["number","null"],"description":"Odometer value at the start."},"end_odometer":{"type":["number","null"],"description":"Odometer value at the end."}}},"JournalLocation":{"type":"object","description":"A point with an address. Unlike a depot location it carries no radius.","properties":{"lat":{"type":"number","description":"Latitude."},"lng":{"type":"number","description":"Longitude."},"address":{"type":"string","description":"Address at this point."}}}},"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":{"/driver/journal/entry/create":{"post":{"tags":["Driver journal"],"summary":"Create driver journal entries","description":"Create one or more driver journal entries.\n\nEach entry needs `tracker_id`, `start_date`, `end_date`, `type`, `start_location`, `end_location` and `length`. It must not carry an `id`.\n\nThree rules are checked before anything is written, and any one of them fails the whole request: every `start_date` must be before its `end_date`; the entries in the request must not overlap each other; and none may overlap an entry already stored for the same tracker. Any `employee_id` given must exist.\n\nNeeds the `driver_journal` feature on the tracker's plan, and returns error 236 without it.\n\nRequires the `vehicle_update` right.","operationId":"driverJournalEntryCreate","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"entries":{"type":"array","description":"The entries to create, each without an `id`.","items":{"$ref":"#/components/schemas/DriverJournalEntry"},"minItems":1}},"required":["entries"]}}}},"responses":{"200":{"description":"Entries created","$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"},"402":{"description":"Error 236: the tracker's plan does not include the driver journal feature.","$ref":"#/components/responses/ResponseError"},"409":{"description":"Error 247: an entry overlaps another in the same request, or one already stored. The description names the offending start dates.","$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 - if a tracker or an employee not found, 242 - if a start date is not before its end date, 247 - if an entry overlaps another.

***

Only two fields, `type` and `comment`, are available to update. Every other field of an entry is rejected rather than ignored.

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

## Update driver journal entry

> Update the type and comment of one driver journal entry.\
> \
> \*\*Only \`type\` and \`comment\` may be sent, and both \`id\` and \`type\` are required.\*\* Every other field of an entry is rejected rather than ignored: sending \`tracker\_id\`, a date, a location, \`employee\_id\`, \`length\` or an odometer value fails the request with error 7 saying that field "must be null". \`type\` is required even when only the comment is changing.\
> \
> Needs the \`driver\_journal\` feature on the tracker's plan, and returns error 236 without it.\
> \
> Requires the \`vehicle\_update\` right.

```json
{"openapi":"3.1.0","info":{"title":"Navixy Platform API","version":"1.0.0"},"tags":[{"name":"Driver journal","description":"Trips categorised as work, personal or other, and the proposals a track can be turned into. All resources under the /driver/journal/ 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":{"/driver/journal/entry/update":{"post":{"tags":["Driver journal"],"summary":"Update driver journal entry","description":"Update the type and comment of one driver journal entry.\n\n**Only `type` and `comment` may be sent, and both `id` and `type` are required.** Every other field of an entry is rejected rather than ignored: sending `tracker_id`, a date, a location, `employee_id`, `length` or an odometer value fails the request with error 7 saying that field \"must be null\". `type` is required even when only the comment is changing.\n\nNeeds the `driver_journal` feature on the tracker's plan, and returns error 236 without it.\n\nRequires the `vehicle_update` right.","operationId":"driverJournalEntryUpdate","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"entry":{"type":"object","description":"The change to apply.","properties":{"id":{"type":"integer","description":"ID of the driver journal entry to update."},"type":{"type":"string","description":"Type of the entry. Required, even when only `comment` changes.","enum":["work","personal","other"]},"comment":{"type":["string","null"],"description":"New comment for the entry."}},"required":["id","type"]}},"required":["entry"]}}}},"responses":{"200":{"description":"Entry updated","$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"},"402":{"description":"Error 236: the tracker's plan does not include the driver journal feature.","$ref":"#/components/responses/ResponseError"},"404":{"description":"Error 204: no entry with this `id` exists.","$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 - if tracker not found, 204 - if entry not found.

***

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

## Delete driver journal entries

> Delete driver journal entries by ID.\
> \
> \*\*All or nothing.\*\* If any ID in \`entry\_ids\` does not exist, nothing is deleted and the call returns error 217.\
> \
> Needs the \`driver\_journal\` feature on the tracker's plan, and returns error 236 without it.\
> \
> Also accepts GET with the same parameters as query-string values.\
> \
> Requires the \`vehicle\_update\` right.

```json
{"openapi":"3.1.0","info":{"title":"Navixy Platform API","version":"1.0.0"},"tags":[{"name":"Driver journal","description":"Trips categorised as work, personal or other, and the proposals a track can be turned into. All resources under the /driver/journal/ 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":{"/driver/journal/entry/delete":{"post":{"tags":["Driver journal"],"summary":"Delete driver journal entries","description":"Delete driver journal entries by ID.\n\n**All or nothing.** If any ID in `entry_ids` does not exist, nothing is deleted and the call returns error 217.\n\nNeeds the `driver_journal` feature on the tracker's plan, and returns error 236 without it.\n\nAlso accepts GET with the same parameters as query-string values.\n\nRequires the `vehicle_update` right.","operationId":"driverJournalEntryDelete","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"entry_ids":{"type":"array","description":"IDs of the entries to delete. Must not be empty.","items":{"type":"integer"},"minItems":1}},"required":["entry_ids"]}}}},"responses":{"200":{"description":"Entries deleted","$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"},"402":{"description":"Error 236: the tracker's plan does not include the driver journal feature.","$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):

* 217 - if any of the given IDs does not exist, in which case nothing is deleted.

***

The response is a driver journal report file, a standard file download, rather than a JSON envelope.

## Download driver journal

> Return the driver journal for one tracker as a report file. Entries are selected exactly as in \`driver/journal/entry/list\`.\
> \
> \*\*\`format\` is required in practice.\*\* It carries no validation annotation, so omitting it is not reported as a missing parameter: the request fails later with error 6, "Unexpected error".\
> \
> The response is the file itself, not a JSON envelope. With \`add\_filename\_header\` left at its default the response carries a \`Content-Disposition\` header naming a file such as \`Driver\_Journal-20260818-2210.pdf\`.\
> \
> The number of report downloads per user is capped by the \`report.download.maxPerUser\` config option.\
> \
> Needs the \`driver\_journal\` feature on the tracker's plan, and returns error 236 without it.

```json
{"openapi":"3.1.0","info":{"title":"Navixy Platform API","version":"1.0.0"},"tags":[{"name":"Driver journal","description":"Trips categorised as work, personal or other, and the proposals a track can be turned into. All resources under the /driver/journal/ 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":{"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":{"/driver/journal/entry/download":{"post":{"tags":["Driver journal"],"summary":"Download driver journal","description":"Return the driver journal for one tracker as a report file. Entries are selected exactly as in `driver/journal/entry/list`.\n\n**`format` is required in practice.** It carries no validation annotation, so omitting it is not reported as a missing parameter: the request fails later with error 6, \"Unexpected error\".\n\nThe response is the file itself, not a JSON envelope. With `add_filename_header` left at its default the response carries a `Content-Disposition` header naming a file such as `Driver_Journal-20260818-2210.pdf`.\n\nThe number of report downloads per user is capped by the `report.download.maxPerUser` config option.\n\nNeeds the `driver_journal` feature on the tracker's plan, and returns error 236 without it.","operationId":"driverJournalEntryDownload","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.","minimum":1},"from":{"type":"string","description":"Start of the period. Include entries whose range ends after this date."},"to":{"type":"string","description":"End of the period. Include entries whose range ends after this date. Must be after `from`."},"entry_ids":{"type":"array","description":"Optional. Entry IDs to return. **When given, `from` and `to` are ignored** and only these entries are looked up.","items":{"type":"integer"},"minItems":1},"types":{"type":"array","description":"Optional. Restrict to these entry types. At most 3.","items":{"type":"string","enum":["work","personal","other"]},"maxItems":3},"sort":{"type":"array","description":"Optional. Sort options, each a column and direction such as `start_date=asc`. **At most 6 options.** Defaults to `[\"start_date=asc\"]`. Columns: `start_date` sorts by date only, ignoring the time; `start_datetime` sorts by the raw value; `end_date` and `end_datetime` are the same pair for the end; `start_address` and `end_address` sort by address; `driver` sorts by last, first and middle name rather than by employee ID; `type` sorts by entry type.","items":{"type":"string"},"maxItems":6},"format":{"type":"string","description":"File format of the report.","enum":["pdf","xls","xlsx"]},"group_by":{"type":"string","description":"Optional. Put grouped entries into separate sections of the table. `type` groups by entry type, `date` groups by start date per day.","enum":["type","date"]},"add_filename_header":{"type":"boolean","description":"Optional. Default `true`. Append a `Content-Disposition` header to the response."}},"required":["tracker_id","from","to","format"]}}}},"responses":{"200":{"description":"The driver journal report file","content":{"application/pdf":{"schema":{"type":"string","format":"binary"}},"application/vnd.ms-excel":{"schema":{"type":"string","format":"binary"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"schema":{"type":"string","format":"binary"}}}},"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"},"402":{"description":"Error 236: the tracker's plan does not include the driver journal feature.","$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):

* 236 - The tracker's plan does not include the driver journal feature.


---

# 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/fleet/driver_journal/entry.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.
