# Travel and vehicles · DameDoklad API

> Operations in the Travel and vehicles group.

Source: https://damedoklad.cz/en/docs/api-reference/travel/

# Travel and vehicles

Operations in the Travel and vehicles group.

## List fuel purchases

GET `/v1/fuel-purchases`

List fuel purchases

MCP tool: `list-fuel-purchases`

### Query parameters

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

`vehicleId` string

ID of the vehicle. Find it with list-vehicles.

### Response · 200

`data` object\[\] required

`object` "vehicle\_fuel\_purchase" required

`id` string required

`vehicleId` string required

`purchasedOn` string required date

`quantityMilli` integer required

`amountHaler` integer required

`odometer` integer | null

`vendor` null | string required

`note` null | string

`total` integer

Rows that match, on all pages.

`hasMore` boolean required

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/fuel-purchases \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/fuel-purchases', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/fuel-purchases",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Record a fuel purchase for the fuel reconciliation; it does not post to the books, the receipt does

POST `/v1/fuel-purchases`

Record a fuel purchase for the fuel reconciliation; it does not post to the books, the receipt does

MCP tool: `create-fuel-purchase`

### Request body

`vehicleId` string required

ID of the vehicle. Find it with list-vehicles.

`purchasedOn` string required YYYY-MM-DD

Date as YYYY-MM-DD.

`quantityMilli` integer required min 1 max 9007199254740991

Integer thousandths: 1500 means 1.5.

`amountHaler` integer required min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`odometer` integer min 0 max 9007199254740991

`vendor` string max 500 chars

`note` string max 2000 chars

### Response · 201

`id` string required

`vehicleId` string required

`purchasedOn` string required date

`quantityMilli` integer required

`amountHaler` integer required

`odometer` integer | null

`vendor` null | string required

`note` null | string

```bash
curl -X POST https://api.damedoklad.cz/v1/fuel-purchases \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "vehicleId": "tvh_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "purchasedOn": "2026-10-30",
  "quantityMilli": 1000,
  "amountHaler": 1210000
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/fuel-purchases', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "vehicleId": "tvh_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "purchasedOn": "2026-10-30",
    "quantityMilli": 1000,
    "amountHaler": 1210000
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/fuel-purchases",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "vehicleId": "tvh_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "purchasedOn": "2026-10-30",
        "quantityMilli": 1000,
        "amountHaler": 1210000
    },
)
data = response.json()
```

## Delete a fuel purchase

DELETE `/v1/fuel-purchases/{id}`

Delete a fuel purchase

IrreversibleThis operation cannot be undone. MCP clients ask for confirmation first.

MCP tool: `delete-fuel-purchase`

### Path parameters

`id` string required

### Response · 200

`id` string required

`deleted` boolean required

```bash
curl -X DELETE https://api.damedoklad.cz/v1/fuel-purchases/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/fuel-purchases/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/fuel-purchases/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Import a fuel card statement as CSV: date, litres, and amount with VAT required; plate, product, station, card, and odometer optional. dryRun only validates

POST `/v1/fuel-purchases/import`

Import a fuel card statement as CSV: date, litres, and amount with VAT required; plate, product, station, card, and odometer optional. dryRun only validates. Lines for anything but fuel, such as a car wash, are skipped and listed. Other headers go through columnMap. A purchase already recorded (same vehicle, date, litres, and amount) is skipped. It does not post to the books; the invoice from the card issuer does.

MCP tool: `import-fuel-card`

### Request body

`vehicleId` string

ID of the vehicle. Find it with list-vehicles.

`csv` string max 4000000 chars

`fileBase64` string max 8000000 chars

File content encoded as base64.

`columnMap` object

`dryRun` boolean

### Response · 200

`dryRun` boolean required

`imported` integer required

`valid` integer required

`duplicates` integer required

`skipped` object\[\] required

`line` integer required

`product` string required

`errors` object\[\] required

`line` integer required

`message` null | string required

`totalQuantityMilli` integer required

`totalAmountHaler` integer required

`headers` any required

Null in every recorded response.

`missing` any required

Null in every recorded response.

```bash
curl -X POST https://api.damedoklad.cz/v1/fuel-purchases/import \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "vehicleId": "tvh_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "csv": "string",
  "fileBase64": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/fuel-purchases/import', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "vehicleId": "tvh_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "csv": "string",
    "fileBase64": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/fuel-purchases/import",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "vehicleId": "tvh_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "csv": "string",
        "fileBase64": "string"
    },
)
data = response.json()
```

## Logbook of a year for the tax authority as a PDF: all trips, monthly km, business share, fuel against the technical certificate, and odometer problems

GET `/v1/logbook-export.pdf`

Logbook of a year for the tax authority as a PDF: all trips, monthly km, business share, fuel against the technical certificate, and odometer problems. The Income Tax Act prescribes no form for a logbook. The taxpayer proves the expense (§ 92 odst. 3 daňového řádu), so the export states everything that proof rests on. Pass vehicleId for one vehicle.

MCP tool: `export-logbook-for-authority-pdf`

### Query parameters

`year` integer required min 1990 max 2100

`vehicleId` string

ID of the vehicle. Find it with list-vehicles.

### Response · 200

Returns a application/pdf file.

```bash
curl https://api.damedoklad.cz/v1/logbook-export.pdf \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/logbook-export.pdf', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/logbook-export.pdf",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Logbook of a year as an XLSX workbook: a summary sheet and one sheet of trips per vehicle

GET `/v1/logbook-export.xlsx`

Logbook of a year as an XLSX workbook: a summary sheet and one sheet of trips per vehicle

MCP tool: `export-logbook-for-authority-xlsx`

### Query parameters

`year` integer required min 1990 max 2100

`vehicleId` string

ID of the vehicle. Find it with list-vehicles.

### Response · 200

Returns a application/vnd.openxmlformats-officedocument.spreadsheetml.sheet file.

```bash
curl https://api.damedoklad.cz/v1/logbook-export.xlsx \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/logbook-export.xlsx', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/logbook-export.xlsx",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Paušální výdaj na dopravu for a year (§ 24 odst. 2 písm. zt) ZDP): 5 000 Kč per vehicle and month, 4 000 Kč when reduced. The tax module reads this

GET `/v1/transport-flat-rate`

Paušální výdaj na dopravu for a year (§ 24 odst. 2 písm. zt) ZDP): 5 000 Kč per vehicle and month, 4 000 Kč when reduced. The tax module reads this

MCP tool: `get-transport-flat-rate`

### Query parameters

`year` integer required min 1990 max 2100

### Response · 200

`year` integer required

`vehicles` object\[\] required

`vehicleId` string required

`mode` string required

`monthlyHaler` integer required

`months` object\[\] required

`month` integer | null required

`days` integer required

`amountHaler` integer | null required

`amountHaler` integer | null required

`totalHaler` integer | null required

`reducedCount` integer required

`monthlyHaler` integer

`reducedPct` integer

`maxVehicles` integer

```bash
curl https://api.damedoklad.cz/v1/transport-flat-rate \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/transport-flat-rate', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/transport-flat-rate",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Choose the transport flat rate of a vehicle for a year: full, reduced (also private use), or none

PUT `/v1/transport-flat-rate`

Choose the transport flat rate of a vehicle for a year: full, reduced (also private use), or none

MCP tool: `set-transport-flat-rate`

### Request body

`vehicleId` string required

ID of the vehicle. Find it with list-vehicles.

`year` integer required min 1990 max 2100

`mode` "full" | "reduced" | "none" required

`validFrom` string YYYY-MM-DD

Date as YYYY-MM-DD.

`validTo` string YYYY-MM-DD

Date as YYYY-MM-DD.

### Response · 200

`year` integer required

`vehicles` object\[\] required

`vehicleId` string required

`mode` string required

`monthlyHaler` integer required

`months` object\[\] required

`month` integer | null required

`days` integer required

`amountHaler` integer | null required

`amountHaler` integer | null required

`totalHaler` integer | null required

`reducedCount` integer required

`monthlyHaler` integer

`reducedPct` integer

`maxVehicles` integer

```bash
curl -X PUT https://api.damedoklad.cz/v1/transport-flat-rate \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "vehicleId": "tvh_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "year": 2026,
  "mode": "full"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/transport-flat-rate', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "vehicleId": "tvh_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "year": 2026,
    "mode": "full"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.put(
    "https://api.damedoklad.cz/v1/transport-flat-rate",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "vehicleId": "tvh_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "year": 2026,
        "mode": "full"
    },
)
data = response.json()
```

## Employees that a business trip can be linked to: id and name only

GET `/v1/travel-employees`

Employees that a business trip can be linked to: id and name only

MCP tool: `list-travel-employees`

### Query parameters

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

### Response · 200

`data` object\[\] required

`object` "travel\_employee" required

`id` string required

`name` null | string required

`total` integer

Rows that match, on all pages.

`hasMore` boolean required

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/travel-employees \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/travel-employees', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/travel-employees",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## List business trip orders (cestovní příkazy)

GET `/v1/travel-orders`

List business trip orders (cestovní příkazy)

MCP tool: `list-travel-orders`

### Query parameters

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

`status` "draft" | "settled" | "paid"

### Response · 200

`data` object\[\] required

`object` "travel\_order" required

`id` string required

`number` string required

`travelerName` string required

`travelerKind` string required

`purpose` string required

`destination` string required

`startAt` string required

`endAt` string required

`transport` string required

`vehicleId` null | string required

`kmMilli` integer required

`trailer` boolean required

`documentedFuelPriceHaler` integer | null required

`basicRateHaler` integer | null required

`pocketMoneyPct` integer required

`freeMeals` object required

`exchangeRates` object required

`advanceHaler` integer required

`advancePaidOn` null | string required date

`status` string required

`totalHaler` integer required

`settleHaler` integer required

`settledOn` null | string required date

`paidOn` null | string required date

`note` string | null required

`employeeId` null | string required

`interruptions` object\[\] required

`toAt` string required

`fromAt` string required

`familyVisits` object\[\] required

`toAt` string required

`fromAt` string required

`fareHaler` integer

`limitHaler` integer

`currency` null | string

`fareCents` integer

`limitCents` integer

`familyVisitAgreed` boolean required

`agreedMeals` object required

`tier5to12` integer

`mealCuts` object required

`tier12to18` integer

`foreignRatePct` integer | null required

`fareEquivalentHaler` integer required

`payMethod` null | string required

`payrollYear` integer | null required

`payrollMonth` integer | null required

`settlement` null | object required

`days` object\[\] required

`date` string required date

`tier` null | string required

`foreign` null | object required

`freeMeals` integer required

`grossHaler` integer required

`amountHaler` integer | null required

`abroadMinutes` integer required

`reductionHaler` integer required

`domesticMinutes` integer required

`taxableExcessHaler` integer required

`mileage` null | object required

`kmMilli` integer required

`fuelHaler` integer required

`rateHaler` integer required

`basicHaler` integer required

`totalHaler` integer required

`consumedMilli` integer required

`fuelPriceHaler` integer required

`fuelPriceSource` string required

`expenses` object\[\] required

`kind` string required

`currency` null | string required

`vatHaler` integer | null required

`amountCents` integer required

`amountHaler` integer | null required

`description` null | string required

`vatHaler` integer | null required

`warnings` any\[\] required

`totalHaler` integer required

`settleHaler` integer required

`advanceHaler` integer required

`familyVisits` object\[\] required

`to` string required

`from` string required

`fareHaler` integer required

`limitHaler` integer required

`amountHaler` integer | null required

`mileageHaler` integer required

`expensesHaler` integer required

`roundingHaler` integer required

`familyVisitHaler` integer required

`foreignMealHaler` integer required

`pocketMoneyHaler` integer required

`domesticMealHaler` integer required

`foreignByCurrency` object required

`taxableExcessHaler` integer required

`fareEquivalentHaler` integer required

`abroad` object\[\]

`countryCode` null | string required

`fromAt` string required

`toAt` string required

`expenses` object\[\]

`kind` string required

`description` null | string required

`amountCents` integer required

`currency` null | string required

`vatHaler` integer | null required

`total` integer

Rows that match, on all pages.

`hasMore` boolean required

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/travel-orders \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/travel-orders', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/travel-orders",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Create a domestic or foreign business trip order; add abroad segments and expenses to it

POST `/v1/travel-orders`

Create a domestic or foreign business trip order; add abroad segments and expenses to it

MCP tool: `create-travel-order`

### Request body

`travelerName` string max 200 chars

`employeeId` string | null

ID of the employee.

`interruptions` object\[\]

`fromAt` string required

`toAt` string required

`familyVisits` object\[\]

`fromAt` string required

`toAt` string required

`fareHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`limitHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`currency` string 3 chars

ISO 4217 currency code, for example CZK or EUR.

`fareCents` integer min 0 max 9007199254740991

`limitCents` integer min 0 max 9007199254740991

`familyVisitAgreed` boolean

`agreedMeals` object

`tier5to12` integer min 0 max 9007199254740991

`tier12to18` integer min 0 max 9007199254740991

`over18` integer min 0 max 9007199254740991

`mealCuts` object

`tier5to12` number min 0 max 70

`tier12to18` number min 0 max 35

`over18` number min 0 max 25

`foreignRatePct` integer | null

`fareEquivalentHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`travelerKind` "employee" | "owner"

`purpose` string required max 200 chars

`destination` string required max 200 chars

`startAt` string required

`endAt` string required

`transport` "public" | "company\_car" | "private\_car" | "equivalent" | "other"

`vehicleId` string

ID of the vehicle. Find it with list-vehicles.

`kmMilli` integer min 0 max 9007199254740991

Integer thousandths: 1500 means 1.5.

`trailer` boolean

`documentedFuelPriceHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`basicRateHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`pocketMoneyPct` integer min 0 max 40

`freeMeals` object

`exchangeRates` object

`advanceHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`abroad` object\[\]

`countryCode` string required min 2 chars max 20 chars

`fromAt` string required

`toAt` string required

`expenses` object\[\]

`kind` "accommodation" | "transport" | "parking" | "other"

`description` string max 500 chars

`amountCents` integer required min 0 max 9007199254740991

`currency` string 3 chars

ISO 4217 currency code, for example CZK or EUR.

`vatHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`note` string max 2000 chars

### Response · 201

`id` string required

`number` string required

`travelerName` string required

`travelerKind` string required

`purpose` string required

`destination` string required

`startAt` string required

`endAt` string required

`transport` string required

`vehicleId` null | string required

`kmMilli` integer required

`trailer` boolean required

`documentedFuelPriceHaler` integer | null required

`basicRateHaler` integer | null required

`pocketMoneyPct` integer required

`freeMeals` object required

`exchangeRates` object required

`advanceHaler` integer required

`advancePaidOn` null | string required date

`status` string required

`totalHaler` integer required

`settleHaler` integer required

`settledOn` null | string required date

`paidOn` null | string required date

`note` string | null required

`employeeId` null | string required

`interruptions` object\[\] required

`toAt` string required

`fromAt` string required

`familyVisits` object\[\] required

`toAt` string required

`fromAt` string required

`fareHaler` integer

`limitHaler` integer

`currency` null | string

`fareCents` integer

`limitCents` integer

`familyVisitAgreed` boolean required

`agreedMeals` object required

`tier5to12` integer

`mealCuts` object required

`tier12to18` integer

`foreignRatePct` integer | null required

`fareEquivalentHaler` integer required

`payMethod` null | string required

`payrollYear` integer | null required

`payrollMonth` integer | null required

`settlement` null | object required

`days` object\[\] required

`date` string required date

`tier` null | string required

`foreign` null | object required

`currency` null | string required

`baseAmount` integer required

`grossCents` integer required

`amountCents` integer required

`countryCode` null | string required

`countryName` string required

`fractionThirds` integer required

`reductionCents` integer required

`freeMeals` integer required

`grossHaler` integer required

`amountHaler` integer | null required

`abroadMinutes` integer required

`reductionHaler` integer required

`domesticMinutes` integer required

`taxableExcessHaler` integer required

`mileage` null | object required

`kmMilli` integer required

`fuelHaler` integer required

`rateHaler` integer required

`basicHaler` integer required

`totalHaler` integer required

`consumedMilli` integer required

`fuelPriceHaler` integer required

`fuelPriceSource` string required

`expenses` object\[\] required

`kind` string required

`currency` null | string required

`vatHaler` integer | null required

`amountCents` integer required

`amountHaler` integer | null required

`description` null | string required

`vatHaler` integer | null required

`warnings` any\[\] required

`totalHaler` integer required

`settleHaler` integer required

`advanceHaler` integer required

`familyVisits` object\[\] required

`to` string required

`from` string required

`fareHaler` integer required

`limitHaler` integer required

`amountHaler` integer | null required

`mileageHaler` integer required

`expensesHaler` integer required

`roundingHaler` integer required

`familyVisitHaler` integer required

`foreignMealHaler` integer required

`pocketMoneyHaler` integer required

`domesticMealHaler` integer required

`foreignByCurrency` object required

`taxableExcessHaler` integer required

`fareEquivalentHaler` integer required

`abroad` object\[\]

`countryCode` null | string required

`fromAt` string required

`toAt` string required

`expenses` object\[\]

`kind` string required

`description` null | string required

`amountCents` integer required

`currency` null | string required

`vatHaler` integer | null required

```bash
curl -X POST https://api.damedoklad.cz/v1/travel-orders \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "purpose": "string",
  "destination": "string",
  "startAt": "2026-10-30T08:00",
  "endAt": "2026-10-30T08:00"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/travel-orders', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "purpose": "string",
    "destination": "string",
    "startAt": "2026-10-30T08:00",
    "endAt": "2026-10-30T08:00"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/travel-orders",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "purpose": "string",
        "destination": "string",
        "startAt": "2026-10-30T08:00",
        "endAt": "2026-10-30T08:00"
    },
)
data = response.json()
```

## Get a business trip order with its time abroad and expenses

GET `/v1/travel-orders/{id}`

Get a business trip order with its time abroad and expenses

MCP tool: `get-travel-order`

### Path parameters

`id` string required

### Response · 200

`id` string required

`number` string required

`travelerName` string required

`travelerKind` string required

`purpose` string required

`destination` string required

`startAt` string required

`endAt` string required

`transport` string required

`vehicleId` null | string required

`kmMilli` integer required

`trailer` boolean required

`documentedFuelPriceHaler` integer | null required

`basicRateHaler` integer | null required

`pocketMoneyPct` integer required

`freeMeals` object required

`exchangeRates` object required

`advanceHaler` integer required

`advancePaidOn` null | string required date

`status` string required

`totalHaler` integer required

`settleHaler` integer required

`settledOn` null | string required date

`paidOn` null | string required date

`note` string | null required

`employeeId` null | string required

`interruptions` object\[\] required

`toAt` string required

`fromAt` string required

`familyVisits` object\[\] required

`toAt` string required

`fromAt` string required

`fareHaler` integer

`limitHaler` integer

`currency` null | string

`fareCents` integer

`limitCents` integer

`familyVisitAgreed` boolean required

`agreedMeals` object required

`tier5to12` integer

`mealCuts` object required

`tier12to18` integer

`foreignRatePct` integer | null required

`fareEquivalentHaler` integer required

`payMethod` null | string required

`payrollYear` integer | null required

`payrollMonth` integer | null required

`settlement` null | object required

`days` object\[\] required

`date` string required date

`tier` null | string required

`foreign` null | object required

`currency` null | string required

`baseAmount` integer required

`grossCents` integer required

`amountCents` integer required

`countryCode` null | string required

`countryName` string required

`fractionThirds` integer required

`reductionCents` integer required

`freeMeals` integer required

`grossHaler` integer required

`amountHaler` integer | null required

`abroadMinutes` integer required

`reductionHaler` integer required

`domesticMinutes` integer required

`taxableExcessHaler` integer required

`mileage` null | object required

`kmMilli` integer required

`fuelHaler` integer required

`rateHaler` integer required

`basicHaler` integer required

`totalHaler` integer required

`consumedMilli` integer required

`fuelPriceHaler` integer required

`fuelPriceSource` string required

`expenses` object\[\] required

`kind` string required

`currency` null | string required

`vatHaler` integer | null required

`amountCents` integer required

`amountHaler` integer | null required

`description` null | string required

`vatHaler` integer | null required

`warnings` any\[\] required

`totalHaler` integer required

`settleHaler` integer required

`advanceHaler` integer required

`familyVisits` object\[\] required

`to` string required

`from` string required

`fareHaler` integer required

`limitHaler` integer required

`amountHaler` integer | null required

`mileageHaler` integer required

`expensesHaler` integer required

`roundingHaler` integer required

`familyVisitHaler` integer required

`foreignMealHaler` integer required

`pocketMoneyHaler` integer required

`domesticMealHaler` integer required

`foreignByCurrency` object required

`taxableExcessHaler` integer required

`fareEquivalentHaler` integer required

`abroad` object\[\]

`countryCode` null | string required

`fromAt` string required

`toAt` string required

`expenses` object\[\]

`kind` string required

`description` null | string required

`amountCents` integer required

`currency` null | string required

`vatHaler` integer | null required

```bash
curl https://api.damedoklad.cz/v1/travel-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/travel-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/travel-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Edit a business trip order before it is settled

PATCH `/v1/travel-orders/{id}`

Edit a business trip order before it is settled

MCP tool: `update-travel-order`

### Path parameters

`id` string required

### Request body

`travelerName` string max 200 chars

`employeeId` string | null

ID of the employee.

`interruptions` object\[\]

`fromAt` string required

`toAt` string required

`familyVisits` object\[\]

`fromAt` string required

`toAt` string required

`fareHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`limitHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`currency` string 3 chars

ISO 4217 currency code, for example CZK or EUR.

`fareCents` integer min 0 max 9007199254740991

`limitCents` integer min 0 max 9007199254740991

`familyVisitAgreed` boolean

`agreedMeals` object

`tier5to12` integer min 0 max 9007199254740991

`tier12to18` integer min 0 max 9007199254740991

`over18` integer min 0 max 9007199254740991

`mealCuts` object

`tier5to12` number min 0 max 70

`tier12to18` number min 0 max 35

`over18` number min 0 max 25

`foreignRatePct` integer | null

`fareEquivalentHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`travelerKind` "employee" | "owner"

`purpose` string max 200 chars

`destination` string max 200 chars

`startAt` string

`endAt` string

`transport` "public" | "company\_car" | "private\_car" | "equivalent" | "other"

`vehicleId` string

ID of the vehicle. Find it with list-vehicles.

`kmMilli` integer min 0 max 9007199254740991

Integer thousandths: 1500 means 1.5.

`trailer` boolean

`documentedFuelPriceHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`basicRateHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`pocketMoneyPct` integer min 0 max 40

`freeMeals` object

`exchangeRates` object

`advanceHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`abroad` object\[\]

`countryCode` string required min 2 chars max 20 chars

`fromAt` string required

`toAt` string required

`expenses` object\[\]

`kind` "accommodation" | "transport" | "parking" | "other"

`description` string max 500 chars

`amountCents` integer required min 0 max 9007199254740991

`currency` string 3 chars

ISO 4217 currency code, for example CZK or EUR.

`vatHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`note` string max 2000 chars

### Response · 200

`id` string required

`number` string required

`travelerName` string required

`travelerKind` string required

`purpose` string required

`destination` string required

`startAt` string required

`endAt` string required

`transport` string required

`vehicleId` null | string required

`kmMilli` integer required

`trailer` boolean required

`documentedFuelPriceHaler` integer | null required

`basicRateHaler` integer | null required

`pocketMoneyPct` integer required

`freeMeals` object required

`exchangeRates` object required

`advanceHaler` integer required

`advancePaidOn` null | string required date

`status` string required

`totalHaler` integer required

`settleHaler` integer required

`settledOn` null | string required date

`paidOn` null | string required date

`note` string | null required

`employeeId` null | string required

`interruptions` object\[\] required

`toAt` string required

`fromAt` string required

`familyVisits` object\[\] required

`toAt` string required

`fromAt` string required

`fareHaler` integer

`limitHaler` integer

`currency` null | string

`fareCents` integer

`limitCents` integer

`familyVisitAgreed` boolean required

`agreedMeals` object required

`tier5to12` integer

`mealCuts` object required

`tier12to18` integer

`foreignRatePct` integer | null required

`fareEquivalentHaler` integer required

`payMethod` null | string required

`payrollYear` integer | null required

`payrollMonth` integer | null required

`settlement` null | object required

`days` object\[\] required

`date` string required date

`tier` null | string required

`foreign` null | object required

`currency` null | string required

`baseAmount` integer required

`grossCents` integer required

`amountCents` integer required

`countryCode` null | string required

`countryName` string required

`fractionThirds` integer required

`reductionCents` integer required

`freeMeals` integer required

`grossHaler` integer required

`amountHaler` integer | null required

`abroadMinutes` integer required

`reductionHaler` integer required

`domesticMinutes` integer required

`taxableExcessHaler` integer required

`mileage` null | object required

`kmMilli` integer required

`fuelHaler` integer required

`rateHaler` integer required

`basicHaler` integer required

`totalHaler` integer required

`consumedMilli` integer required

`fuelPriceHaler` integer required

`fuelPriceSource` string required

`expenses` object\[\] required

`kind` string required

`currency` null | string required

`vatHaler` integer | null required

`amountCents` integer required

`amountHaler` integer | null required

`description` null | string required

`vatHaler` integer | null required

`warnings` any\[\] required

`totalHaler` integer required

`settleHaler` integer required

`advanceHaler` integer required

`familyVisits` object\[\] required

`to` string required

`from` string required

`fareHaler` integer required

`limitHaler` integer required

`amountHaler` integer | null required

`mileageHaler` integer required

`expensesHaler` integer required

`roundingHaler` integer required

`familyVisitHaler` integer required

`foreignMealHaler` integer required

`pocketMoneyHaler` integer required

`domesticMealHaler` integer required

`foreignByCurrency` object required

`taxableExcessHaler` integer required

`fareEquivalentHaler` integer required

`abroad` object\[\]

`countryCode` null | string required

`fromAt` string required

`toAt` string required

`expenses` object\[\]

`kind` string required

`description` null | string required

`amountCents` integer required

`currency` null | string required

`vatHaler` integer | null required

```bash
curl -X PATCH https://api.damedoklad.cz/v1/travel-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "travelerName": "Pekárna U Lípy s.r.o.",
  "employeeId": "yee_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "interruptions": [
    {
      "fromAt": "2026-10-30T08:00",
      "toAt": "2026-10-30T08:00"
    }
  ]
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/travel-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "travelerName": "Pekárna U Lípy s.r.o.",
    "employeeId": "yee_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "interruptions": [
      {
        "fromAt": "2026-10-30T08:00",
        "toAt": "2026-10-30T08:00"
      }
    ]
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/travel-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "travelerName": "Pekárna U Lípy s.r.o.",
        "employeeId": "yee_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "interruptions": [
            {
                "fromAt": "2026-10-30T08:00",
                "toAt": "2026-10-30T08:00"
            }
        ]
    },
)
data = response.json()
```

## Delete a business trip order that has not been settled and has no paid advance

DELETE `/v1/travel-orders/{id}`

Delete a business trip order that has not been settled and has no paid advance

IrreversibleThis operation cannot be undone. MCP clients ask for confirmation first.

MCP tool: `delete-travel-order`

### Path parameters

`id` string required

### Response · 200

`id` string required

`deleted` boolean required

```bash
curl -X DELETE https://api.damedoklad.cz/v1/travel-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/travel-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/travel-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Pay out the trip advance: MD 335 / D 211xxx or 221xxx, or a non-tax cash book row. Cash comes from a register; a transfer from a bank account, and a later statement line takes it over. A movement can also pay it directly (POST /bank-movements/{id}/match with kind travel\_advance)

POST `/v1/travel-orders/{id}/advance`

Pay out the trip advance: MD 335 / D 211xxx or 221xxx, or a non-tax cash book row. Cash comes from a register; a transfer from a bank account, and a later statement line takes it over. A movement can also pay it directly (POST /bank-movements/{id}/match with kind travel\_advance)

MCP tool: `pay-travel-advance`

### Path parameters

`id` string required

### Request body

`date` string required YYYY-MM-DD

Date as YYYY-MM-DD.

`method` "transfer" | "cash" | "card"

`registerId` string

ID of the register.

`bankAccountId` string

ID of the bank account. Find it with list-bank-accounts.

`amountHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

### Response · 200

`id` string required

`number` string required

`travelerName` string required

`travelerKind` string required

`purpose` string required

`destination` string required

`startAt` string required

`endAt` string required

`transport` string required

`vehicleId` null | string required

`kmMilli` integer required

`trailer` boolean required

`documentedFuelPriceHaler` integer | null required

`basicRateHaler` integer | null required

`pocketMoneyPct` integer required

`freeMeals` object required

`exchangeRates` object required

`advanceHaler` integer required

`advancePaidOn` null | string required date

`status` string required

`totalHaler` integer required

`settleHaler` integer required

`settledOn` null | string required date

`paidOn` null | string required date

`note` string | null required

`employeeId` null | string required

`interruptions` object\[\] required

`toAt` string required

`fromAt` string required

`familyVisits` object\[\] required

`toAt` string required

`fromAt` string required

`fareHaler` integer

`limitHaler` integer

`currency` null | string

`fareCents` integer

`limitCents` integer

`familyVisitAgreed` boolean required

`agreedMeals` object required

`tier5to12` integer

`mealCuts` object required

`tier12to18` integer

`foreignRatePct` integer | null required

`fareEquivalentHaler` integer required

`payMethod` null | string required

`payrollYear` integer | null required

`payrollMonth` integer | null required

`settlement` null | object required

`days` object\[\] required

`date` string required date

`tier` null | string required

`foreign` null | object required

`currency` null | string required

`baseAmount` integer required

`grossCents` integer required

`amountCents` integer required

`countryCode` null | string required

`countryName` string required

`fractionThirds` integer required

`reductionCents` integer required

`freeMeals` integer required

`grossHaler` integer required

`amountHaler` integer | null required

`abroadMinutes` integer required

`reductionHaler` integer required

`domesticMinutes` integer required

`taxableExcessHaler` integer required

`mileage` null | object required

`kmMilli` integer required

`fuelHaler` integer required

`rateHaler` integer required

`basicHaler` integer required

`totalHaler` integer required

`consumedMilli` integer required

`fuelPriceHaler` integer required

`fuelPriceSource` string required

`expenses` object\[\] required

`kind` string required

`currency` null | string required

`vatHaler` integer | null required

`amountCents` integer required

`amountHaler` integer | null required

`description` null | string required

`vatHaler` integer | null required

`warnings` any\[\] required

`totalHaler` integer required

`settleHaler` integer required

`advanceHaler` integer required

`familyVisits` object\[\] required

`to` string required

`from` string required

`fareHaler` integer required

`limitHaler` integer required

`amountHaler` integer | null required

`mileageHaler` integer required

`expensesHaler` integer required

`roundingHaler` integer required

`familyVisitHaler` integer required

`foreignMealHaler` integer required

`pocketMoneyHaler` integer required

`domesticMealHaler` integer required

`foreignByCurrency` object required

`taxableExcessHaler` integer required

`fareEquivalentHaler` integer required

`abroad` object\[\]

`countryCode` null | string required

`fromAt` string required

`toAt` string required

`expenses` object\[\]

`kind` string required

`description` null | string required

`amountCents` integer required

`currency` null | string required

`vatHaler` integer | null required

```bash
curl -X POST https://api.damedoklad.cz/v1/travel-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/advance \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "date": "2026-10-30"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/travel-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/advance', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "date": "2026-10-30"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/travel-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/advance",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "date": "2026-10-30"
    },
)
data = response.json()
```

## Download a business trip order as a PDF: the trip, the settlement by day, expenses, the balance, and signature lines

GET `/v1/travel-orders/{id}/order.pdf`

Download a business trip order as a PDF: the trip, the settlement by day, expenses, the balance, and signature lines

MCP tool: `export-travel-order-pdf`

### Path parameters

`id` string required

### Response · 200

Returns a application/pdf file.

```bash
curl https://api.damedoklad.cz/v1/travel-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/order.pdf \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/travel-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/order.pdf', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/travel-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/order.pdf",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Pay the reimbursement (MD 333 / D 221xxx or 211xxx) or take back an overpaid advance (MD 211xxx or 221xxx / D 335), rounded up to whole koruny. Cash comes from a register; a transfer from a bank account, and a later statement line takes it over

POST `/v1/travel-orders/{id}/pay`

Pay the reimbursement (MD 333 / D 221xxx or 211xxx) or take back an overpaid advance (MD 211xxx or 221xxx / D 335), rounded up to whole koruny. Cash comes from a register; a transfer from a bank account, and a later statement line takes it over

MCP tool: `pay-travel-order`

### Path parameters

`id` string required

### Request body

`date` string required YYYY-MM-DD

Date as YYYY-MM-DD.

`method` "transfer" | "cash" | "card"

`registerId` string

ID of the register.

`bankAccountId` string

ID of the bank account. Find it with list-bank-accounts.

### Response · 200

`id` string required

`number` string required

`travelerName` string required

`travelerKind` string required

`purpose` string required

`destination` string required

`startAt` string required

`endAt` string required

`transport` string required

`vehicleId` null | string required

`kmMilli` integer required

`trailer` boolean required

`documentedFuelPriceHaler` integer | null required

`basicRateHaler` integer | null required

`pocketMoneyPct` integer required

`freeMeals` object required

`exchangeRates` object required

`advanceHaler` integer required

`advancePaidOn` null | string required date

`status` string required

`totalHaler` integer required

`settleHaler` integer required

`settledOn` null | string required date

`paidOn` null | string required date

`note` string | null required

`employeeId` null | string required

`interruptions` object\[\] required

`toAt` string required

`fromAt` string required

`familyVisits` object\[\] required

`toAt` string required

`fromAt` string required

`fareHaler` integer

`limitHaler` integer

`currency` null | string

`fareCents` integer

`limitCents` integer

`familyVisitAgreed` boolean required

`agreedMeals` object required

`tier5to12` integer

`mealCuts` object required

`tier12to18` integer

`foreignRatePct` integer | null required

`fareEquivalentHaler` integer required

`payMethod` null | string required

`payrollYear` integer | null required

`payrollMonth` integer | null required

`settlement` null | object required

`days` object\[\] required

`date` string required date

`tier` null | string required

`foreign` null | object required

`currency` null | string required

`baseAmount` integer required

`grossCents` integer required

`amountCents` integer required

`countryCode` null | string required

`countryName` string required

`fractionThirds` integer required

`reductionCents` integer required

`freeMeals` integer required

`grossHaler` integer required

`amountHaler` integer | null required

`abroadMinutes` integer required

`reductionHaler` integer required

`domesticMinutes` integer required

`taxableExcessHaler` integer required

`mileage` null | object required

`kmMilli` integer required

`fuelHaler` integer required

`rateHaler` integer required

`basicHaler` integer required

`totalHaler` integer required

`consumedMilli` integer required

`fuelPriceHaler` integer required

`fuelPriceSource` string required

`expenses` object\[\] required

`kind` string required

`currency` null | string required

`vatHaler` integer | null required

`amountCents` integer required

`amountHaler` integer | null required

`description` null | string required

`vatHaler` integer | null required

`warnings` any\[\] required

`totalHaler` integer required

`settleHaler` integer required

`advanceHaler` integer required

`familyVisits` object\[\] required

`to` string required

`from` string required

`fareHaler` integer required

`limitHaler` integer required

`amountHaler` integer | null required

`mileageHaler` integer required

`expensesHaler` integer required

`roundingHaler` integer required

`familyVisitHaler` integer required

`foreignMealHaler` integer required

`pocketMoneyHaler` integer required

`domesticMealHaler` integer required

`foreignByCurrency` object required

`taxableExcessHaler` integer required

`fareEquivalentHaler` integer required

`abroad` object\[\]

`countryCode` null | string required

`fromAt` string required

`toAt` string required

`expenses` object\[\]

`kind` string required

`description` null | string required

`amountCents` integer required

`currency` null | string required

`vatHaler` integer | null required

```bash
curl -X POST https://api.damedoklad.cz/v1/travel-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/pay \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "date": "2026-10-30"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/travel-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/pay', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "date": "2026-10-30"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/travel-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/pay",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "date": "2026-10-30"
    },
)
data = response.json()
```

## Pay a settled trip through the payroll of a month: the amount joins the wage payment, untaxed, and the order is paid when the run locks

POST `/v1/travel-orders/{id}/payroll`

Pay a settled trip through the payroll of a month: the amount joins the wage payment, untaxed, and the order is paid when the run locks. Needs an employee on the order with a contract in that month. Payroll posts MD 333 / D 331 when the run locks. A draft or reviewed run is recalculated, and a reviewed one returns to draft.

MCP tool: `queue-travel-reimbursement`

### Path parameters

`id` string required

### Request body

`year` integer required min 1990 max 2100

`month` integer required min 1 max 12

### Response · 200

`id` string required

`number` string required

`travelerName` string required

`travelerKind` string required

`purpose` string required

`destination` string required

`startAt` string required

`endAt` string required

`transport` string required

`vehicleId` null | string required

`kmMilli` integer required

`trailer` boolean required

`documentedFuelPriceHaler` integer | null required

`basicRateHaler` integer | null required

`pocketMoneyPct` integer required

`freeMeals` object required

`exchangeRates` object required

`advanceHaler` integer required

`advancePaidOn` null | string required date

`status` string required

`totalHaler` integer required

`settleHaler` integer required

`settledOn` null | string required date

`paidOn` null | string required date

`note` string | null required

`employeeId` null | string required

`interruptions` object\[\] required

`toAt` string required

`fromAt` string required

`familyVisits` object\[\] required

`toAt` string required

`fromAt` string required

`fareHaler` integer

`limitHaler` integer

`currency` null | string

`fareCents` integer

`limitCents` integer

`familyVisitAgreed` boolean required

`agreedMeals` object required

`tier5to12` integer

`mealCuts` object required

`tier12to18` integer

`foreignRatePct` integer | null required

`fareEquivalentHaler` integer required

`payMethod` null | string required

`payrollYear` integer | null required

`payrollMonth` integer | null required

`settlement` null | object required

`days` object\[\] required

`date` string required date

`tier` null | string required

`foreign` null | object required

`currency` null | string required

`baseAmount` integer required

`grossCents` integer required

`amountCents` integer required

`countryCode` null | string required

`countryName` string required

`fractionThirds` integer required

`reductionCents` integer required

`freeMeals` integer required

`grossHaler` integer required

`amountHaler` integer | null required

`abroadMinutes` integer required

`reductionHaler` integer required

`domesticMinutes` integer required

`taxableExcessHaler` integer required

`mileage` null | object required

`kmMilli` integer required

`fuelHaler` integer required

`rateHaler` integer required

`basicHaler` integer required

`totalHaler` integer required

`consumedMilli` integer required

`fuelPriceHaler` integer required

`fuelPriceSource` string required

`expenses` object\[\] required

`kind` string required

`currency` null | string required

`vatHaler` integer | null required

`amountCents` integer required

`amountHaler` integer | null required

`description` null | string required

`vatHaler` integer | null required

`warnings` any\[\] required

`totalHaler` integer required

`settleHaler` integer required

`advanceHaler` integer required

`familyVisits` object\[\] required

`to` string required

`from` string required

`fareHaler` integer required

`limitHaler` integer required

`amountHaler` integer | null required

`mileageHaler` integer required

`expensesHaler` integer required

`roundingHaler` integer required

`familyVisitHaler` integer required

`foreignMealHaler` integer required

`pocketMoneyHaler` integer required

`domesticMealHaler` integer required

`foreignByCurrency` object required

`taxableExcessHaler` integer required

`fareEquivalentHaler` integer required

`abroad` object\[\]

`countryCode` null | string required

`fromAt` string required

`toAt` string required

`expenses` object\[\]

`kind` string required

`description` null | string required

`amountCents` integer required

`currency` null | string required

`vatHaler` integer | null required

```bash
curl -X POST https://api.damedoklad.cz/v1/travel-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/payroll \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "year": 2026,
  "month": 1
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/travel-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/payroll', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "year": 2026,
    "month": 1
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/travel-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/payroll",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "year": 2026,
        "month": 1
    },
)
data = response.json()
```

## Take a trip back out of a payroll run that is not locked yet

POST `/v1/travel-orders/{id}/payroll/cancel`

Take a trip back out of a payroll run that is not locked yet

MCP tool: `cancel-travel-reimbursement`

### Path parameters

`id` string required

### Response · 200

`id` string required

`number` string required

`travelerName` string required

`travelerKind` string required

`purpose` string required

`destination` string required

`startAt` string required

`endAt` string required

`transport` string required

`vehicleId` null | string required

`kmMilli` integer required

`trailer` boolean required

`documentedFuelPriceHaler` integer | null required

`basicRateHaler` integer | null required

`pocketMoneyPct` integer required

`freeMeals` object required

`exchangeRates` object required

`advanceHaler` integer required

`advancePaidOn` null | string required date

`status` string required

`totalHaler` integer required

`settleHaler` integer required

`settledOn` null | string required date

`paidOn` null | string required date

`note` string | null required

`employeeId` null | string required

`interruptions` object\[\] required

`toAt` string required

`fromAt` string required

`familyVisits` object\[\] required

`toAt` string required

`fromAt` string required

`fareHaler` integer

`limitHaler` integer

`currency` null | string

`fareCents` integer

`limitCents` integer

`familyVisitAgreed` boolean required

`agreedMeals` object required

`tier5to12` integer

`mealCuts` object required

`tier12to18` integer

`foreignRatePct` integer | null required

`fareEquivalentHaler` integer required

`payMethod` null | string required

`payrollYear` integer | null required

`payrollMonth` integer | null required

`settlement` null | object required

`days` object\[\] required

`date` string required date

`tier` null | string required

`foreign` null | object required

`currency` null | string required

`baseAmount` integer required

`grossCents` integer required

`amountCents` integer required

`countryCode` null | string required

`countryName` string required

`fractionThirds` integer required

`reductionCents` integer required

`freeMeals` integer required

`grossHaler` integer required

`amountHaler` integer | null required

`abroadMinutes` integer required

`reductionHaler` integer required

`domesticMinutes` integer required

`taxableExcessHaler` integer required

`mileage` null | object required

`kmMilli` integer required

`fuelHaler` integer required

`rateHaler` integer required

`basicHaler` integer required

`totalHaler` integer required

`consumedMilli` integer required

`fuelPriceHaler` integer required

`fuelPriceSource` string required

`expenses` object\[\] required

`kind` string required

`currency` null | string required

`vatHaler` integer | null required

`amountCents` integer required

`amountHaler` integer | null required

`description` null | string required

`vatHaler` integer | null required

`warnings` any\[\] required

`totalHaler` integer required

`settleHaler` integer required

`advanceHaler` integer required

`familyVisits` object\[\] required

`to` string required

`from` string required

`fareHaler` integer required

`limitHaler` integer required

`amountHaler` integer | null required

`mileageHaler` integer required

`expensesHaler` integer required

`roundingHaler` integer required

`familyVisitHaler` integer required

`foreignMealHaler` integer required

`pocketMoneyHaler` integer required

`domesticMealHaler` integer required

`foreignByCurrency` object required

`taxableExcessHaler` integer required

`fareEquivalentHaler` integer required

`abroad` object\[\]

`countryCode` null | string required

`fromAt` string required

`toAt` string required

`expenses` object\[\]

`kind` string required

`description` null | string required

`amountCents` integer required

`currency` null | string required

`vatHaler` integer | null required

```bash
curl -X POST https://api.damedoklad.cz/v1/travel-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/payroll/cancel \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/travel-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/payroll/cancel', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/travel-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/payroll/cancel",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Which ČNB rates a trip needs and for which date (§ 183 odst. 2, § 184 of the Labour Code). Get them from /ledger/exchange-rates/lookup and PATCH them into exchangeRates

GET `/v1/travel-orders/{id}/required-rates`

Which ČNB rates a trip needs and for which date (§ 183 odst. 2, § 184 of the Labour Code). Get them from /ledger/exchange-rates/lookup and PATCH them into exchangeRates

MCP tool: `get-travel-order-required-rates`

### Path parameters

`id` string required

### Response · 200

`orderId` null | string required

`date` string required date

`currencies` object\[\] required

`currency` null | string required

`rate` null | number required

```bash
curl https://api.damedoklad.cz/v1/travel-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/required-rates \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/travel-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/required-rates', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/travel-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/required-rates",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Settle a business trip: MD 512 + 343 / D 333 and the advance cleared MD 333 / D 335

POST `/v1/travel-orders/{id}/settle`

Settle a business trip: MD 512 + 343 / D 333 and the advance cleared MD 333 / D 335

MCP tool: `settle-travel-order`

### Path parameters

`id` string required

### Request body

`date` string required YYYY-MM-DD

Date as YYYY-MM-DD.

### Response · 200

`id` string required

`number` string required

`travelerName` string required

`travelerKind` string required

`purpose` string required

`destination` string required

`startAt` string required

`endAt` string required

`transport` string required

`vehicleId` null | string required

`kmMilli` integer required

`trailer` boolean required

`documentedFuelPriceHaler` integer | null required

`basicRateHaler` integer | null required

`pocketMoneyPct` integer required

`freeMeals` object required

`exchangeRates` object required

`advanceHaler` integer required

`advancePaidOn` null | string required date

`status` string required

`totalHaler` integer required

`settleHaler` integer required

`settledOn` null | string required date

`paidOn` null | string required date

`note` string | null required

`employeeId` null | string required

`interruptions` object\[\] required

`toAt` string required

`fromAt` string required

`familyVisits` object\[\] required

`toAt` string required

`fromAt` string required

`fareHaler` integer

`limitHaler` integer

`currency` null | string

`fareCents` integer

`limitCents` integer

`familyVisitAgreed` boolean required

`agreedMeals` object required

`tier5to12` integer

`mealCuts` object required

`tier12to18` integer

`foreignRatePct` integer | null required

`fareEquivalentHaler` integer required

`payMethod` null | string required

`payrollYear` integer | null required

`payrollMonth` integer | null required

`settlement` null | object required

`days` object\[\] required

`date` string required date

`tier` null | string required

`foreign` null | object required

`currency` null | string required

`baseAmount` integer required

`grossCents` integer required

`amountCents` integer required

`countryCode` null | string required

`countryName` string required

`fractionThirds` integer required

`reductionCents` integer required

`freeMeals` integer required

`grossHaler` integer required

`amountHaler` integer | null required

`abroadMinutes` integer required

`reductionHaler` integer required

`domesticMinutes` integer required

`taxableExcessHaler` integer required

`mileage` null | object required

`kmMilli` integer required

`fuelHaler` integer required

`rateHaler` integer required

`basicHaler` integer required

`totalHaler` integer required

`consumedMilli` integer required

`fuelPriceHaler` integer required

`fuelPriceSource` string required

`expenses` object\[\] required

`kind` string required

`currency` null | string required

`vatHaler` integer | null required

`amountCents` integer required

`amountHaler` integer | null required

`description` null | string required

`vatHaler` integer | null required

`warnings` any\[\] required

`totalHaler` integer required

`settleHaler` integer required

`advanceHaler` integer required

`familyVisits` object\[\] required

`to` string required

`from` string required

`fareHaler` integer required

`limitHaler` integer required

`amountHaler` integer | null required

`mileageHaler` integer required

`expensesHaler` integer required

`roundingHaler` integer required

`familyVisitHaler` integer required

`foreignMealHaler` integer required

`pocketMoneyHaler` integer required

`domesticMealHaler` integer required

`foreignByCurrency` object required

`taxableExcessHaler` integer required

`fareEquivalentHaler` integer required

`abroad` object\[\]

`countryCode` null | string required

`fromAt` string required

`toAt` string required

`expenses` object\[\]

`kind` string required

`description` null | string required

`amountCents` integer required

`currency` null | string required

`vatHaler` integer | null required

```bash
curl -X POST https://api.damedoklad.cz/v1/travel-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/settle \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "date": "2026-10-30"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/travel-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/settle', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "date": "2026-10-30"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/travel-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/settle",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "date": "2026-10-30"
    },
)
data = response.json()
```

## Compute the settlement of a business trip without posting: stravné by day, mileage, expenses, advance, and the amount to pay

GET `/v1/travel-orders/{id}/settlement-preview`

Compute the settlement of a business trip without posting: stravné by day, mileage, expenses, advance, and the amount to pay

MCP tool: `preview-travel-settlement`

### Path parameters

`id` string required

### Response · 200

`orderId` null | string required

`days` object\[\] required

`date` string required date

`domesticMinutes` integer required

`abroadMinutes` integer required

`tier` null | string required

`freeMeals` integer required

`grossHaler` integer required

`reductionHaler` integer required

`amountHaler` integer | null required

`taxableExcessHaler` integer required

`foreign` null | object required

`countryCode` null | string required

`countryName` string required

`currency` null | string required

`baseAmount` integer required

`fractionThirds` integer required

`grossCents` integer required

`reductionCents` integer required

`amountCents` integer required

`domesticMealHaler` integer required

`foreignMealHaler` integer required

`foreignByCurrency` object required

`pocketMoneyHaler` integer required

`mileageHaler` integer required

`fareEquivalentHaler` integer required

`familyVisits` object\[\] required

`from` string required

`to` string required

`fareHaler` integer required

`limitHaler` integer required

`amountHaler` integer | null required

`currency` null | string

`fareCents` integer

`limitCents` integer

`familyVisitHaler` integer required

`warnings` any\[\] required

`taxableExcessHaler` integer required

`expensesHaler` integer required

`expenses` object\[\] required

`kind` string required

`description` null | string required

`amountCents` integer required

`currency` null | string required

`vatHaler` integer | null required

`amountHaler` integer | null required

`vatHaler` integer | null required

`totalHaler` integer | null required

`advanceHaler` integer required

`settleHaler` integer required

`roundingHaler` integer required

`mileage` null | object required

`kmMilli` integer required

`rateHaler` integer required

`basicHaler` integer required

`fuelPriceHaler` integer required

`fuelPriceSource` string required

`consumedMilli` integer required

`fuelHaler` integer required

`totalHaler` integer | null required

```bash
curl https://api.damedoklad.cz/v1/travel-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/settlement-preview \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/travel-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/settlement-preview', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/travel-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/settlement-preview",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Statutory travel rates of a year: mileage, meal allowance, average fuel prices, and foreign per diems

GET `/v1/travel-rates`

Statutory travel rates of a year: mileage, meal allowance, average fuel prices, and foreign per diems

MCP tool: `get-travel-rates`

### Query parameters

`year` integer min 1990 max 2100

### Response · 200

`year` integer required

`citation` string required

`mileageHaler` object required

`motorcycle` integer required

`car` integer required

`mealsHaler` object required

`tier5to12` integer required

`tier12to18` integer required

`over18` integer required

`mealsMaxHaler` object required

`tier5to12` integer required

`tier12to18` integer required

`over18` integer required

`fuelHaler` object\[\] required

`from` string required date

`ba95` integer required

`ba98` integer required

`diesel` integer required

`electricity` integer required

`foreign` object\[\] required

`countryCode` null | string required

`name` null | string required

`currency` null | string required

`baseAmount` integer required

```bash
curl https://api.damedoklad.cz/v1/travel-rates \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/travel-rates', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/travel-rates",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## List logbook trips, filterable by vehicle, type, and date

GET `/v1/trips`

List logbook trips, filterable by vehicle, type, and date

MCP tool: `list-trips`

### Query parameters

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

`vehicleId` string

ID of the vehicle. Find it with list-vehicles.

`tripType` "business" | "private"

### Response · 200

`data` object\[\] required

`object` "vehicle\_trip" required

`id` string required

`vehicleId` string required

`routeId` null | string required

`date` string required date

`fromPlace` string required

`toPlace` string required

`purpose` null | string required

`kmMilli` integer required

`tripType` string required

`driver` null | string required

`odometerStart` integer | null required

`odometerEnd` integer | null required

`note` string | null

`continuityIssues` object\[\]

`id` string required

`date` string required date

`kind` string required

`expected` integer required

`actual` integer required

`total` integer

Rows that match, on all pages.

`hasMore` boolean required

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/trips \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/trips', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/trips",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Add a logbook trip. Pass routeId to fill it from a recurring route; the odometer continues from the last trip

POST `/v1/trips`

Add a logbook trip. Pass routeId to fill it from a recurring route; the odometer continues from the last trip. The trip is saved even when the odometer does not chain, since unrecorded private driving happens. The response lists any problem in continuityIssues.

MCP tool: `create-trip`

### Request body

`vehicleId` string required

ID of the vehicle. Find it with list-vehicles.

`routeId` string

ID of the route.

`date` string required YYYY-MM-DD

Date as YYYY-MM-DD.

`fromPlace` string max 200 chars

`toPlace` string max 200 chars

`purpose` string max 500 chars

`kmMilli` integer min 0 max 9007199254740991

Integer thousandths: 1500 means 1.5.

`tripType` "business" | "private"

`driver` string max 500 chars

`odometerStart` integer min 0 max 9007199254740991

`odometerEnd` integer min 0 max 9007199254740991

`note` string max 2000 chars

### Response · 201

`id` string required

`vehicleId` string required

`routeId` null | string required

`date` string required date

`fromPlace` string required

`toPlace` string required

`purpose` null | string required

`kmMilli` integer required

`tripType` string required

`driver` null | string required

`odometerStart` integer | null required

`odometerEnd` integer | null required

`note` string | null

`continuityIssues` object\[\]

`id` string required

`date` string required date

`kind` string required

`expected` integer required

`actual` integer required

```bash
curl -X POST https://api.damedoklad.cz/v1/trips \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "vehicleId": "tvh_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "date": "2026-10-30"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/trips', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "vehicleId": "tvh_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "date": "2026-10-30"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/trips",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "vehicleId": "tvh_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "date": "2026-10-30"
    },
)
data = response.json()
```

## Correct a logbook trip

PATCH `/v1/trips/{id}`

Correct a logbook trip

MCP tool: `update-trip`

### Path parameters

`id` string required

### Request body

`vehicleId` string

ID of the vehicle. Find it with list-vehicles.

`routeId` string

ID of the route.

`date` string YYYY-MM-DD

Date as YYYY-MM-DD.

`fromPlace` string max 200 chars

`toPlace` string max 200 chars

`purpose` string max 500 chars

`kmMilli` integer min 0 max 9007199254740991

Integer thousandths: 1500 means 1.5.

`tripType` "business" | "private"

`driver` string max 500 chars

`odometerStart` integer min 0 max 9007199254740991

`odometerEnd` integer min 0 max 9007199254740991

`note` string max 2000 chars

### Response · 200

`id` string required

`vehicleId` string required

`routeId` null | string required

`date` string required date

`fromPlace` string required

`toPlace` string required

`purpose` null | string required

`kmMilli` integer required

`tripType` string required

`driver` null | string required

`odometerStart` integer | null required

`odometerEnd` integer | null required

`note` string | null

`continuityIssues` object\[\]

`id` string required

`date` string required date

`kind` string required

`expected` integer required

`actual` integer required

```bash
curl -X PATCH https://api.damedoklad.cz/v1/trips/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "vehicleId": "tvh_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "routeId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "date": "2026-10-30"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/trips/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "vehicleId": "tvh_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "routeId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "date": "2026-10-30"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/trips/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "vehicleId": "tvh_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "routeId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "date": "2026-10-30"
    },
)
data = response.json()
```

## Delete a logbook trip

DELETE `/v1/trips/{id}`

Delete a logbook trip

IrreversibleThis operation cannot be undone. MCP clients ask for confirmation first.

MCP tool: `delete-trip`

### Path parameters

`id` string required

### Response · 200

`id` string required

`deleted` boolean required

```bash
curl -X DELETE https://api.damedoklad.cz/v1/trips/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/trips/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/trips/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Import logbook trips from a CSV or fleet export (date, from, to, km required; purpose, type, driver, odometer, plate optional). dryRun only validates

POST `/v1/trips/import`

Import logbook trips from a CSV or fleet export (date, from, to, km required; purpose, type, driver, odometer, plate optional). dryRun only validates. Columns are found by name in Czech or English. For other headers pass columnMap, such as { "date": "Kdy" }; the answer lists headers and missing when it cannot find them. Without vehicleId the plate column picks the vehicle. A trip already in the logbook (same vehicle, date, route, and km) is skipped.

MCP tool: `import-trips`

### Request body

`vehicleId` string

ID of the vehicle. Find it with list-vehicles.

`csv` string max 4000000 chars

`fileBase64` string max 8000000 chars

File content encoded as base64.

`columnMap` object

`dryRun` boolean

### Response · 200

`dryRun` boolean required

`imported` integer required

`valid` integer required

`duplicates` integer required

`errors` object\[\] required

`line` integer required

`message` null | string required

`continuityIssues` any\[\] required

`headers` array | null required

`missing` array | null required

```bash
curl -X POST https://api.damedoklad.cz/v1/trips/import \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "vehicleId": "tvh_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "csv": "string",
  "fileBase64": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/trips/import', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "vehicleId": "tvh_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "csv": "string",
    "fileBase64": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/trips/import",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "vehicleId": "tvh_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "csv": "string",
        "fileBase64": "string"
    },
)
data = response.json()
```

## List VehicleRoutes

GET `/v1/vehicle-routes`

List VehicleRoutes

MCP tool: `list-vehicle-routes`

### Query parameters

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

### Response · 200

`data` object\[\] required

`object` "vehicle\_route" required

`id` string required

`name` string required

`fromPlace` string required

`toPlace` string required

`purpose` null | string required

`kmMilli` integer required

`tripType` string required

`total` integer

Rows that match, on all pages.

`hasMore` boolean required

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/vehicle-routes \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/vehicle-routes', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/vehicle-routes",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Create a VehicleRoute

POST `/v1/vehicle-routes`

Create a VehicleRoute

MCP tool: `create-vehicle-route`

### Request body

`name` string required max 200 chars

`fromPlace` string required max 200 chars

`toPlace` string required max 200 chars

`purpose` string max 500 chars

`kmMilli` integer required min 0 max 9007199254740991

Integer thousandths: 1500 means 1.5.

`tripType` "business" | "private"

### Response · 201

`id` string required

`name` string required

`fromPlace` string required

`toPlace` string required

`purpose` null | string required

`kmMilli` integer required

`tripType` string required

```bash
curl -X POST https://api.damedoklad.cz/v1/vehicle-routes \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Pekárna U Lípy s.r.o.",
  "fromPlace": "string",
  "toPlace": "string",
  "kmMilli": 1000
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/vehicle-routes', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "name": "Pekárna U Lípy s.r.o.",
    "fromPlace": "string",
    "toPlace": "string",
    "kmMilli": 1000
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/vehicle-routes",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "name": "Pekárna U Lípy s.r.o.",
        "fromPlace": "string",
        "toPlace": "string",
        "kmMilli": 1000
    },
)
data = response.json()
```

## Get a VehicleRoute

GET `/v1/vehicle-routes/{id}`

Get a VehicleRoute

MCP tool: `get-vehicle-route`

### Path parameters

`id` string required

### Response · 200

`id` string required

`name` string required

`fromPlace` string required

`toPlace` string required

`purpose` null | string required

`kmMilli` integer required

`tripType` string required

```bash
curl https://api.damedoklad.cz/v1/vehicle-routes/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/vehicle-routes/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/vehicle-routes/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Update a VehicleRoute

PATCH `/v1/vehicle-routes/{id}`

Update a VehicleRoute

MCP tool: `update-vehicle-route`

### Path parameters

`id` string required

### Request body

`name` string max 200 chars

`fromPlace` string max 200 chars

`toPlace` string max 200 chars

`purpose` string max 500 chars

`kmMilli` integer min 0 max 9007199254740991

Integer thousandths: 1500 means 1.5.

`tripType` "business" | "private"

### Response · 200

`id` string required

`name` string required

`fromPlace` string required

`toPlace` string required

`purpose` null | string required

`kmMilli` integer required

`tripType` string required

```bash
curl -X PATCH https://api.damedoklad.cz/v1/vehicle-routes/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Pekárna U Lípy s.r.o.",
  "fromPlace": "string",
  "toPlace": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/vehicle-routes/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "name": "Pekárna U Lípy s.r.o.",
    "fromPlace": "string",
    "toPlace": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/vehicle-routes/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "name": "Pekárna U Lípy s.r.o.",
        "fromPlace": "string",
        "toPlace": "string"
    },
)
data = response.json()
```

## Delete a VehicleRoute

DELETE `/v1/vehicle-routes/{id}`

Delete a VehicleRoute

IrreversibleThis operation cannot be undone. MCP clients ask for confirmation first.

MCP tool: `delete-vehicle-route`

### Path parameters

`id` string required

### Response · 200

`id` string required

`deleted` boolean required

```bash
curl -X DELETE https://api.damedoklad.cz/v1/vehicle-routes/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/vehicle-routes/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/vehicle-routes/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Fill the logbook from a recurring route without GPS: one trip for each listed date or weekday in a period, optionally there and back

POST `/v1/vehicle-routes/{id}/trips`

Fill the logbook from a recurring route without GPS: one trip for each listed date or weekday in a period, optionally there and back. Pass dates, or from and to with weekdays (1 Monday to 7 Sunday, default Monday to Friday). Odometer readings chain from the vehicle’s last trip. Dates where this route is already in the logbook are skipped. dryRun only returns the trips.

MCP tool: `generate-trips-from-route`

### Path parameters

`id` string required

### Request body

`vehicleId` string required

ID of the vehicle. Find it with list-vehicles.

`dates` string\[\]

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

`weekdays` integer\[\]

`skip` string\[\]

`roundTrip` boolean

`driver` string max 500 chars

`dryRun` boolean

### Response · 200

`dryRun` boolean required

`created` integer required

`skippedDates` string\[\] required

`lastOdometer` integer required

`trips` object\[\] required

`object` "vehicle\_trip" required

`id` string required

`vehicleId` string required

`routeId` null | string required

`date` string required date

`fromPlace` string required

`toPlace` string required

`purpose` null | string required

`kmMilli` integer required

`tripType` string required

`driver` null | string required

`odometerStart` integer | null required

`odometerEnd` integer | null required

`note` string | null

`continuityIssues` object\[\]

`id` string required

`date` string required date

`kind` string required

`expected` integer required

`actual` integer required

```bash
curl -X POST https://api.damedoklad.cz/v1/vehicle-routes/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/trips \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "vehicleId": "tvh_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/vehicle-routes/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/trips', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "vehicleId": "tvh_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/vehicle-routes/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/trips",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "vehicleId": "tvh_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    },
)
data = response.json()
```

## List Vehicles

GET `/v1/vehicles`

List Vehicles

MCP tool: `list-vehicles`

### Query parameters

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

### Response · 200

`data` object\[\] required

`object` "vehicle" required

`id` string required

`registrationPlate` string required

`name` string required

`kind` string required

`category` null | string required

`fuel` string required

`ownership` string required

`odometerStart` integer required

`consumptionMilli` integer required

`vin` null | string required

`firstRegisteredOn` string | null required

`grossWeightKg` integer | null required

`axles` integer | null required

`engineCc` integer | null required

`roadTaxRelevant` boolean required

`assetId` null | string required

`isActive` boolean required

`note` string | null required

`total` integer

Rows that match, on all pages.

`hasMore` boolean required

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/vehicles \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/vehicles', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/vehicles",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Create a Vehicle

POST `/v1/vehicles`

Create a Vehicle

MCP tool: `create-vehicle`

### Request body

`registrationPlate` string required max 20 chars

`name` string required max 200 chars

`kind` "car" | "motorcycle" | "truck" | "bus" | "tractor"

`category` string max 10 chars

`fuel` "ba95" | "ba98" | "diesel" | "electric" | "lpg" | "cng" | "hybrid" | "other" required

`ownership` "company" | "private" | "leased"

`odometerStart` integer min 0 max 9007199254740991

`consumptionMilli` integer min 0 max 9007199254740991

Integer thousandths: 1500 means 1.5.

`vin` string max 40 chars

`firstRegisteredOn` string YYYY-MM-DD

Date as YYYY-MM-DD.

`grossWeightKg` integer min 0 max 9007199254740991

`axles` integer min 0 max 20

`engineCc` integer min 0 max 9007199254740991

`roadTaxRelevant` boolean

`assetId` string

ID of the asset. Find it with list-assets.

`isActive` boolean

`note` string max 2000 chars

### Response · 201

`id` string required

`registrationPlate` string required

`name` string required

`kind` string required

`category` null | string required

`fuel` string required

`ownership` string required

`odometerStart` integer required

`consumptionMilli` integer required

`vin` null | string required

`firstRegisteredOn` string | null required

`grossWeightKg` integer | null required

`axles` integer | null required

`engineCc` integer | null required

`roadTaxRelevant` boolean required

`assetId` null | string required

`isActive` boolean required

`note` string | null required

```bash
curl -X POST https://api.damedoklad.cz/v1/vehicles \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "registrationPlate": "string",
  "name": "Pekárna U Lípy s.r.o.",
  "fuel": "ba95"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/vehicles', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "registrationPlate": "string",
    "name": "Pekárna U Lípy s.r.o.",
    "fuel": "ba95"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/vehicles",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "registrationPlate": "string",
        "name": "Pekárna U Lípy s.r.o.",
        "fuel": "ba95"
    },
)
data = response.json()
```

## Get a Vehicle

GET `/v1/vehicles/{id}`

Get a Vehicle

MCP tool: `get-vehicle`

### Path parameters

`id` string required

### Response · 200

`id` string required

`registrationPlate` string required

`name` string required

`kind` string required

`category` null | string required

`fuel` string required

`ownership` string required

`odometerStart` integer required

`consumptionMilli` integer required

`vin` null | string required

`firstRegisteredOn` string | null required

`grossWeightKg` integer | null required

`axles` integer | null required

`engineCc` integer | null required

`roadTaxRelevant` boolean required

`assetId` null | string required

`isActive` boolean required

`note` string | null required

```bash
curl https://api.damedoklad.cz/v1/vehicles/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/vehicles/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/vehicles/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Update a Vehicle

PATCH `/v1/vehicles/{id}`

Update a Vehicle

MCP tool: `update-vehicle`

### Path parameters

`id` string required

### Request body

`registrationPlate` string max 20 chars

`name` string max 200 chars

`kind` "car" | "motorcycle" | "truck" | "bus" | "tractor"

`category` string max 10 chars

`fuel` "ba95" | "ba98" | "diesel" | "electric" | "lpg" | "cng" | "hybrid" | "other"

`ownership` "company" | "private" | "leased"

`odometerStart` integer min 0 max 9007199254740991

`consumptionMilli` integer min 0 max 9007199254740991

Integer thousandths: 1500 means 1.5.

`vin` string max 40 chars

`firstRegisteredOn` string YYYY-MM-DD

Date as YYYY-MM-DD.

`grossWeightKg` integer min 0 max 9007199254740991

`axles` integer min 0 max 20

`engineCc` integer min 0 max 9007199254740991

`roadTaxRelevant` boolean

`assetId` string

ID of the asset. Find it with list-assets.

`isActive` boolean

`note` string max 2000 chars

### Response · 200

`id` string required

`registrationPlate` string required

`name` string required

`kind` string required

`category` null | string required

`fuel` string required

`ownership` string required

`odometerStart` integer required

`consumptionMilli` integer required

`vin` null | string required

`firstRegisteredOn` string | null required

`grossWeightKg` integer | null required

`axles` integer | null required

`engineCc` integer | null required

`roadTaxRelevant` boolean required

`assetId` null | string required

`isActive` boolean required

`note` string | null required

```bash
curl -X PATCH https://api.damedoklad.cz/v1/vehicles/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "registrationPlate": "string",
  "name": "Pekárna U Lípy s.r.o.",
  "kind": "car"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/vehicles/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "registrationPlate": "string",
    "name": "Pekárna U Lípy s.r.o.",
    "kind": "car"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/vehicles/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "registrationPlate": "string",
        "name": "Pekárna U Lípy s.r.o.",
        "kind": "car"
    },
)
data = response.json()
```

## Delete a Vehicle

DELETE `/v1/vehicles/{id}`

Delete a Vehicle

IrreversibleThis operation cannot be undone. MCP clients ask for confirmation first.

MCP tool: `delete-vehicle`

### Path parameters

`id` string required

### Response · 200

`id` string required

`deleted` boolean required

```bash
curl -X DELETE https://api.damedoklad.cz/v1/vehicles/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/vehicles/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/vehicles/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Download the logbook of a vehicle as a PDF

GET `/v1/vehicles/{id}/logbook.pdf`

Download the logbook of a vehicle as a PDF

MCP tool: `export-vehicle-logbook-pdf`

### Path parameters

`id` string required

### Query parameters

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

### Response · 200

Returns a application/pdf file.

```bash
curl https://api.damedoklad.cz/v1/vehicles/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/logbook.pdf \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/vehicles/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/logbook.pdf', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/vehicles/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/logbook.pdf",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Check the odometer continuity of a vehicle: gaps, overlaps, and readings that disagree with the km driven

GET `/v1/vehicles/{id}/odometer-check`

Check the odometer continuity of a vehicle: gaps, overlaps, and readings that disagree with the km driven

MCP tool: `check-vehicle-odometer`

### Path parameters

`id` string required

### Response · 200

`vehicleId` null | string required

`ok` boolean required

`lastOdometer` integer required

`issues` object\[\] required

`id` string required

`date` string required date

`kind` string required

`expected` integer required

`actual` integer required

```bash
curl https://api.damedoklad.cz/v1/vehicles/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/odometer-check \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/vehicles/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/odometer-check', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/vehicles/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/odometer-check",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Monthly logbook summary and fuel reconciliation of a vehicle for a year: km by type, purchased vs expected fuel from the technical certificate

GET `/v1/vehicles/{id}/summary`

Monthly logbook summary and fuel reconciliation of a vehicle for a year: km by type, purchased vs expected fuel from the technical certificate

MCP tool: `get-vehicle-year-summary`

### Path parameters

`id` string required

### Query parameters

`year` integer required min 1990 max 2100

### Response · 200

`vehicleId` null | string required

`consumptionMilli` integer required

`year` integer required

`months` object\[\] required

`month` null | string required

`businessKmMilli` integer required

`privateKmMilli` integer required

`trips` integer required

`fuelQuantityMilli` integer required

`fuelAmountHaler` integer required

`expectedFuelMilli` integer required

`differenceMilli` integer required

`totals` object required

`businessKmMilli` integer required

`privateKmMilli` integer required

`trips` integer required

`fuelQuantityMilli` integer required

`fuelAmountHaler` integer required

`expectedFuelMilli` integer required

`differenceMilli` integer required

`actualConsumptionMilli` integer required

`businessSharePct` integer required

```bash
curl https://api.damedoklad.cz/v1/vehicles/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/summary \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/vehicles/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/summary', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/vehicles/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/summary",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```
