# Platform · DameDoklad API

> Operations in the Platform group.

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

# Platform

Operations in the Platform group.

## List the custom roles of this company and how many people have each

GET `/v1/access-roles`

List the custom roles of this company and how many people have each

MCP tool: `list-access-roles`

### 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` "access\_role" required

`id` string required

`name` string required

`description` string | null required

`agendas` object required

`sales` string

`payroll` string

`administration` string

`bank` string

`cash` string

`reports` string

`contacts` string

`inventory` string

`inbox` string

`purchases` string

`assets` string

`travel` string

`tax` string

`agendas` string

`ledger` string

`scopes` object required

`warehouses` array | null required

`registers` array | null required

`accounts` array | null required

`series` array | null required

`centers` array | null

`memberCount` integer required

`createdAt` string required date-time

`updatedAt` string required date-time

`parentId` null | string

`denied` object

`formats` string\[\] required

`reports` 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/access-roles \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/access-roles', {
  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/access-roles",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Create a custom role: a level per agenda (none, read, own, write, full), and optionally only chosen warehouses, cash registers, bank accounts, number series, and cost centres, without some print reports or export types, or as a sub-role of another

POST `/v1/access-roles`

Create a custom role: a level per agenda (none, read, own, write, full), and optionally only chosen warehouses, cash registers, bank accounts, number series, and cost centres, without some print reports or export types, or as a sub-role of another. own: reads everything, creates, and changes only what the person created. Delete and storno need full. A sub-role takes its parent's rights and can only take away. Members, API keys of others, webhooks, the audit log, and company-wide exports and imports stay with an owner or accountant whatever a custom role says.

MCP tool: `create-access-role`

### Request body

`name` string required max 120 chars

`description` string | null

`agendas` object required

`scopes` object

`warehouses` string\[\] | null

`registers` string\[\] | null

`accounts` string\[\] | null

`series` string\[\] | null

`centers` string\[\] | null

`parentId` string | null

ID of the parent.

`denied` object

`formats` "pdf" | "xlsx" | "csv" | "xml" | "zip"\[\]

`reports` string\[\]

### Response · 201

`id` string required

`name` string required

`description` string | null required

`agendas` object required

`sales` string

`payroll` string

`administration` string

`bank` string

`cash` string

`reports` string

`contacts` string

`inventory` string

`inbox` string

`purchases` string

`assets` string

`travel` string

`tax` string

`agendas` string

`ledger` string

`scopes` object required

`warehouses` array | null required

`registers` array | null required

`accounts` array | null required

`series` array | null required

`centers` array | null

`memberCount` integer required

`createdAt` string required date-time

`updatedAt` string required date-time

`parentId` null | string

`denied` object

`formats` string\[\] required

`reports` string\[\] required

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/access-roles', {
  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.",
    "agendas": {}
  }),
});
const data = await response.json();
```

```python
import os
import requests

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

## Get one custom role with its rights

GET `/v1/access-roles/{id}`

Get one custom role with its rights

MCP tool: `get-access-role`

### Path parameters

`id` string required

### Response · 200

`id` string required

`name` string required

`description` string | null required

`agendas` object required

`sales` string

`payroll` string

`administration` string

`bank` string

`cash` string

`reports` string

`contacts` string

`inventory` string

`inbox` string

`purchases` string

`assets` string

`travel` string

`tax` string

`agendas` string

`ledger` string

`scopes` object required

`warehouses` array | null required

`registers` array | null required

`accounts` array | null required

`series` array | null required

`centers` array | null

`memberCount` integer required

`createdAt` string required date-time

`updatedAt` string required date-time

`parentId` null | string

`denied` object

`formats` string\[\] required

`reports` string\[\] required

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/access-roles/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/access-roles/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Change a custom role. It holds at once for everyone who has it, including their API keys and connected apps

PATCH `/v1/access-roles/{id}`

Change a custom role. It holds at once for everyone who has it, including their API keys and connected apps

MCP tool: `update-access-role`

### Path parameters

`id` string required

### Request body

`name` string max 120 chars

`description` string | null

`agendas` object

`scopes` object

`warehouses` string\[\] | null

`registers` string\[\] | null

`accounts` string\[\] | null

`series` string\[\] | null

`centers` string\[\] | null

`parentId` string | null

ID of the parent.

`denied` object

`formats` "pdf" | "xlsx" | "csv" | "xml" | "zip"\[\]

`reports` string\[\]

### Response · 200

`id` string required

`name` string required

`description` string | null required

`agendas` object required

`sales` string

`payroll` string

`administration` string

`bank` string

`cash` string

`reports` string

`contacts` string

`inventory` string

`inbox` string

`purchases` string

`assets` string

`travel` string

`tax` string

`agendas` string

`ledger` string

`scopes` object required

`warehouses` array | null required

`registers` array | null required

`accounts` array | null required

`series` array | null required

`centers` array | null

`memberCount` integer required

`createdAt` string required date-time

`updatedAt` string required date-time

`parentId` null | string

`denied` object

`formats` string\[\] required

`reports` string\[\] required

```bash
curl -X PATCH https://api.damedoklad.cz/v1/access-roles/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Pekárna U Lípy s.r.o.",
  "description": "Pečivo, říjen",
  "agendas": {}
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/access-roles/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.",
    "description": "Pečivo, říjen",
    "agendas": {}
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/access-roles/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "name": "Pekárna U Lípy s.r.o.",
        "description": "Pečivo, říjen",
        "agendas": {}
    },
)
data = response.json()
```

## Delete a custom role nobody has. A role in use is refused, so nobody is left without rights by accident

DELETE `/v1/access-roles/{id}`

Delete a custom role nobody has. A role in use is refused, so nobody is left without rights by accident

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

MCP tool: `delete-access-role`

### Path parameters

`id` string required

### Response · 200

`id` string required

`deleted` boolean required

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/access-roles/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/access-roles/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## What a custom role really comes to, with its parent applied: level per agenda and whether it is inherited, limits with their names, what it goes without, and who has it

GET `/v1/access-roles/{id}/effective`

What a custom role really comes to, with its parent applied: level per agenda and whether it is inherited, limits with their names, what it goes without, and who has it

MCP tool: `get-access-role-effective`

### Path parameters

`id` string required

### Response · 200

`role` null | object required

`id` string required

`name` null | string required

`fixedRole` null | string required

`parent` null | object required

`id` string required

`name` null | string required

`agendas` object\[\] required

`key` string required

`level` string required

`inherited` boolean required

`scopes` object required

`warehouses` array | null required

`id` string required

`name` null | string required

`registers` any required

Null in every recorded response.

`accounts` any required

Null in every recorded response.

`series` any required

Null in every recorded response.

`centers` any required

Null in every recorded response.

`denied` object required

`formats` string\[\] required

`reports` object\[\] required

`key` string required

`cs` string required

`en` string required

`fixedOnly` string\[\] required

`members` string\[\] required

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/access-roles/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/effective', {
  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/access-roles/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/effective",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## List the agendas and levels a custom role can set, what each agenda needs to work, and the fixed roles written as rights to start from

GET `/v1/access-roles/catalog`

List the agendas and levels a custom role can set, what each agenda needs to work, and the fixed roles written as rights to start from

MCP tool: `get-access-catalog`

### Response · 200

`agendas` object\[\] required

`key` string required

`needs` string\[\] required

`own` boolean

`levels` string\[\] required

`presets` object required

`owner` object required

`contacts` string required

`sales` string required

`purchases` string required

`bank` string required

`cash` string required

`ledger` string required

`tax` string required

`inventory` string required

`assets` string required

`travel` string required

`payroll` string required

`agendas` string required

`reports` string required

`inbox` string required

`administration` string required

`accountant` object required

`contacts` string required

`sales` string required

`purchases` string required

`bank` string required

`cash` string required

`ledger` string required

`tax` string required

`inventory` string required

`assets` string required

`travel` string required

`payroll` string required

`agendas` string required

`reports` string required

`inbox` string required

`administration` string required

`invoicing` object required

`contacts` string required

`sales` string required

`purchases` string required

`bank` string required

`cash` string required

`ledger` string required

`tax` string required

`inventory` string required

`assets` string required

`travel` string required

`payroll` string required

`agendas` string required

`reports` string required

`inbox` string required

`administration` string required

`warehouse` object required

`contacts` string required

`sales` string required

`purchases` string required

`bank` string required

`cash` string required

`ledger` string required

`tax` string required

`inventory` string required

`assets` string required

`travel` string required

`payroll` string required

`agendas` string required

`reports` string required

`inbox` string required

`administration` string required

`readonly` object required

`contacts` string required

`sales` string required

`purchases` string required

`bank` string required

`cash` string required

`ledger` string required

`tax` string required

`inventory` string required

`assets` string required

`travel` string required

`payroll` string required

`agendas` string required

`reports` string required

`inbox` string required

`administration` string required

`exportFormats` string\[\]

`printReports` object\[\]

`key` string required

`agenda` string required

`cs` string required

`en` string required

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/access-roles/catalog', {
  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/access-roles/catalog",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## List what happened in this company lately: documents issued, payments recorded, statements imported. Without IP addresses or technical calls; the full log is in the audit log

GET `/v1/activity`

List what happened in this company lately: documents issued, payments recorded, statements imported. Without IP addresses or technical calls; the full log is in the audit log

MCP tool: `list-activity`

### Query parameters

`limit` integer min 1 max 100

### Response · 200

`data` object\[\] required

`object` "activity" required

`id` string required

`action` string required

`objectType` null | string required

`objectId` null | string required

`summary` null | string required

`actorLabel` null | string required

`createdAt` string required date-time

`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/activity \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/activity', {
  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/activity",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## List API keys of this company. Secrets are never shown again after creation.

GET `/v1/api-keys`

List API keys of this company. Secrets are never shown again after creation.

MCP tool: `list-api-keys`

### 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` "api\_key" required

`id` string required

`name` null | string required

`hint` string required

`scope` string required

`sendScope` boolean required

`lastUsedAt` null | string required date-time

`revokedAt` string | null required

`createdAt` string required date-time

`secret` 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/api-keys \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/api-keys', {
  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/api-keys",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Create an API key. scope "read" allows only reading, "full" also writing. sendScope lets it confirm payment orders and filings where an owner turned that on: only an owner in the dashboard can give it. The secret is returned once.

POST `/v1/api-keys`

Create an API key. scope "read" allows only reading, "full" also writing. sendScope lets it confirm payment orders and filings where an owner turned that on: only an owner in the dashboard can give it. The secret is returned once.

MCP tool: `create-api-key`

### Request body

`name` string required max 120 chars

`scope` "read" | "full" default `"full"`

`sendScope` boolean default `false`

### Response · 201

`id` string required

`name` null | string required

`hint` string required

`scope` string required

`sendScope` boolean required

`lastUsedAt` null | string required date-time

`revokedAt` string | null required

`createdAt` string required date-time

`secret` string

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/api-keys', {
  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."
  }),
});
const data = await response.json();
```

```python
import os
import requests

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

## Revoke an API key. Anything using it stops working immediately.

DELETE `/v1/api-keys/{id}`

Revoke an API key. Anything using it stops working immediately.

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

MCP tool: `revoke-api-key`

### Path parameters

`id` string required

### Response · 200

`id` string required

`deleted` boolean required

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/api-keys/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/api-keys/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## List the audit log: who did what, when, from which IP, on which object. Read only: entries can never be changed or deleted.

GET `/v1/audit-events`

List the audit log: who did what, when, from which IP, on which object. Read only: entries can never be changed or deleted.

MCP tool: `list-audit-events`

### 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.

`action` string max 100 chars

`oid` string max 64 chars

`actorId` string max 64 chars

ID of the actor.

### Response · 200

`data` object\[\] required

`object` "audit\_event" required

`id` string required

`action` string required

`objectType` null | string required

`objectId` null | string required

`summary` null | string required

`diff` any required

`actorType` string

`actorId` null | string

`actorLabel` null | string

`ip` null | string

`createdAt` string required date-time

`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/audit-events \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/audit-events', {
  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/audit-events",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## The state of the tamper-evident chain: its latest hash, what waits to be sealed, and the last verification.

GET `/v1/audit/chain`

The state of the tamper-evident chain: its latest hash, what waits to be sealed, and the last verification.

MCP tool: `get-audit-chain`

### Response · 200

`last` null | object required

`ok` boolean required

`reason` null | string required

`entries` integer required

`waiting` integer required

`complete` boolean required

`headHash` null | string required

`brokenSeq` integer | null required

`sealsChecked` integer required

`verifiedAt` string required date-time

`headHash` null | string required

`headSeq` integer required

`sealedAt` null | string required date-time

`waiting` integer required

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/audit/chain', {
  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/audit/chain",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## The company's audit as a timeline: who did what, when and from where. One entry per request or job, including everything a trigger recorded. Ordinary reads are not recorded.

GET `/v1/audit/entries`

The company's audit as a timeline: who did what, when and from where. One entry per request or job, including everything a trigger recorded. Ordinary reads are not recorded.

MCP tool: `list-audit-entries`

### Query parameters

`actorId` string max 80 chars

ID of the actor.

`agenda` string max 40 chars

`objectType` string max 80 chars

`objectId` string max 200 chars

ID of the object.

`action` string max 40 chars

`surface` "dashboard" | "public\_api" | "mcp" | "job" | "import" | "public\_link" | "webhook" | "migration" | "unknown"

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

`search` string max 100 chars

`locale` "cs" | "en"

`limit` integer min 1 max 200

`offset` integer min 0 max 9007199254740991

### Response · 200

`data` object\[\] required

`object` "audit\_entry" required

`id` string required

`createdAt` string required date-time

`actor` object required

`type` string required

`id` null | string required

`name` null | string required

`email` null | string required

`job` null | string required

`display` string required

`behalf` null | object required

`id` string required

`name` null | string required

`email` null | string required

`support` string | null required

`where` object required

`surface` string required

`surfaceLabel` string required

`operationId` null | string required

`method` null | string required

`route` null | string required

`ip` null | string required

`userAgent` null | string required

`requestId` null | string required

`action` null | string required

`what` string required

`subject` null | object required

`type` null | string required

`typeLabel` null | string required

`id` string required

`label` null | string required

`agenda` null | string required

`changeCount` integer required

`eventCount` integer required

`agendas` object\[\]

`id` string required

`label` null | string required

`legacy` boolean required

`directCount` integer

`collapsed` object\[\]

`table` string required

`op` string required

`typeLabel` string required

`action` string required

`actionLabel` string required

`count` integer required

`changes` object\[\]

`object` "audit\_change" required

`id` integer required

`table` string required

`typeLabel` string required

`agenda` string required

`agendaLabel` string required

`objectId` null | string required

`parentId` null | string required

`label` null | string required

`action` string required

`actionLabel` string required

`fields` object\[\] required

`field` null | string required

`label` null | string required

`format` null | string required

`before` array | integer | null | string required

`after` array | boolean | integer | null | object | string required

`hidden` boolean | null required

`beforeLabel` null | string

`afterLabel` null | string

`beforeText` null | string

`afterText` null | string

`currency` null | string

`events` object\[\]

`object` "audit\_event" required

`id` string required

`action` string required

`objectType` null | string required

`objectId` null | string required

`summary` null | string required

`diff` any required

`actorType` string

`actorId` null | string

`actorLabel` null | string

`ip` null | string

`createdAt` string required date-time

`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/audit/entries \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/audit/entries', {
  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/audit/entries",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## The filtered audit as CSV, up to 20 000 entries. The export itself is recorded.

GET `/v1/audit/entries.csv`

The filtered audit as CSV, up to 20 000 entries. The export itself is recorded.

MCP tool: `export-audit-csv`

### Query parameters

`actorId` string max 80 chars

ID of the actor.

`agenda` string max 40 chars

`objectType` string max 80 chars

`objectId` string max 200 chars

ID of the object.

`action` string max 40 chars

`surface` "dashboard" | "public\_api" | "mcp" | "job" | "import" | "public\_link" | "webhook" | "migration" | "unknown"

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

`search` string max 100 chars

`locale` "cs" | "en"

`limit` integer min 1 max 200

`offset` integer min 0 max 9007199254740991

### Response · 200

Returns a text/csv file.

```bash
curl https://api.damedoklad.cz/v1/audit/entries.csv \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/audit/entries.csv', {
  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/audit/entries.csv",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## The filtered audit as XLSX, up to 20 000 entries. The export itself is recorded.

GET `/v1/audit/entries.xlsx`

The filtered audit as XLSX, up to 20 000 entries. The export itself is recorded.

MCP tool: `export-audit-xlsx`

### Query parameters

`actorId` string max 80 chars

ID of the actor.

`agenda` string max 40 chars

`objectType` string max 80 chars

`objectId` string max 200 chars

ID of the object.

`action` string max 40 chars

`surface` "dashboard" | "public\_api" | "mcp" | "job" | "import" | "public\_link" | "webhook" | "migration" | "unknown"

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

`search` string max 100 chars

`locale` "cs" | "en"

`limit` integer min 1 max 200

`offset` integer min 0 max 9007199254740991

### Response · 200

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

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/audit/entries.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/audit/entries.xlsx",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## One audit entry with every row it changed, field by field. A secret field says it changed and never its value.

GET `/v1/audit/entries/{id}`

One audit entry with every row it changed, field by field. A secret field says it changed and never its value.

MCP tool: `get-audit-entry`

### Path parameters

`id` string required

### Query parameters

`locale` "cs" | "en"

`table` string max 80 chars

`op` "I" | "U" | "D"

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

### Response · 200

`id` string required

`createdAt` string required date-time

`actor` object required

`type` string required

`id` null | string required

`name` null | string required

`email` null | string required

`job` null | string required

`display` string required

`behalf` null | object required

`id` string required

`name` null | string required

`email` null | string required

`support` string | null required

`where` object required

`surface` string required

`surfaceLabel` string required

`operationId` null | string required

`method` null | string required

`route` null | string required

`ip` null | string required

`userAgent` null | string required

`requestId` null | string required

`action` null | string required

`what` string required

`subject` null | object required

`type` null | string required

`typeLabel` null | string required

`id` string required

`label` null | string required

`agenda` null | string required

`changeCount` integer required

`eventCount` integer required

`agendas` object\[\]

`id` string required

`label` null | string required

`legacy` boolean required

`directCount` integer

`collapsed` object\[\]

`table` string required

`op` string required

`typeLabel` string required

`action` string required

`actionLabel` string required

`count` integer required

`changes` object\[\]

`object` "audit\_change" required

`id` integer required

`table` string required

`typeLabel` string required

`agenda` string required

`agendaLabel` string required

`objectId` null | string required

`parentId` null | string required

`label` null | string required

`action` string required

`actionLabel` string required

`fields` object\[\] required

`field` null | string required

`label` null | string required

`format` null | string required

`before` array | integer | null | string required

`after` array | boolean | integer | null | object | string required

`items` integer

`offers` integer

`orders` integer

`prices` integer

`journal` integer

`accounts` integer

`archived` integer

`contacts` integer

`invoices` integer

`postings` integer

`vouchers` integer | string

`enquiries` integer

`movements` integer

`dimensions` integer

`priceLists` integer

`warehouses` integer

`productions` integer

`bankAccounts` string

`saleVouchers` integer | string

`bankMovements` integer

`cashRegisters` integer

`stockDocuments` integer

`stockTransfers` integer

`contactsUpdated` integer

`hidden` boolean | null required

`beforeLabel` null | string

`afterLabel` null | string

`beforeText` null | string

`afterText` null | string

`currency` null | string

`events` object\[\]

`object` "audit\_event" required

`id` string required

`action` string required

`objectType` null | string required

`objectId` null | string required

`summary` null | string required

`diff` any required

`actorType` string

`actorId` null | string

`actorLabel` null | string

`ip` null | string

`createdAt` string required date-time

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/audit/entries/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/audit/entries/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## What the audit can be filtered by: people and keys that appear in it, agendas, actions and surfaces.

GET `/v1/audit/facets`

What the audit can be filtered by: people and keys that appear in it, agendas, actions and surfaces.

MCP tool: `get-audit-facets`

### Query parameters

`locale` "cs" | "en"

### Response · 200

`actors` object\[\] required

`id` string required

`type` string required

`name` null | string required

`email` null | string required

`label` null | string required

`agendas` object\[\] required

`id` string required

`label` null | string required

`actions` object\[\] required

`id` string required

`label` null | string required

`surfaces` object\[\] required

`id` string required

`label` null | string required

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/audit/facets', {
  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/audit/facets",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## The whole trail of one record: a document with its lines and payments, or a contact. Whoever may read the record may read this.

GET `/v1/audit/objects/{id}/history`

The whole trail of one record: a document with its lines and payments, or a contact. Whoever may read the record may read this.

MCP tool: `get-audit-history`

### Path parameters

`id` string required

### Query parameters

`locale` "cs" | "en"

`table` string max 80 chars

`op` "I" | "U" | "D"

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

### Response · 200

`data` object\[\] required

`object` "audit\_entry" required

`id` string required

`createdAt` string required date-time

`actor` object required

`type` string required

`id` null | string required

`name` null | string required

`email` null | string required

`job` null | string required

`display` string required

`behalf` null | object required

`id` string required

`name` null | string required

`email` null | string required

`support` string | null required

`where` object required

`surface` string required

`surfaceLabel` string required

`operationId` null | string required

`method` null | string required

`route` null | string required

`ip` null | string required

`userAgent` null | string required

`requestId` null | string required

`action` null | string required

`what` string required

`subject` null | object required

`type` null | string required

`typeLabel` null | string required

`id` string required

`label` null | string required

`agenda` null | string required

`changeCount` integer required

`eventCount` integer required

`agendas` object\[\]

`id` string required

`label` null | string required

`legacy` boolean required

`directCount` integer

`collapsed` object\[\]

`table` string required

`op` string required

`typeLabel` string required

`action` string required

`actionLabel` string required

`count` integer required

`changes` object\[\]

`object` "audit\_change" required

`id` integer required

`table` string required

`typeLabel` string required

`agenda` string required

`agendaLabel` string required

`objectId` null | string required

`parentId` null | string required

`label` null | string required

`action` string required

`actionLabel` string required

`fields` object\[\] required

`field` null | string required

`label` null | string required

`format` null | string required

`before` array | integer | null | string required

`after` array | boolean | integer | null | object | string required

`hidden` boolean | null required

`beforeLabel` null | string

`afterLabel` null | string

`beforeText` null | string

`afterText` null | string

`currency` null | string

`events` object\[\]

`object` "audit\_event" required

`id` string required

`action` string required

`objectType` null | string required

`objectId` null | string required

`summary` null | string required

`diff` any required

`actorType` string

`actorId` null | string

`actorLabel` null | string

`ip` null | string

`createdAt` string required date-time

`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/audit/objects/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/history \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/audit/objects/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/history', {
  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/audit/objects/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/history",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Seals what is waiting and recomputes the company's hash chain against the recorded data. Answers the first thing that does not hold.

POST `/v1/audit/verify`

Seals what is waiting and recomputes the company's hash chain against the recorded data. Answers the first thing that does not hold.

MCP tool: `verify-audit-chain`

### Response · 200

`ok` boolean required

`complete` boolean required

`sealsChecked` integer required

`entries` integer required

`waiting` integer required

`headHash` null | string required

`brokenSeq` integer | null required

`reason` null | string required

`verifiedAt` string required date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/audit/verify \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/audit/verify', {
  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/audit/verify",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Show the current plan, trial, usage against limits, and whether online payment is available

GET `/v1/billing`

Show the current plan, trial, usage against limits, and whether online payment is available

MCP tool: `get-billing`

### Response · 200

`enabled` boolean required

`subscription` object required

`object` "billing\_subscription" required

`id` null | string required

`plan` string required

`status` string required

`interval` null | string required

`trialEndsAt` null | string required date-time

`currentPeriodEnd` null | string required date-time

`cancelAtPeriodEnd` boolean required

`hasCustomer` boolean required

`plan` object required

`object` "plan" required

`id` string required

`name` null | object required

`cs` string required

`en` string required

`description` null | object required

`cs` string required

`en` string required

`monthlyHaler` integer required

`yearlyHaler` integer required

`limits` object required

`documentsPerMonth` integer | null required

`members` integer | null required

`features` object required

`api` boolean required

`webhooks` boolean required

`inboxAi` boolean required

`purchasable` boolean required

`usage` object required

`documentsThisMonth` integer required

`members` integer required

`plans` object\[\] required

`object` "plan" required

`id` string required

`name` null | object required

`cs` string required

`en` string required

`description` null | object required

`cs` string required

`en` string required

`monthlyHaler` integer required

`yearlyHaler` integer required

`limits` object required

`documentsPerMonth` integer | null required

`members` integer | null required

`features` object required

`api` boolean required

`webhooks` boolean required

`inboxAi` boolean required

`purchasable` boolean required

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/billing', {
  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/billing",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Get the company profile: name, IČO, DIČ, address, VAT status, default bank account, document design

GET `/v1/company`

Get the company profile: name, IČO, DIČ, address, VAT status, default bank account, document design

MCP tool: `get-company`

### Response · 200

`id` string required

`sid` string required

`name` null | string required

`ico` null | string required

`dic` null | string required

`regime` string required

`vatPayer` boolean required

`vatPeriod` string required

`defaultCurrency` string required

`onboarded` boolean required

`scheduledRegimeChange` null | object required

`regime` string required

`effectiveFrom` null | string required date

`vatHistory` object\[\] required

`from` null | string required date

`vatPayer` boolean required

`vatPeriod` string required

`note` null | string

`street` null | string required

`city` null | string required

`postalCode` null | string required

`country` null | string required

`email` null | string required

`phone` null | string required

`www` null | string required

`registerNote` any required

Null in every recorded response.

`defaultLanguage` string required

`bankAccount` object required

`accountNumber` null | string required

`bankCode` null | string required

`iban` null | string

`swift` string | null

`logoFileId` null | string required

`design` object required

`accentColor` null | string required

`footerText` null | string required

`showLogo` boolean required

`showQrCode` boolean required

`logoPosition` string

`createdAt` string required date-time

`stampFileId` null | string

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/company', {
  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/company",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Update the company profile. The accounting regime has its own operation.

PATCH `/v1/company`

Update the company profile. The accounting regime has its own operation.

MCP tool: `update-company`

### Request body

`name` string max 160 chars

`ico` string | null

Czech company number (IČO), 8 digits.

`dic` string | null

VAT number (DIČ), for example CZ12345678.

`street` string | null

`city` string | null

`postalCode` string | null

`country` string 2 chars

`email` string | null

`phone` string | null

`www` string | null

`registerNote` string | null

`vatPayer` boolean

`vatPeriod` "monthly" | "quarterly"

`defaultCurrency` string 3 chars

ISO 4217 currency code, for example CZK or EUR.

`defaultLanguage` "cs" | "en"

`bankAccount` object

`accountNumber` string | null

Account number from the chart of accounts, for example 311. list-accounts lists them.

`bankCode` string | null

`iban` string | null

IBAN without spaces.

`swift` string | null

`design` object

`accentColor` string | null

`footerText` string | null

`showLogo` boolean

`showQrCode` boolean

### Response · 200

`id` string required

`sid` string required

`name` null | string required

`ico` null | string required

`dic` null | string required

`regime` string required

`vatPayer` boolean required

`vatPeriod` string required

`defaultCurrency` string required

`onboarded` boolean required

`scheduledRegimeChange` null | object required

`regime` string required

`effectiveFrom` null | string required date

`vatHistory` object\[\] required

`from` null | string required date

`vatPayer` boolean required

`vatPeriod` string required

`note` null | string

`street` null | string required

`city` null | string required

`postalCode` null | string required

`country` null | string required

`email` null | string required

`phone` null | string required

`www` null | string required

`registerNote` any required

Null in every recorded response.

`defaultLanguage` string required

`bankAccount` object required

`accountNumber` null | string required

`bankCode` null | string required

`iban` null | string

`swift` string | null

`logoFileId` null | string required

`design` object required

`accentColor` null | string required

`footerText` null | string required

`showLogo` boolean required

`showQrCode` boolean required

`logoPosition` string

`createdAt` string required date-time

`stampFileId` null | string

```bash
curl -X PATCH https://api.damedoklad.cz/v1/company \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Pekárna U Lípy s.r.o.",
  "ico": "12345678",
  "dic": "CZ12345678"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/company', {
  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.",
    "ico": "12345678",
    "dic": "CZ12345678"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/company",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "name": "Pekárna U Lípy s.r.o.",
        "ico": "12345678",
        "dic": "CZ12345678"
    },
)
data = response.json()
```

## Which agendas this company shows in the dashboard. Display only: the API and MCP reach every agenda whatever this says, and data is never removed. An agenda holding data or required by the regime stays visible

GET `/v1/company/agendas`

Which agendas this company shows in the dashboard. Display only: the API and MCP reach every agenda whatever this says, and data is never removed. An agenda holding data or required by the regime stays visible

MCP tool: `get-company-agendas`

### Response · 200

`showAll` boolean required

`chosen` boolean required

`agendas` object\[\] required

`key` string required

`group` string required

`parent` null | string required

`locked` boolean required

`hasData` boolean required

`enabled` boolean required

`visible` boolean required

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/company/agendas', {
  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/company/agendas",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Turn agendas on or off in the dashboard, or show everything. Owner only. Nothing is removed, and an agenda holding data stays visible

PUT `/v1/company/agendas`

Turn agendas on or off in the dashboard, or show everything. Owner only. Nothing is removed, and an agenda holding data stays visible

MCP tool: `update-company-agendas`

### Request body

`showAll` boolean

`on` string\[\]

`off` string\[\]

### Response · 200

`showAll` boolean required

`chosen` boolean required

`agendas` object\[\] required

`key` string required

`group` string required

`parent` null | string required

`locked` boolean required

`hasData` boolean required

`enabled` boolean required

`visible` boolean required

```bash
curl -X PUT https://api.damedoklad.cz/v1/company/agendas \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "showAll": false,
  "on": [
    "string"
  ],
  "off": [
    "string"
  ]
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/company/agendas', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "showAll": false,
    "on": [
      "string"
    ],
    "off": [
      "string"
    ]
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.put(
    "https://api.damedoklad.cz/v1/company/agendas",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "showAll": False,
        "on": [
            "string"
        ],
        "off": [
            "string"
        ]
    },
)
data = response.json()
```

## Look up an IČO in ARES and return name, address and DIČ to prefill. Saves nothing.

POST `/v1/company/ares`

Look up an IČO in ARES and return name, address and DIČ to prefill. Saves nothing.

MCP tool: `lookup-company-in-ares`

### Request body

`ico` string required

Czech company number (IČO), 8 digits.

### Response · 200

`source` string required

`ico` null | string required

`dic` null | string required

`name` null | string required

`vatPayerType` string required

`address` null | object required

`street` null | string required

`city` null | string required

`postalCode` null | string required

`country` null | string required

```bash
curl -X POST https://api.damedoklad.cz/v1/company/ares \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "ico": "12345678"
}'
```

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

```python
import os
import requests

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

## Download the company logo

GET `/v1/company/logo`

Download the company logo

MCP tool: `get-company-logo`

### Response · 200

Returns a image/png file.

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/company/logo', {
  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/company/logo",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Upload the logo printed on documents (PNG or JPEG, up to 2 MB)

POST `/v1/company/logo`

Upload the logo printed on documents (PNG or JPEG, up to 2 MB)

MCP tool: `upload-company-logo`

### Request body

`contentType` "image/png" | "image/jpeg" required

`fileBase64` string required max 3145728 chars

File content encoded as base64.

### Response · 200

`id` string required

`sid` string required

`name` null | string required

`ico` null | string required

`dic` null | string required

`regime` string required

`vatPayer` boolean required

`vatPeriod` string required

`defaultCurrency` string required

`onboarded` boolean required

`scheduledRegimeChange` null | object required

`regime` string required

`effectiveFrom` null | string required date

`vatHistory` object\[\] required

`from` null | string required date

`vatPayer` boolean required

`vatPeriod` string required

`note` null | string

`street` null | string required

`city` null | string required

`postalCode` null | string required

`country` null | string required

`email` null | string required

`phone` null | string required

`www` null | string required

`registerNote` any required

Null in every recorded response.

`defaultLanguage` string required

`bankAccount` object required

`accountNumber` null | string required

`bankCode` null | string required

`iban` null | string

`swift` string | null

`logoFileId` null | string required

`design` object required

`accentColor` null | string required

`footerText` null | string required

`showLogo` boolean required

`showQrCode` boolean required

`logoPosition` string

`createdAt` string required date-time

`stampFileId` null | string

```bash
curl -X POST https://api.damedoklad.cz/v1/company/logo \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "contentType": "image/png",
  "fileBase64": "string"
}'
```

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

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/company/logo",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "contentType": "image/png",
        "fileBase64": "string"
    },
)
data = response.json()
```

## Change the accounting regime (daňová evidence, jednoduché, podvojné účetnictví). With entries in the books it can only be scheduled for the first day of a future period.

POST `/v1/company/regime`

Change the accounting regime (daňová evidence, jednoduché, podvojné účetnictví). With entries in the books it can only be scheduled for the first day of a future period.. Returns 409 regime\_has\_entries when the books hold entries and no valid effectiveFrom is given. This has tax consequences: confirm with the user.

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

MCP tool: `change-accounting-regime`

### Request body

`regime` "tax\_records" | "single\_entry" | "double\_entry" required

`effectiveFrom` string YYYY-MM-DD

Date as YYYY-MM-DD.

### Response · 200

`id` string required

`sid` string required

`name` null | string required

`ico` null | string required

`dic` null | string required

`regime` string required

`vatPayer` boolean required

`vatPeriod` string required

`defaultCurrency` string required

`onboarded` boolean required

`scheduledRegimeChange` null | object required

`regime` string required

`effectiveFrom` null | string required date

`vatHistory` object\[\] required

`from` null | string required date

`vatPayer` boolean required

`vatPeriod` string required

`note` null | string

`street` null | string required

`city` null | string required

`postalCode` null | string required

`country` null | string required

`email` null | string required

`phone` null | string required

`www` null | string required

`registerNote` any required

Null in every recorded response.

`defaultLanguage` string required

`bankAccount` object required

`accountNumber` null | string required

`bankCode` null | string required

`iban` null | string

`swift` string | null

`logoFileId` null | string required

`design` object required

`accentColor` null | string required

`footerText` null | string required

`showLogo` boolean required

`showQrCode` boolean required

`logoPosition` string

`createdAt` string required date-time

`stampFileId` null | string

```bash
curl -X POST https://api.damedoklad.cz/v1/company/regime \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "regime": "tax_records"
}'
```

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

```python
import os
import requests

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

## Upload the company stamp a print layout can place as an element (PNG or JPEG, up to 2 MB)

POST `/v1/company/stamp`

Upload the company stamp a print layout can place as an element (PNG or JPEG, up to 2 MB)

MCP tool: `upload-company-stamp`

### Request body

`contentType` "image/png" | "image/jpeg" required

`fileBase64` string required max 3145728 chars

File content encoded as base64.

### Response · 200

`id` string required

`sid` string required

`name` null | string required

`ico` null | string required

`dic` null | string required

`regime` string required

`vatPayer` boolean required

`vatPeriod` string required

`defaultCurrency` string required

`onboarded` boolean required

`scheduledRegimeChange` null | object required

`regime` string required

`effectiveFrom` null | string required date

`vatHistory` object\[\] required

`from` null | string required date

`vatPayer` boolean required

`vatPeriod` string required

`note` null | string

`street` null | string required

`city` null | string required

`postalCode` null | string required

`country` null | string required

`email` null | string required

`phone` null | string required

`www` null | string required

`registerNote` any required

Null in every recorded response.

`defaultLanguage` string required

`bankAccount` object required

`accountNumber` null | string required

`bankCode` null | string required

`iban` null | string

`swift` string | null

`logoFileId` null | string required

`design` object required

`accentColor` null | string required

`footerText` null | string required

`showLogo` boolean required

`showQrCode` boolean required

`logoPosition` string

`createdAt` string required date-time

`stampFileId` null | string

```bash
curl -X POST https://api.damedoklad.cz/v1/company/stamp \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "contentType": "image/png",
  "fileBase64": "string"
}'
```

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

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/company/stamp",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "contentType": "image/png",
        "fileBase64": "string"
    },
)
data = response.json()
```

## Forget the company stamp picture. A stamp on a layout then prints the company name and numbers in a frame

DELETE `/v1/company/stamp`

Forget the company stamp picture. A stamp on a layout then prints the company name and numbers in a frame

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

MCP tool: `delete-company-stamp`

### Response · 200

`id` string required

`sid` string required

`name` null | string required

`ico` null | string required

`dic` null | string required

`regime` string required

`vatPayer` boolean required

`vatPeriod` string required

`defaultCurrency` string required

`onboarded` boolean required

`scheduledRegimeChange` null | object required

`regime` string required

`effectiveFrom` null | string required date

`vatHistory` object\[\] required

`from` null | string required date

`vatPayer` boolean required

`vatPeriod` string required

`note` null | string

`street` null | string required

`city` null | string required

`postalCode` null | string required

`country` null | string required

`email` null | string required

`phone` null | string required

`www` null | string required

`registerNote` any required

Null in every recorded response.

`defaultLanguage` string required

`bankAccount` object required

`accountNumber` null | string required

`bankCode` null | string required

`iban` null | string

`swift` string | null

`logoFileId` null | string required

`design` object required

`accentColor` null | string required

`footerText` null | string required

`showLogo` boolean required

`showQrCode` boolean required

`logoPosition` string

`createdAt` string required date-time

`stampFileId` null | string

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/company/stamp', {
  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/company/stamp",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## List the comments on one document, oldest first

GET `/v1/document-comments`

List the comments on one document, oldest first

MCP tool: `list-document-comments`

### 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.

`documentKind` "invoice" | "received\_invoice" | "proforma" | "supplier\_advance" | "credit\_note" | "delivery\_note" | "inbox\_document" | "cash\_document" | "sales\_document" required

`documentId` string required max 64 chars

ID of the document.

### Response · 200

`data` object\[\] required

`object` "document\_comment" required

`id` string required

`documentKind` string required

`documentId` string required

`authorId` null | string required

`authorName` null | string required

`body` string required

`resolvedAt` null | string required date-time

`createdAt` string required date-time

`mine` boolean 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/document-comments \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/document-comments', {
  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/document-comments",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Comment on a document. E-mails the other people who run the books here.

POST `/v1/document-comments`

Comment on a document. E-mails the other people who run the books here.

MCP tool: `create-document-comment`

### Request body

`documentKind` "invoice" | "received\_invoice" | "proforma" | "supplier\_advance" | "credit\_note" | "delivery\_note" | "inbox\_document" | "cash\_document" | "sales\_document" required

`documentId` string required max 64 chars

ID of the document.

`body` string required max 4000 chars

### Response · 201

`id` string required

`documentKind` string required

`documentId` string required

`authorId` null | string required

`authorName` null | string required

`body` string required

`resolvedAt` null | string required date-time

`createdAt` string required date-time

`mine` boolean required

```bash
curl -X POST https://api.damedoklad.cz/v1/document-comments \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "documentKind": "invoice",
  "documentId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "body": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/document-comments', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "documentKind": "invoice",
    "documentId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "body": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/document-comments",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "documentKind": "invoice",
        "documentId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "body": "string"
    },
)
data = response.json()
```

## Delete your own comment

DELETE `/v1/document-comments/{id}`

Delete your own comment

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

MCP tool: `delete-document-comment`

### Path parameters

`id` string required

### Response · 200

`id` string required

`deleted` boolean required

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/document-comments/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/document-comments/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Mark a comment as dealt with, so it no longer counts as open

POST `/v1/document-comments/{id}/resolve`

Mark a comment as dealt with, so it no longer counts as open

MCP tool: `resolve-document-comment`

### Path parameters

`id` string required

### Response · 200

`id` string required

`documentKind` string required

`documentId` string required

`authorId` null | string required

`authorName` null | string required

`body` string required

`resolvedAt` null | string required date-time

`createdAt` string required date-time

`mine` boolean required

```bash
curl -X POST https://api.damedoklad.cz/v1/document-comments/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/resolve \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/document-comments/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/resolve', {
  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/document-comments/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/resolve",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Download finished documents for another accounting system: POHODA XML, Money S3 XML, CSV with the journal, or ISDOC files in a ZIP

GET `/v1/document-exports`

Download finished documents for another accounting system: POHODA XML, Money S3 XML, CSV with the journal, or ISDOC files in a ZIP. format=pohoda gives a dataPack of invoices, credit notes, advance invoices, orders, stock cards and stock documents. format=money\_s3 gives MoneyData with issued and received invoices, orders, stock cards and stock documents; proformas have no place there. format=csv gives a ZIP of invoices, lines and journal. format=isdoc gives a ZIP of issued documents. Drafts and cancelled documents are left out. kinds narrows it: order, stock\_card, stock\_document only for the two XML formats.

MCP tool: `export-accounting-documents`

### Query parameters

`format` "pohoda" | "money\_s3" | "csv" | "isdoc" required

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

`kinds` string

### Response · 200

Returns a application/octet-stream file.

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/document-exports', {
  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/document-exports",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## List requests for documents in this company, newest first

GET `/v1/document-requests`

List requests for documents in this company, newest first

MCP tool: `list-document-requests`

### 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.

`status` "open" | "fulfilled" | "cancelled"

### Response · 200

`data` object\[\] required

`object` "document\_request" required

`id` string required

`title` string required

`message` string | null required

`periodFrom` string | null required

`periodTo` string | null required

`dueOn` string required date

`recipients` string\[\] required

`status` string required

`reminderEveryDays` integer required

`maxReminders` integer required

`remindersSent` integer required

`nextReminderOn` null | string required date

`lastRemindedAt` null | string required date-time

`documentsReceived` integer required

`fulfilledAt` null | string required date-time

`createdAt` string required date-time

`failedRecipients` any\[\]

`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/document-requests \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/document-requests', {
  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/document-requests",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Ask the client for documents and remind them by e-mail until they are in. Sends real e-mail; confirm the recipients first.

POST `/v1/document-requests`

Ask the client for documents and remind them by e-mail until they are in. Sends real e-mail; confirm the recipients first.

MCP tool: `create-document-request`

### Request body

`title` string required max 160 chars

`message` string max 2000 chars

`periodFrom` string YYYY-MM-DD

Date as YYYY-MM-DD.

`periodTo` string YYYY-MM-DD

Date as YYYY-MM-DD.

`dueOn` string required YYYY-MM-DD

Date as YYYY-MM-DD.

`recipients` string\[\]

`reminderEveryDays` integer min 1 max 30 default `3`

`maxReminders` integer min 0 max 20 default `5`

### Response · 201

`id` string required

`title` string required

`message` string | null required

`periodFrom` string | null required

`periodTo` string | null required

`dueOn` string required date

`recipients` string\[\] required

`status` string required

`reminderEveryDays` integer required

`maxReminders` integer required

`remindersSent` integer required

`nextReminderOn` null | string required date

`lastRemindedAt` null | string required date-time

`documentsReceived` integer required

`fulfilledAt` null | string required date-time

`createdAt` string required date-time

`failedRecipients` any\[\]

```bash
curl -X POST https://api.damedoklad.cz/v1/document-requests \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "title": "string",
  "dueOn": "2026-10-30"
}'
```

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

```python
import os
import requests

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

## Withdraw a request for documents. Stops the reminders.

POST `/v1/document-requests/{id}/cancel`

Withdraw a request for documents. Stops the reminders.

MCP tool: `cancel-document-request`

### Path parameters

`id` string required

### Response · 200

`id` string required

`title` string required

`message` string | null required

`periodFrom` string | null required

`periodTo` string | null required

`dueOn` string required date

`recipients` string\[\] required

`status` string required

`reminderEveryDays` integer required

`maxReminders` integer required

`remindersSent` integer required

`nextReminderOn` null | string required date

`lastRemindedAt` null | string required date-time

`documentsReceived` integer required

`fulfilledAt` null | string required date-time

`createdAt` string required date-time

`failedRecipients` any\[\]

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/document-requests/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/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/document-requests/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/cancel",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Say the requested documents are all in. Stops the reminders.

POST `/v1/document-requests/{id}/fulfil`

Say the requested documents are all in. Stops the reminders.

MCP tool: `fulfil-document-request`

### Path parameters

`id` string required

### Response · 200

`id` string required

`title` string required

`message` string | null required

`periodFrom` string | null required

`periodTo` string | null required

`dueOn` string required date

`recipients` string\[\] required

`status` string required

`reminderEveryDays` integer required

`maxReminders` integer required

`remindersSent` integer required

`nextReminderOn` null | string required date

`lastRemindedAt` null | string required date-time

`documentsReceived` integer required

`fulfilledAt` null | string required date-time

`createdAt` string required date-time

`failedRecipients` any\[\]

```bash
curl -X POST https://api.damedoklad.cz/v1/document-requests/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/fulfil \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/document-requests/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/fulfil', {
  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/document-requests/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/fulfil",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## List workspace exports, newest first

GET `/v1/exports`

List workspace exports, newest first

MCP tool: `list-data-exports`

### 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` "data\_export" required

`id` string required

`status` string required

`byteSize` integer | null required

`summary` null | object required

`pdfs` integer required

`files` integer required

`tables` object required

`boms` integer

`files` integer required

`items` integer

`assets` integer

`leases` integer

`series` integer required

`periods` integer required

`accounts` integer required

`contacts` integer required

`invoices` integer required

`vehicles` integer

`bom_lines` integer

`employees` integer

`movements` integer

`proformas` integer

`dimensions` integer

`stock_lots` integer

`stocktakes` integer

`warehouses` integer

`credentials` integer required

`audit_events` integer required

`credit_notes` integer

`data_exports` integer required

`stock_layers` integer

`tax_profiles` integer

`bank_accounts` integer

`cash_counters` integer

`invoice_lines` integer required

`journal_lines` integer required

`movement_lots` integer

`travel_orders` integer

`bank_movements` integer

`cash_documents` integer

`cash_registers` integer

`contact_groups` integer

`delivery_notes` integer

`import_batches` integer

`proforma_lines` integer

`stock_balances` integer

`user_workspace` integer required

`vehicle_routes` integer

`inbox_documents` integer required

`journal_entries` integer required

`movement_layers` integer

`stock_documents` integer

`stocktake_lines` integer

`bank_allocations` integer

`invoice_payments` integer

`credit_note_lines` integer

`invoice_vat_lines` integer required

`lease_instalments` integer

`received_invoices` integer

`proforma_vat_lines` integer

`stock_lot_balances` integer

`stock_reservations` integer

`delivery_note_lines` integer

`stock_number_series` integer

`accounting_templates` integer required

`credit_note_payments` integer

`employment_contracts` integer

`stock_document_lines` integer

`received_invoice_lines` integer

`received_invoice_vat_lines` integer

`received_invoice_settlements` integer

`contact_addresses` integer

`webhook_endpoints` integer

`warnings` any\[\] required

`error` string | null required

`createdAt` string required date-time

`finishedAt` null | string required date-time

`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/exports \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/exports', {
  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/exports",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Start a full export of this company: a ZIP of JSON, spreadsheets, document PDFs and attachments, built in the background

POST `/v1/exports`

Start a full export of this company: a ZIP of JSON, spreadsheets, document PDFs and attachments, built in the background

MCP tool: `create-data-export`

### Response · 202

`id` string required

`status` string required

`byteSize` integer | null required

`summary` null | object required

`pdfs` integer required

`files` integer required

`tables` object required

`boms` integer

`files` integer required

`items` integer

`assets` integer

`leases` integer

`series` integer required

`periods` integer required

`accounts` integer required

`contacts` integer required

`invoices` integer required

`vehicles` integer

`bom_lines` integer

`employees` integer

`movements` integer

`proformas` integer

`dimensions` integer

`stock_lots` integer

`stocktakes` integer

`warehouses` integer

`credentials` integer required

`audit_events` integer required

`credit_notes` integer

`data_exports` integer required

`stock_layers` integer

`tax_profiles` integer

`bank_accounts` integer

`cash_counters` integer

`invoice_lines` integer required

`journal_lines` integer required

`movement_lots` integer

`travel_orders` integer

`bank_movements` integer

`cash_documents` integer

`cash_registers` integer

`contact_groups` integer

`delivery_notes` integer

`import_batches` integer

`proforma_lines` integer

`stock_balances` integer

`user_workspace` integer required

`vehicle_routes` integer

`inbox_documents` integer required

`journal_entries` integer required

`movement_layers` integer

`stock_documents` integer

`stocktake_lines` integer

`bank_allocations` integer

`invoice_payments` integer

`credit_note_lines` integer

`invoice_vat_lines` integer required

`lease_instalments` integer

`received_invoices` integer

`proforma_vat_lines` integer

`stock_lot_balances` integer

`stock_reservations` integer

`delivery_note_lines` integer

`stock_number_series` integer

`accounting_templates` integer required

`credit_note_payments` integer

`employment_contracts` integer

`stock_document_lines` integer

`received_invoice_lines` integer

`received_invoice_vat_lines` integer

`received_invoice_settlements` integer

`contact_addresses` integer

`webhook_endpoints` integer

`warnings` any\[\] required

`error` string | null required

`createdAt` string required date-time

`finishedAt` null | string required date-time

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/exports', {
  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/exports",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Get the status of a workspace export

GET `/v1/exports/{id}`

Get the status of a workspace export

MCP tool: `get-data-export`

### Path parameters

`id` string required

### Response · 200

`id` string required

`status` string required

`byteSize` integer | null required

`summary` null | object required

`pdfs` integer required

`files` integer required

`tables` object required

`boms` integer

`files` integer required

`items` integer

`assets` integer

`leases` integer

`series` integer required

`periods` integer required

`accounts` integer required

`contacts` integer required

`invoices` integer required

`vehicles` integer

`bom_lines` integer

`employees` integer

`movements` integer

`proformas` integer

`dimensions` integer

`stock_lots` integer

`stocktakes` integer

`warehouses` integer

`credentials` integer required

`audit_events` integer required

`credit_notes` integer

`data_exports` integer required

`stock_layers` integer

`tax_profiles` integer

`bank_accounts` integer

`cash_counters` integer

`invoice_lines` integer required

`journal_lines` integer required

`movement_lots` integer

`travel_orders` integer

`bank_movements` integer

`cash_documents` integer

`cash_registers` integer

`contact_groups` integer

`delivery_notes` integer

`import_batches` integer

`proforma_lines` integer

`stock_balances` integer

`user_workspace` integer required

`vehicle_routes` integer

`inbox_documents` integer required

`journal_entries` integer required

`movement_layers` integer

`stock_documents` integer

`stocktake_lines` integer

`bank_allocations` integer

`invoice_payments` integer

`credit_note_lines` integer

`invoice_vat_lines` integer required

`lease_instalments` integer

`received_invoices` integer

`proforma_vat_lines` integer

`stock_lot_balances` integer

`stock_reservations` integer

`delivery_note_lines` integer

`stock_number_series` integer

`accounting_templates` integer required

`credit_note_payments` integer

`employment_contracts` integer

`stock_document_lines` integer

`received_invoice_lines` integer

`received_invoice_vat_lines` integer

`received_invoice_settlements` integer

`contact_addresses` integer

`webhook_endpoints` integer

`warnings` any\[\] required

`error` string | null required

`createdAt` string required date-time

`finishedAt` null | string required date-time

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/exports/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/exports/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Download a finished workspace export as a ZIP

GET `/v1/exports/{id}/download`

Download a finished workspace export as a ZIP

MCP tool: `download-data-export`

### Path parameters

`id` string required

### Response · 200

Returns a application/zip file.

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/exports/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/download', {
  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/exports/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/download",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## List imports, newest first

GET `/v1/imports`

List imports, newest first

MCP tool: `list-imports`

### 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` "import\_batch" required

`id` string required

`source` string required

`kind` string required

`filename` null | string required

`status` string required

`report` object required

`format` string

`sections` object required

`contacts` object

`bank` object

`vouchers` object

`orders` object

`offers` object

`stock_documents` object

`stock` object

`accounts` object

`postings` object

`dimensions` object

`price_lists` object

`journal` object

`invoices` object

`opening_balances` object

`fixed_assets` object

`enquiries` object

`productions` object

`sale_vouchers` object

`stock_transfers` object

`internal_documents` object

`product_data` object

`money` object

`income` object

`expenses` object

`payables` object

`receivables` object

`warnings` string\[\]

`sourceIco` null | string

`application` null | string

`unsupported` object

`claim` integer

`balanceItems` integer

`balanced` boolean

`debitHaler` integer

`creditHaler` integer

`openingDate` null | string date

`unknownColumns` string\[\]

`taxBaseSoFarHaler` integer

`result` null | object required

`lines` integer

`journal` integer

`items` integer

`offers` integer

`orders` integer

`prices` integer

`accounts` integer

`archived` integer

`contacts` integer

`invoices` integer

`postings` integer

`vouchers` integer

`enquiries` integer

`movements` integer

`dimensions` integer

`priceLists` integer

`warehouses` integer

`productions` integer

`bankAccounts` integer

`saleVouchers` integer

`bankMovements` integer

`cashRegisters` integer

`stockDocuments` integer

`stockTransfers` integer

`contactsUpdated` integer

`fixedAssets` integer

`gpsr` integer

`customFields` integer

`recyclingFees` integer

`income` integer

`expenses` integer

`payables` integer

`registers` integer

`receivables` integer

`error` null | string required

`createdAt` string required date-time

`appliedAt` null | string required date-time

`undoneAt` null | string required date-time

`undo` object

`removed` object required

`contact` integer

`dimension` integer

`invoice` integer

`item` integer

`warehouse` integer

`asset` integer

`stock_document` integer

`sales_document` integer

`imported_document` integer

`gpsr_record` integer

`recycling_fee` integer

`custom_field` integer

`received_invoice` integer

`cash_book_entry` integer

`book_balance_opening` integer

`reversedEntries` integer required

`keptAccounts` integer required

`keptDimensions` 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/imports \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/imports', {
  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/imports",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Upload a POHODA XML, XLSX or CSV file and get a dry-run report of what importing it would do. Changes nothing yet.

POST `/v1/imports`

Upload a POHODA XML, XLSX or CSV file and get a dry-run report of what importing it would do. Changes nothing yet.. source=pohoda reads a dataPack or responsePack: adresář, faktury, zásoby, účetní deník, pokladna, banka, objednávky, nabídky, příjemky, výdejky, převodky, výroba, prodejky, poptávky, interní doklady, ceníky, účtová osnova, předkontace, střediska, činnosti, zakázky. With kind=opening\_from\_journal it turns a deník into opening balances at openingDate. source=tabular needs kind contacts, opening\_balances or fixed\_assets.

MCP tool: `create-import`

### Request body

`source` "pohoda" | "tabular" required

`kind` "contacts" | "opening\_balances" | "fixed\_assets" | "opening\_from\_journal"

`filename` string required max 200 chars

`fileBase64` string required max 62914560 chars

File content encoded as base64.

`openingDate` string YYYY-MM-DD

Date as YYYY-MM-DD.

### Response · 201

`id` string required

`source` string required

`kind` string required

`filename` null | string required

`status` string required

`report` object required

`format` string

`sections` object required

`contacts` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`bank` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`vouchers` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`orders` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`offers` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`stock_documents` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`stock` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`accounts` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`postings` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`dimensions` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`price_lists` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`journal` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`invoices` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`opening_balances` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`fixed_assets` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`enquiries` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`productions` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`sale_vouchers` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`stock_transfers` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`internal_documents` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`product_data` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`money` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` any\[\] required

`warnings` any\[\] required

`income` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`expenses` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`payables` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`receivables` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`warnings` string\[\]

`sourceIco` null | string

`application` null | string

`unsupported` object

`claim` integer

`balanceItems` integer

`balanced` boolean

`debitHaler` integer

`creditHaler` integer

`openingDate` null | string date

`unknownColumns` string\[\]

`taxBaseSoFarHaler` integer

`result` null | object required

`lines` integer

`journal` integer

`items` integer

`offers` integer

`orders` integer

`prices` integer

`accounts` integer

`archived` integer

`contacts` integer

`invoices` integer

`postings` integer

`vouchers` integer

`enquiries` integer

`movements` integer

`dimensions` integer

`priceLists` integer

`warehouses` integer

`productions` integer

`bankAccounts` integer

`saleVouchers` integer

`bankMovements` integer

`cashRegisters` integer

`stockDocuments` integer

`stockTransfers` integer

`contactsUpdated` integer

`fixedAssets` integer

`gpsr` integer

`customFields` integer

`recyclingFees` integer

`income` integer

`expenses` integer

`payables` integer

`registers` integer

`receivables` integer

`error` null | string required

`createdAt` string required date-time

`appliedAt` null | string required date-time

`undoneAt` null | string required date-time

`undo` object

`removed` object required

`contact` integer

`dimension` integer

`invoice` integer

`item` integer

`warehouse` integer

`asset` integer

`stock_document` integer

`sales_document` integer

`imported_document` integer

`gpsr_record` integer

`recycling_fee` integer

`custom_field` integer

`received_invoice` integer

`cash_book_entry` integer

`book_balance_opening` integer

`reversedEntries` integer required

`keptAccounts` integer required

`keptDimensions` integer required

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

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

```python
import os
import requests

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

## Get an import with its dry-run report and result

GET `/v1/imports/{id}`

Get an import with its dry-run report and result

MCP tool: `get-import`

### Path parameters

`id` string required

### Response · 200

`id` string required

`source` string required

`kind` string required

`filename` null | string required

`status` string required

`report` object required

`format` string

`sections` object required

`contacts` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`bank` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`vouchers` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`orders` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`offers` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`stock_documents` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`stock` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`accounts` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`postings` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`dimensions` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`price_lists` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`journal` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`invoices` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`opening_balances` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`fixed_assets` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`enquiries` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`productions` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`sale_vouchers` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`stock_transfers` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`internal_documents` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`product_data` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`money` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` any\[\] required

`warnings` any\[\] required

`income` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`expenses` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`payables` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`receivables` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`warnings` string\[\]

`sourceIco` null | string

`application` null | string

`unsupported` object

`claim` integer

`balanceItems` integer

`balanced` boolean

`debitHaler` integer

`creditHaler` integer

`openingDate` null | string date

`unknownColumns` string\[\]

`taxBaseSoFarHaler` integer

`result` null | object required

`lines` integer

`journal` integer

`items` integer

`offers` integer

`orders` integer

`prices` integer

`accounts` integer

`archived` integer

`contacts` integer

`invoices` integer

`postings` integer

`vouchers` integer

`enquiries` integer

`movements` integer

`dimensions` integer

`priceLists` integer

`warehouses` integer

`productions` integer

`bankAccounts` integer

`saleVouchers` integer

`bankMovements` integer

`cashRegisters` integer

`stockDocuments` integer

`stockTransfers` integer

`contactsUpdated` integer

`fixedAssets` integer

`gpsr` integer

`customFields` integer

`recyclingFees` integer

`income` integer

`expenses` integer

`payables` integer

`registers` integer

`receivables` integer

`error` null | string required

`createdAt` string required date-time

`appliedAt` null | string required date-time

`undoneAt` null | string required date-time

`undo` object

`removed` object required

`contact` integer

`dimension` integer

`invoice` integer

`item` integer

`warehouse` integer

`asset` integer

`stock_document` integer

`sales_document` integer

`imported_document` integer

`gpsr_record` integer

`recycling_fee` integer

`custom_field` integer

`received_invoice` integer

`cash_book_entry` integer

`book_balance_opening` integer

`reversedEntries` integer required

`keptAccounts` integer required

`keptDimensions` integer required

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/imports/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/imports/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Run an import after its dry run. All or nothing. Posting a journal or opening balances writes to the books.

POST `/v1/imports/{id}/apply`

Run an import after its dry run. All or nothing. Posting a journal or opening balances writes to the books.

MCP tool: `apply-import`

### Path parameters

`id` string required

### Request body

`sections` "accounts" | "postings" | "dimensions" | "contacts" | "stock" | "price\_lists" | "invoices" | "vouchers" | "bank" | "orders" | "offers" | "stock\_documents" | "journal"\[\]

`importStockQuantities` boolean default `true`

### Response · 202

`id` string required

`source` string required

`kind` string required

`filename` null | string required

`status` string required

`report` object required

`format` string

`sections` object required

`contacts` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`bank` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`vouchers` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`orders` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`offers` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`stock_documents` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`stock` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`accounts` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`postings` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`dimensions` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`price_lists` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`journal` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`invoices` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`opening_balances` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`fixed_assets` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`enquiries` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`productions` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`sale_vouchers` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`stock_transfers` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`internal_documents` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`product_data` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`money` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` any\[\] required

`warnings` any\[\] required

`income` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`expenses` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`payables` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`receivables` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`warnings` string\[\]

`sourceIco` null | string

`application` null | string

`unsupported` object

`claim` integer

`balanceItems` integer

`balanced` boolean

`debitHaler` integer

`creditHaler` integer

`openingDate` null | string date

`unknownColumns` string\[\]

`taxBaseSoFarHaler` integer

`result` null | object required

`lines` integer

`journal` integer

`items` integer

`offers` integer

`orders` integer

`prices` integer

`accounts` integer

`archived` integer

`contacts` integer

`invoices` integer

`postings` integer

`vouchers` integer

`enquiries` integer

`movements` integer

`dimensions` integer

`priceLists` integer

`warehouses` integer

`productions` integer

`bankAccounts` integer

`saleVouchers` integer

`bankMovements` integer

`cashRegisters` integer

`stockDocuments` integer

`stockTransfers` integer

`contactsUpdated` integer

`fixedAssets` integer

`gpsr` integer

`customFields` integer

`recyclingFees` integer

`income` integer

`expenses` integer

`payables` integer

`registers` integer

`receivables` integer

`error` null | string required

`createdAt` string required date-time

`appliedAt` null | string required date-time

`undoneAt` null | string required date-time

`undo` object

`removed` object required

`contact` integer

`dimension` integer

`invoice` integer

`item` integer

`warehouse` integer

`asset` integer

`stock_document` integer

`sales_document` integer

`imported_document` integer

`gpsr_record` integer

`recycling_fee` integer

`custom_field` integer

`received_invoice` integer

`cash_book_entry` integer

`book_balance_opening` integer

`reversedEntries` integer required

`keptAccounts` integer required

`keptDimensions` integer required

```bash
curl -X POST https://api.damedoklad.cz/v1/imports/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/apply \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "sections": [
    "accounts"
  ],
  "importStockQuantities": true
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/imports/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/apply', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "sections": [
      "accounts"
    ],
    "importStockQuantities": true
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/imports/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/apply",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "sections": [
            "accounts"
        ],
        "importStockQuantities": True
    },
)
data = response.json()
```

## Compare what a POHODA file says with what is in the books now, section by section: counts, totals, missing documents and differences

GET `/v1/imports/{id}/reconciliation`

Compare what a POHODA file says with what is in the books now, section by section: counts, totals, missing documents and differences

MCP tool: `get-import-reconciliation`

### Path parameters

`id` string required

### Response · 200

`id` string required

`status` string required

`balanced` boolean required

`sections` object\[\] required

`key` string required

`label` null | string required

`pohodaCount` integer required

`oursCount` integer required

`totals` object\[\] required

`currency` null | string required

`pohodaHaler` integer required

`oursHaler` integer required

`differenceHaler` integer required

`missing` object\[\] required

`number` null | string required

`currency` null | string

`pohodaHaler` integer

`different` object\[\] required

`number` null | string required

`currency` null | string required

`pohodaHaler` integer required

`oursHaler` integer required

`differenceHaler` integer required

`skipped` integer required

`balanced` boolean required

`accounts` object\[\] required

`accountNumber` null | string required

`pohodaDebitHaler` integer required

`pohodaCreditHaler` integer required

`oursDebitHaler` integer required

`oursCreditHaler` integer required

`differenceHaler` integer required

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/imports/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reconciliation', {
  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/imports/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reconciliation",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Say whether an applied import can still be undone, and what stands in the way

GET `/v1/imports/{id}/undo`

Say whether an applied import can still be undone, and what stands in the way

MCP tool: `get-import-undo-check`

### Path parameters

`id` string required

### Response · 200

`id` string required

`possible` boolean required

`reason` null | string required

`blockers` object\[\] required

`objectType` null | string required

`objectId` null | string required

`reason` null | string required

`counts` object required

`contact` integer

`dimension` integer

`invoice` integer

`item` integer

`warehouse` integer

`received_invoice` integer

`blockerCount` integer

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/imports/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/undo', {
  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/imports/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/undo",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Undo a whole import while nothing has been built on it. Removes what it created and reverses what it posted. All or nothing.

POST `/v1/imports/{id}/undo`

Undo a whole import while nothing has been built on it. Removes what it created and reverses what it posted. All or nothing.

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

MCP tool: `undo-import`

### Path parameters

`id` string required

### Response · 200

`id` string required

`source` string required

`kind` string required

`filename` null | string required

`status` string required

`report` object required

`format` string

`sections` object required

`contacts` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`bank` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`vouchers` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`orders` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`offers` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`stock_documents` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`stock` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`accounts` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`postings` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`dimensions` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`price_lists` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`journal` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`invoices` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`opening_balances` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`fixed_assets` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`enquiries` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`productions` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`sale_vouchers` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`stock_transfers` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`internal_documents` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`product_data` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`money` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` any\[\] required

`warnings` any\[\] required

`income` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`expenses` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`payables` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`receivables` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`warnings` string\[\]

`sourceIco` null | string

`application` null | string

`unsupported` object

`claim` integer

`balanceItems` integer

`balanced` boolean

`debitHaler` integer

`creditHaler` integer

`openingDate` null | string date

`unknownColumns` string\[\]

`taxBaseSoFarHaler` integer

`result` null | object required

`lines` integer

`journal` integer

`items` integer

`offers` integer

`orders` integer

`prices` integer

`accounts` integer

`archived` integer

`contacts` integer

`invoices` integer

`postings` integer

`vouchers` integer

`enquiries` integer

`movements` integer

`dimensions` integer

`priceLists` integer

`warehouses` integer

`productions` integer

`bankAccounts` integer

`saleVouchers` integer

`bankMovements` integer

`cashRegisters` integer

`stockDocuments` integer

`stockTransfers` integer

`contactsUpdated` integer

`fixedAssets` integer

`gpsr` integer

`customFields` integer

`recyclingFees` integer

`income` integer

`expenses` integer

`payables` integer

`registers` integer

`receivables` integer

`error` null | string required

`createdAt` string required date-time

`appliedAt` null | string required date-time

`undoneAt` null | string required date-time

`undo` object

`removed` object required

`contact` integer

`dimension` integer

`invoice` integer

`item` integer

`warehouse` integer

`asset` integer

`stock_document` integer

`sales_document` integer

`imported_document` integer

`gpsr_record` integer

`recycling_fee` integer

`custom_field` integer

`received_invoice` integer

`cash_book_entry` integer

`book_balance_opening` integer

`reversedEntries` integer required

`keptAccounts` integer required

`keptDimensions` integer required

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/imports/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/undo', {
  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/imports/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/undo",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## POHODA documents kept as history without an agenda of their own: interní doklady and received enquiries

GET `/v1/imports/documents`

POHODA documents kept as history without an agenda of their own: interní doklady and received enquiries

MCP tool: `list-imported-documents`

### Query parameters

`kind` "internal\_document" | "received\_enquiry"

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

### Response · 200

`data` object\[\] required

`object` "imported\_document" required

`id` string required

`kind` string required

`number` string required

`date` string required date

`description` null | string required

`contactName` null | string required

`currency` string required

`netHaler` integer required

`vatHaler` integer required

`totalHaler` integer required

`lines` object\[\] required

`unit` null | string required

`vatRate` integer required

`netHaler` integer required

`vatHaler` integer required

`description` null | string required

`quantityMilli` 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/imports/documents \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/imports/documents', {
  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/imports/documents",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Mid-year transition for tax records and single entry: balances of accounts and registers, open receivables and payables, income and expenses so far. Returns a dry-run report. Changes nothing until the import is applied

POST `/v1/imports/mid-year`

Mid-year transition for tax records and single entry: balances of accounts and registers, open receivables and payables, income and expenses so far. Returns a dry-run report. Changes nothing until the import is applied

MCP tool: `create-mid-year-transition`

### Request body

`openingDate` string required YYYY-MM-DD

Date as YYYY-MM-DD.

`bankAccounts` object\[\]

`id` string required

`balanceHaler` integer required min -9007199254740991 max 9007199254740991

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

`cashRegisters` object\[\]

`id` string required

`balanceHaler` integer required min 0 max 9007199254740991

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

`receivables` object\[\]

`number` string required max 60 chars

`contactName` string required max 200 chars

`ico` string

Czech company number (IČO), 8 digits.

`issueDate` string required YYYY-MM-DD

Date as YYYY-MM-DD.

`dueDate` string YYYY-MM-DD

Date as YYYY-MM-DD.

`amountHaler` integer required min 1 max 9007199254740991

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

`vatHaler` integer min 0 max 9007199254740991

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

`payables` object\[\]

`number` string required max 60 chars

`contactName` string required max 200 chars

`ico` string

Czech company number (IČO), 8 digits.

`issueDate` string required YYYY-MM-DD

Date as YYYY-MM-DD.

`dueDate` string YYYY-MM-DD

Date as YYYY-MM-DD.

`amountHaler` integer required min 1 max 9007199254740991

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

`vatHaler` integer min 0 max 9007199254740991

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

`income` object\[\]

`description` string required max 200 chars

`amountHaler` integer required min 1 max 9007199254740991

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

`vatHaler` integer min 0 max 9007199254740991

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

`classification` "income\_taxable" | "income\_exempt" | "expense\_deductible" | "expense\_nondeductible"

`category` string max 60 chars

`activityKind` "main" | "economic"

`moneyAccount` "bank" | "cash"

`expenses` object\[\]

`description` string required max 200 chars

`amountHaler` integer required min 1 max 9007199254740991

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

`vatHaler` integer min 0 max 9007199254740991

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

`classification` "income\_taxable" | "income\_exempt" | "expense\_deductible" | "expense\_nondeductible"

`category` string max 60 chars

`activityKind` "main" | "economic"

`moneyAccount` "bank" | "cash"

### Response · 201

`id` string required

`source` string required

`kind` string required

`filename` null | string required

`status` string required

`report` object required

`format` string

`sections` object required

`contacts` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`bank` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`vouchers` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`orders` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`offers` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`stock_documents` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`stock` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`accounts` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`postings` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`dimensions` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`price_lists` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`journal` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`invoices` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`opening_balances` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`fixed_assets` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`enquiries` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`productions` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`sale_vouchers` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`stock_transfers` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`internal_documents` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`product_data` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`money` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` any\[\] required

`warnings` any\[\] required

`income` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`expenses` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`payables` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`receivables` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`warnings` string\[\]

`sourceIco` null | string

`application` null | string

`unsupported` object

`claim` integer

`balanceItems` integer

`balanced` boolean

`debitHaler` integer

`creditHaler` integer

`openingDate` null | string date

`unknownColumns` string\[\]

`taxBaseSoFarHaler` integer

`result` null | object required

`lines` integer

`journal` integer

`items` integer

`offers` integer

`orders` integer

`prices` integer

`accounts` integer

`archived` integer

`contacts` integer

`invoices` integer

`postings` integer

`vouchers` integer

`enquiries` integer

`movements` integer

`dimensions` integer

`priceLists` integer

`warehouses` integer

`productions` integer

`bankAccounts` integer

`saleVouchers` integer

`bankMovements` integer

`cashRegisters` integer

`stockDocuments` integer

`stockTransfers` integer

`contactsUpdated` integer

`fixedAssets` integer

`gpsr` integer

`customFields` integer

`recyclingFees` integer

`income` integer

`expenses` integer

`payables` integer

`registers` integer

`receivables` integer

`error` null | string required

`createdAt` string required date-time

`appliedAt` null | string required date-time

`undoneAt` null | string required date-time

`undo` object

`removed` object required

`contact` integer

`dimension` integer

`invoice` integer

`item` integer

`warehouse` integer

`asset` integer

`stock_document` integer

`sales_document` integer

`imported_document` integer

`gpsr_record` integer

`recycling_fee` integer

`custom_field` integer

`received_invoice` integer

`cash_book_entry` integer

`book_balance_opening` integer

`reversedEntries` integer required

`keptAccounts` integer required

`keptDimensions` integer required

```bash
curl -X POST https://api.damedoklad.cz/v1/imports/mid-year \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "openingDate": "2026-10-30"
}'
```

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

```python
import os
import requests

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

## Type opening balances for a mid-year switch and get a dry-run report. Changes nothing until the import is applied.

POST `/v1/imports/opening-balances`

Type opening balances for a mid-year switch and get a dry-run report. Changes nothing until the import is applied.

MCP tool: `create-typed-opening-balances`

### Request body

`openingDate` string required YYYY-MM-DD

Date as YYYY-MM-DD.

`lines` object\[\] required

`accountNumber` string required

Account number from the chart of accounts, for example 311. list-accounts lists them.

`accountName` string max 200 chars

`debitHaler` integer min 0 max 9007199254740991 default `0`

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

`creditHaler` integer min 0 max 9007199254740991 default `0`

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

### Response · 201

`id` string required

`source` string required

`kind` string required

`filename` null | string required

`status` string required

`report` object required

`format` string

`sections` object required

`contacts` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`bank` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`vouchers` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`orders` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`offers` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`stock_documents` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`stock` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`accounts` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`postings` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`dimensions` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`price_lists` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`journal` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`invoices` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`opening_balances` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`fixed_assets` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`enquiries` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`productions` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`sale_vouchers` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`stock_transfers` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`internal_documents` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`product_data` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`money` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` any\[\] required

`warnings` any\[\] required

`income` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` string\[\] required

`expenses` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` any\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`payables` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`receivables` object

`skip` integer required

`label` null | string required

`total` integer required

`create` integer required

`errors` string\[\] required

`update` integer required

`samples` object\[\] required

`warnings` any\[\] required

`warnings` string\[\]

`sourceIco` null | string

`application` null | string

`unsupported` object

`claim` integer

`balanceItems` integer

`balanced` boolean

`debitHaler` integer

`creditHaler` integer

`openingDate` null | string date

`unknownColumns` string\[\]

`taxBaseSoFarHaler` integer

`result` null | object required

`lines` integer

`journal` integer

`items` integer

`offers` integer

`orders` integer

`prices` integer

`accounts` integer

`archived` integer

`contacts` integer

`invoices` integer

`postings` integer

`vouchers` integer

`enquiries` integer

`movements` integer

`dimensions` integer

`priceLists` integer

`warehouses` integer

`productions` integer

`bankAccounts` integer

`saleVouchers` integer

`bankMovements` integer

`cashRegisters` integer

`stockDocuments` integer

`stockTransfers` integer

`contactsUpdated` integer

`fixedAssets` integer

`gpsr` integer

`customFields` integer

`recyclingFees` integer

`income` integer

`expenses` integer

`payables` integer

`registers` integer

`receivables` integer

`error` null | string required

`createdAt` string required date-time

`appliedAt` null | string required date-time

`undoneAt` null | string required date-time

`undo` object

`removed` object required

`contact` integer

`dimension` integer

`invoice` integer

`item` integer

`warehouse` integer

`asset` integer

`stock_document` integer

`sales_document` integer

`imported_document` integer

`gpsr_record` integer

`recycling_fee` integer

`custom_field` integer

`received_invoice` integer

`cash_book_entry` integer

`book_balance_opening` integer

`reversedEntries` integer required

`keptAccounts` integer required

`keptDimensions` integer required

```bash
curl -X POST https://api.damedoklad.cz/v1/imports/opening-balances \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "openingDate": "2026-10-30",
  "lines": [
    {
      "accountNumber": "string"
    }
  ]
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/imports/opening-balances', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "openingDate": "2026-10-30",
    "lines": [
      {
        "accountNumber": "string"
      }
    ]
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/imports/opening-balances",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "openingDate": "2026-10-30",
        "lines": [
            {
                "accountNumber": "string"
            }
        ]
    },
)
data = response.json()
```

## Get the e-mail address that puts received attachments into this queue

GET `/v1/inbox/address`

Get the e-mail address that puts received attachments into this queue

MCP tool: `get-inbox-address`

### Response · 200

`address` null | string required

`enabled` boolean required

`aiEnabled` boolean

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/inbox/address', {
  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/inbox/address",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Replace the company address with a new one, for when the old one leaked. Mail to the old address stops being accepted.

POST `/v1/inbox/address/rotate`

Replace the company address with a new one, for when the old one leaked. Mail to the old address stops being accepted.

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

MCP tool: `rotate-inbox-address`

### Response · 200

`address` null | string required

`enabled` boolean required

`aiEnabled` boolean

```bash
curl -X POST https://api.damedoklad.cz/v1/inbox/address/rotate \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/inbox/address/rotate', {
  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/inbox/address/rotate",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## List received documents in the queue. By default those not finished yet.

GET `/v1/inbox/documents`

List received documents in the queue. By default those not finished yet.

MCP tool: `list-inbox-documents`

### Query parameters

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`status` "new" | "done" | "discarded"

### Response · 200

`data` object\[\] required

`object` "inbox\_document" required

`id` string required

`filename` string required

`source` string required

`sender` null | string required

`subject` null | string required

`status` string required

`fileId` string required

`extractionSource` null | string required

`extraction` null | object required

`iban` string | null

`dueDate` null | string date

`bankCode` null | string

`currency` null | string

`netHaler` integer | null required

`vatHaler` integer | null required

`vatLines` object\[\] required

`vatRate` integer required

`netHaler` integer required

`vatHaler` integer | null required

`issueDate` null | string required date

`totalHaler` integer | null required

`supplierDic` null | string

`supplierIco` null | string

`documentType` integer | null

`payableHaler` integer | null

`supplierCity` any

Null in every recorded response.

`supplierName` null | string required

`taxPointDate` null | string date

`accountNumber` null | string

`documentNumber` null | string required

`supplierStreet` any

Null in every recorded response.

`variableSymbol` null | string

`supplierPostalCode` any

Null in every recorded response.

`isInvoice` boolean

`extractionError` null | string required

`receivedInvoiceId` null | string required

`supplierAdvanceId` null | string required

`requestId` null | string required

`hasCompanion` boolean required

`createdAt` string required date-time

`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/inbox/documents \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/inbox/documents', {
  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/inbox/documents",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Add a received document (PDF, image, or ISDOC, base64, up to 25 MB) to the queue. Values are read from it automatically.

POST `/v1/inbox/documents`

Add a received document (PDF, image, or ISDOC, base64, up to 25 MB) to the queue. Values are read from it automatically.

MCP tool: `upload-inbox-document`

### Request body

`requestId` string max 64 chars

ID of the request.

`filename` string required max 200 chars

`contentType` string max 100 chars

`fileBase64` string required max 62914560 chars

File content encoded as base64.

### Response · 201

`id` string required

`filename` string required

`source` string required

`sender` null | string required

`subject` null | string required

`status` string required

`fileId` string required

`extractionSource` null | string required

`extraction` null | object required

`iban` string | null

`dueDate` null | string date

`bankCode` null | string

`currency` null | string

`netHaler` integer | null required

`vatHaler` integer | null required

`vatLines` object\[\] required

`vatRate` integer required

`netHaler` integer required

`vatHaler` integer | null required

`issueDate` null | string required date

`totalHaler` integer | null required

`supplierDic` null | string

`supplierIco` null | string

`documentType` integer | null

`payableHaler` integer | null

`supplierCity` any

Null in every recorded response.

`supplierName` null | string required

`taxPointDate` null | string date

`accountNumber` null | string

`documentNumber` null | string required

`supplierStreet` any

Null in every recorded response.

`variableSymbol` null | string

`supplierPostalCode` any

Null in every recorded response.

`isInvoice` boolean

`extractionError` null | string required

`receivedInvoiceId` null | string required

`supplierAdvanceId` null | string required

`requestId` null | string required

`hasCompanion` boolean required

`createdAt` string required date-time

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

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

```python
import os
import requests

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

## Get a received document with the values read from it

GET `/v1/inbox/documents/{id}`

Get a received document with the values read from it

MCP tool: `get-inbox-document`

### Path parameters

`id` string required

### Response · 200

`id` string required

`filename` string required

`source` string required

`sender` null | string required

`subject` null | string required

`status` string required

`fileId` string required

`extractionSource` null | string required

`extraction` null | object required

`iban` string | null

`dueDate` null | string date

`bankCode` null | string

`currency` null | string

`netHaler` integer | null required

`vatHaler` integer | null required

`vatLines` object\[\] required

`vatRate` integer required

`netHaler` integer required

`vatHaler` integer | null required

`issueDate` null | string required date

`totalHaler` integer | null required

`supplierDic` null | string

`supplierIco` null | string

`documentType` integer | null

`payableHaler` integer | null

`supplierCity` any

Null in every recorded response.

`supplierName` null | string required

`taxPointDate` null | string date

`accountNumber` null | string

`documentNumber` null | string required

`supplierStreet` any

Null in every recorded response.

`variableSymbol` null | string

`supplierPostalCode` any

Null in every recorded response.

`isInvoice` boolean

`extractionError` null | string required

`receivedInvoiceId` null | string required

`supplierAdvanceId` null | string required

`requestId` null | string required

`hasCompanion` boolean required

`createdAt` string required date-time

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/inbox/documents/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/inbox/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Correct the values read from a received document before creating the invoice

PATCH `/v1/inbox/documents/{id}`

Correct the values read from a received document before creating the invoice

MCP tool: `update-inbox-document`

### Path parameters

`id` string required

### Request body

`supplierName` string | null

`supplierIco` string | null

Czech company number (IČO), 8 digits.

`supplierDic` string | null

VAT number (DIČ), for example CZ12345678.

`documentNumber` string | null

`variableSymbol` string | null

`issueDate` string | null

Date as YYYY-MM-DD.

`taxPointDate` string | null

Date as YYYY-MM-DD.

`dueDate` string | null

Date as YYYY-MM-DD.

`currency` string | null

ISO 4217 currency code, for example CZK or EUR.

`netHaler` integer | null

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

`vatHaler` integer | null

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

`totalHaler` integer | null

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

`accountNumber` string | null

Account number from the chart of accounts, for example 311. list-accounts lists them.

`bankCode` string | null

`iban` string | null

IBAN without spaces.

### Response · 200

`id` string required

`filename` string required

`source` string required

`sender` null | string required

`subject` null | string required

`status` string required

`fileId` string required

`extractionSource` null | string required

`extraction` null | object required

`iban` string | null

`dueDate` null | string date

`bankCode` null | string

`currency` null | string

`netHaler` integer | null required

`vatHaler` integer | null required

`vatLines` object\[\] required

`vatRate` integer required

`netHaler` integer required

`vatHaler` integer | null required

`issueDate` null | string required date

`totalHaler` integer | null required

`supplierDic` null | string

`supplierIco` null | string

`documentType` integer | null

`payableHaler` integer | null

`supplierCity` any

Null in every recorded response.

`supplierName` null | string required

`taxPointDate` null | string date

`accountNumber` null | string

`documentNumber` null | string required

`supplierStreet` any

Null in every recorded response.

`variableSymbol` null | string

`supplierPostalCode` any

Null in every recorded response.

`isInvoice` boolean

`extractionError` null | string required

`receivedInvoiceId` null | string required

`supplierAdvanceId` null | string required

`requestId` null | string required

`hasCompanion` boolean required

`createdAt` string required date-time

```bash
curl -X PATCH https://api.damedoklad.cz/v1/inbox/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "supplierName": "Pekárna U Lípy s.r.o.",
  "supplierIco": "12345678",
  "supplierDic": "CZ12345678"
}'
```

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

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/inbox/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "supplierName": "Pekárna U Lípy s.r.o.",
        "supplierIco": "12345678",
        "supplierDic": "CZ12345678"
    },
)
data = response.json()
```

## Take a document out of the queue without creating anything. The file is kept.

POST `/v1/inbox/documents/{id}/discard`

Take a document out of the queue without creating anything. The file is kept.

MCP tool: `discard-inbox-document`

### Path parameters

`id` string required

### Response · 200

`id` string required

`filename` string required

`source` string required

`sender` null | string required

`subject` null | string required

`status` string required

`fileId` string required

`extractionSource` null | string required

`extraction` null | object required

`iban` string | null

`dueDate` null | string date

`bankCode` null | string

`currency` null | string

`netHaler` integer | null required

`vatHaler` integer | null required

`vatLines` object\[\] required

`vatRate` integer required

`netHaler` integer required

`vatHaler` integer | null required

`issueDate` null | string required date

`totalHaler` integer | null required

`supplierDic` null | string

`supplierIco` null | string

`documentType` integer | null

`payableHaler` integer | null

`supplierCity` any

Null in every recorded response.

`supplierName` null | string required

`taxPointDate` null | string date

`accountNumber` null | string

`documentNumber` null | string required

`supplierStreet` any

Null in every recorded response.

`variableSymbol` null | string

`supplierPostalCode` any

Null in every recorded response.

`isInvoice` boolean

`extractionError` null | string required

`receivedInvoiceId` null | string required

`supplierAdvanceId` null | string required

`requestId` null | string required

`hasCompanion` boolean required

`createdAt` string required date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/inbox/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/discard \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/inbox/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/discard', {
  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/inbox/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/discard",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Read the values from a received document again

POST `/v1/inbox/documents/{id}/extract`

Read the values from a received document again

MCP tool: `extract-inbox-document`

### Path parameters

`id` string required

### Response · 200

`id` string required

`filename` string required

`source` string required

`sender` null | string required

`subject` null | string required

`status` string required

`fileId` string required

`extractionSource` null | string required

`extraction` null | object required

`iban` string | null

`dueDate` null | string date

`bankCode` null | string

`currency` null | string

`netHaler` integer | null required

`vatHaler` integer | null required

`vatLines` object\[\] required

`vatRate` integer required

`netHaler` integer required

`vatHaler` integer | null required

`issueDate` null | string required date

`totalHaler` integer | null required

`supplierDic` null | string

`supplierIco` null | string

`documentType` integer | null

`payableHaler` integer | null

`supplierCity` any

Null in every recorded response.

`supplierName` null | string required

`taxPointDate` null | string date

`accountNumber` null | string

`documentNumber` null | string required

`supplierStreet` any

Null in every recorded response.

`variableSymbol` null | string

`supplierPostalCode` any

Null in every recorded response.

`isInvoice` boolean

`extractionError` null | string required

`receivedInvoiceId` null | string required

`supplierAdvanceId` null | string required

`requestId` null | string required

`hasCompanion` boolean required

`createdAt` string required date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/inbox/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/extract \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/inbox/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/extract', {
  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/inbox/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/extract",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Download the attachment of a received document

GET `/v1/inbox/documents/{id}/file`

Download the attachment of a received document

MCP tool: `get-inbox-document-file`

### Path parameters

`id` string required

### Response · 200

Returns a application/octet-stream file.

```bash
curl https://api.damedoklad.cz/v1/inbox/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/file \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/inbox/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/file', {
  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/inbox/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/file",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Create a received invoice from a document in the queue and attach the file. Posts to the books unless record is false.

POST `/v1/inbox/documents/{id}/received-invoice`

Create a received invoice from a document in the queue and attach the file. Posts to the books unless record is false.. Recording posts to the books. Confirm the supplier, number, dates and amounts with the user first.

MCP tool: `create-received-invoice-from-inbox`

### Path parameters

`id` string required

### Request body

`record` boolean default `true`

`confirmDuplicate` boolean

### Response · 201

`id` string required

`receivedInvoiceId` null | string

`totalHaler` integer | null required

`differenceHaler` integer required

`supplierAdvanceId` null | string

```bash
curl -X POST https://api.damedoklad.cz/v1/inbox/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/received-invoice \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "record": true,
  "confirmDuplicate": false
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/inbox/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/received-invoice', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "record": true,
    "confirmDuplicate": false
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/inbox/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/received-invoice",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "record": True,
        "confirmDuplicate": False
    },
)
data = response.json()
```

## Create an advance to a supplier from a document in the queue, such as a supplier's zálohová faktura read from ISDOC, and attach the file. Posts nothing until it is paid.

POST `/v1/inbox/documents/{id}/supplier-advance`

Create an advance to a supplier from a document in the queue, such as a supplier's zálohová faktura read from ISDOC, and attach the file. Posts nothing until it is paid.. A zálohová faktura is not a tax document: no VAT is claimed from it. The amounts become the lines of the advance; its payment and the supplier's tax document follow on the advance.

MCP tool: `create-supplier-advance-from-inbox`

### Path parameters

`id` string required

### Request body

`record` boolean default `true`

`confirmDuplicate` boolean

`advanceAccount` "151" | "152" | "153" | "314" | "051" | "052"

### Response · 201

`id` string required

`receivedInvoiceId` null | string

`totalHaler` integer | null required

`differenceHaler` integer required

`supplierAdvanceId` null | string

```bash
curl -X POST https://api.damedoklad.cz/v1/inbox/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/supplier-advance \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "record": true,
  "confirmDuplicate": false,
  "advanceAccount": "151"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/inbox/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/supplier-advance', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "record": true,
    "confirmDuplicate": false,
    "advanceAccount": "151"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/inbox/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/supplier-advance",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "record": True,
        "confirmDuplicate": False,
        "advanceAccount": "151"
    },
)
data = response.json()
```

## See who may send documents to the company address

GET `/v1/inbox/email-settings`

See who may send documents to the company address

MCP tool: `get-inbound-email-settings`

### Response · 200

`mode` string required

`allowList` string\[\] required

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/inbox/email-settings', {
  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/inbox/email-settings",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Set who may send documents to the company address: anyone, or only listed addresses and @domains. The company's own people are always allowed.

PUT `/v1/inbox/email-settings`

Set who may send documents to the company address: anyone, or only listed addresses and @domains. The company's own people are always allowed.

MCP tool: `update-inbound-email-settings`

### Request body

`mode` "any" | "allow\_list" required

`allowList` string\[\] default `[]`

### Response · 200

`mode` string required

`allowList` string\[\] required

```bash
curl -X PUT https://api.damedoklad.cz/v1/inbox/email-settings \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "mode": "any"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/inbox/email-settings', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "mode": "any"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.put(
    "https://api.damedoklad.cz/v1/inbox/email-settings",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "mode": "any"
    },
)
data = response.json()
```

## List what arrived at the company address, including mail that was refused or held no documents

GET `/v1/inbox/emails`

List what arrived at the company address, including mail that was refused or held no documents

MCP tool: `list-inbound-emails`

### 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` "inbound\_email" required

`id` string required

`sender` null | string required

`subject` null | string required

`status` string required

`receivedCount` integer required

`duplicateCount` integer required

`skipped` object\[\] required

`reason` null | string required

`filename` null | string required

`documentIds` string\[\] required

`createdAt` string required date-time

`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/inbox/emails \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/inbox/emails', {
  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/inbox/emails",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Count what is waiting to be finished: received documents in the queue, drafts, unmatched bank movements, overdue invoices

GET `/v1/inbox/summary`

Count what is waiting to be finished: received documents in the queue, drafts, unmatched bank movements, overdue invoices

MCP tool: `get-inbox-summary`

### Response · 200

`documents` integer required

`drafts` integer required

`movements` integer required

`overdue` integer required

`total` integer required

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/inbox/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/inbox/summary",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## One to-do list: documents to finish, drafts, overdue invoices, and upcoming tax deadlines, each with where to go next

GET `/v1/inbox/todo`

One to-do list: documents to finish, drafts, overdue invoices, and upcoming tax deadlines, each with where to go next

MCP tool: `list-inbox-todo`

### Query parameters

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

### Response · 200

`data` object\[\] required

`kind` string required

`id` string required

`title` null | string required

`subtitle` string

`amountHaler` integer | null

`currency` null | string

`date` null | string required date

`path` null | string required

`subtitleEn` string

`direction` string

`deadline` string

`titleEn` string

`selfAssess` boolean

`overdue` boolean

`approvalId` 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/inbox/todo \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/inbox/todo', {
  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/inbox/todo",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## List invitations nobody has accepted yet

GET `/v1/invitations`

List invitations nobody has accepted yet

MCP tool: `list-invitations`

### Query parameters

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

### Response · 200

`data` any\[\] 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/invitations \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/invitations', {
  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/invitations",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Cancel an invitation so its link stops working

DELETE `/v1/invitations/{id}`

Cancel an invitation so its link stops working

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

MCP tool: `revoke-invitation`

### Path parameters

`id` string required

### Response · 200

`id` string required

`deleted` boolean required

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/invitations/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/invitations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Send an invitation again with a new link and a fresh expiry

POST `/v1/invitations/{id}/resend`

Send an invitation again with a new link and a fresh expiry

MCP tool: `resend-invitation`

### Path parameters

`id` string required

### Response · 200

`id` string required

`email` null | string required

`role` string required

`accessRoleId` null | string

`expiresAt` string required date-time

`expired` boolean required

`createdAt` string required date-time

`token` string

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/invitations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/resend', {
  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/invitations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/resend",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## List the mailboxes read into K vyřízení, with when each was last read and any problem. Passwords are never returned

GET `/v1/mailboxes`

List the mailboxes read into K vyřízení, with when each was last read and any problem. Passwords are never returned

MCP tool: `list-mailboxes`

### 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` "mailbox" required

`id` string required

`provider` null | string required

`email` null | string required

`label` string | null required

`host` null | string required

`port` integer | null required

`security` null | string required

`username` null | string required

`folder` null | string required

`status` string required

`errorCode` null | string required

`lastSyncAt` null | string required date-time

`readFrom` string required date

`createdAt` string required date-time

`folders` string\[\]

`keepMessages` boolean

`smtpHost` null | string

`smtpPort` integer | null

`smtpSecurity` null | string

`smtpUsername` string | null

`sendingReady` boolean

`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/mailboxes \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/mailboxes', {
  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/mailboxes",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Connect a mailbox over IMAP with a password: tests the login first, stores the password encrypted, and from then on reads new attachments into K vyřízení. Nothing on the mail server changes

POST `/v1/mailboxes`

Connect a mailbox over IMAP with a password: tests the login first, stores the password encrypted, and from then on reads new attachments into K vyřízení. Nothing on the mail server changes. Only public servers on the standard ports. The company’s sender rules from the inbound e-mail settings apply. Reads back 30 days on the first run unless readFrom says otherwise.

MCP tool: `connect-mailbox`

### Request body

`email` string required email

`label` string | null

`host` string required min 3 chars max 253 chars

`port` integer min 1 max 65535

`security` "tls" | "starttls"

`username` string max 200 chars

`password` string required max 500 chars

`readFrom` string YYYY-MM-DD

Date as YYYY-MM-DD.

### Response · 201

`id` string required

`provider` null | string required

`email` null | string required

`label` string | null required

`host` null | string required

`port` integer | null required

`security` null | string required

`username` null | string required

`folder` null | string required

`status` string required

`errorCode` null | string required

`lastSyncAt` null | string required date-time

`readFrom` string required date

`createdAt` string required date-time

`folders` string\[\]

`keepMessages` boolean

`smtpHost` null | string

`smtpPort` integer | null

`smtpSecurity` null | string

`smtpUsername` string | null

`sendingReady` boolean

```bash
curl -X POST https://api.damedoklad.cz/v1/mailboxes \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "email": "info@example.cz",
  "host": "string",
  "password": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/mailboxes', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "email": "info@example.cz",
    "host": "string",
    "password": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/mailboxes",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "email": "info@example.cz",
        "host": "string",
        "password": "string"
    },
)
data = response.json()
```

## Rename a mailbox, pause it, give it a new password, choose which server folders are read, whether message text is kept, and its outgoing SMTP server. A new password is tested first

PATCH `/v1/mailboxes/{id}`

Rename a mailbox, pause it, give it a new password, choose which server folders are read, whether message text is kept, and its outgoing SMTP server. A new password is tested first

MCP tool: `update-mailbox`

### Path parameters

`id` string required

### Request body

`label` string | null

`password` string max 500 chars

`active` boolean

`folders` string\[\]

`keepMessages` boolean

`smtpHost` string | null

`smtpPort` integer | null

`smtpSecurity` "tls" | "starttls" | null

`smtpUsername` string | null

### Response · 200

`id` string required

`provider` null | string required

`email` null | string required

`label` string | null required

`host` null | string required

`port` integer | null required

`security` null | string required

`username` null | string required

`folder` null | string required

`status` string required

`errorCode` null | string required

`lastSyncAt` null | string required date-time

`readFrom` string required date

`createdAt` string required date-time

`folders` string\[\]

`keepMessages` boolean

`smtpHost` null | string

`smtpPort` integer | null

`smtpSecurity` null | string

`smtpUsername` string | null

`sendingReady` boolean

```bash
curl -X PATCH https://api.damedoklad.cz/v1/mailboxes/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "label": "string",
  "password": "string",
  "active": false
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/mailboxes/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "label": "string",
    "password": "string",
    "active": false
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/mailboxes/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "label": "string",
        "password": "string",
        "active": False
    },
)
data = response.json()
```

## Disconnect a mailbox and forget its password or token. Documents already in K vyřízení stay, and nothing on the mail server changes

DELETE `/v1/mailboxes/{id}`

Disconnect a mailbox and forget its password or token. Documents already in K vyřízení stay, and nothing on the mail server changes

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

MCP tool: `remove-mailbox`

### Path parameters

`id` string required

### Response · 200

`id` string required

`deleted` boolean required

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/mailboxes/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/mailboxes/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## List the folders on the mail server of a mailbox, to choose which are read. Asks the server, and changes nothing on it

GET `/v1/mailboxes/{id}/folders`

List the folders on the mail server of a mailbox, to choose which are read. Asks the server, and changes nothing on it

MCP tool: `list-mailbox-folders`

### Path parameters

`id` string required

### Query parameters

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

### Response · 200

`data` object\[\] required

`path` null | string required

`name` null | string required

`specialUse` 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/mailboxes/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/folders \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/mailboxes/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/folders', {
  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/mailboxes/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/folders",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Read a mailbox now instead of waiting for the next run. Says how many documents came, were refused, or were already there

POST `/v1/mailboxes/{id}/sync`

Read a mailbox now instead of waiting for the next run. Says how many documents came, were refused, or were already there

MCP tool: `sync-mailbox`

### Path parameters

`id` string required

### Response · 200

`id` string required

`status` string required

`errorCode` null | string

`received` integer required

`rejected` integer required

`duplicates` integer required

`skipped` integer required

`remaining` integer | null required

`unreadableFolders` string\[\]

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/mailboxes/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/sync', {
  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/mailboxes/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/sync",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Suggest the IMAP server for an e-mail address. A suggestion only: connecting proves it

POST `/v1/mailboxes/detect`

Suggest the IMAP server for an e-mail address. A suggestion only: connecting proves it

MCP tool: `detect-mailbox-server`

### Request body

`email` string required email

### Response · 200

`email` null | string required

`host` null | string required

`port` integer | null required

`security` null | string required

`username` null | string required

`known` boolean required

`suggestedProvider` string required

`smtpHost` null | string

`smtpPort` integer | null

`smtpSecurity` null | string

```bash
curl -X POST https://api.damedoklad.cz/v1/mailboxes/detect \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "email": "info@example.cz"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/mailboxes/detect', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "email": "info@example.cz"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/mailboxes/detect",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "email": "info@example.cz"
    },
)
data = response.json()
```

## List the mail of connected mailboxes, newest first: status unprocessed or done, direction in or out, one mailbox, or a search in sender, subject and text

GET `/v1/mailboxes/messages`

List the mail of connected mailboxes, newest first: status unprocessed or done, direction in or out, one mailbox, or a search in sender, subject and text

MCP tool: `list-mailbox-messages`

### 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.

`status` "unprocessed" | "done"

`direction` "in" | "out"

`mailboxId` string

ID of the mailbox. Find it with list-mailboxes.

### Response · 200

`data` object\[\] required

`object` "mailbox\_message" required

`id` string required

`mailboxId` null | string required

`mailboxEmail` string required

`folder` null | string required

`direction` string required

`status` string required

`fromAddress` null | string required

`fromName` null | string required

`to` string\[\] required

`cc` string\[\] required

`subject` null | string required

`sentAt` null | string required date-time

`preview` string required

`suspicious` boolean required

`attachments` object\[\] required

`filename` null | string required

`documentId` null | string required

`replyToId` null | string required

`doneAt` null | string required date-time

`createdAt` string required date-time

`text` string

`replyTo` string | null

`messageId` 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/mailboxes/messages \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/mailboxes/messages', {
  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/mailboxes/messages",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Write a new message from a connected mailbox, through its own SMTP server. It really goes out. Off until the operator switches sending on

POST `/v1/mailboxes/messages`

Write a new message from a connected mailbox, through its own SMTP server. It really goes out. Off until the operator switches sending on. Attachments in fileBase64, up to 25 MB together. The copy is kept here under direction=out. It is not added to the Sent folder on the mail server.

MCP tool: `send-mailbox-message`

### Request body

`mailboxId` string required

ID of the mailbox. Find it with list-mailboxes.

`to` string\[\] required

`cc` string\[\]

`subject` string required max 300 chars

`text` string required max 200000 chars

`attachments` object\[\]

`filename` string required max 255 chars

`contentType` string required max 120 chars

`fileBase64` string required

File content encoded as base64.

### Response · 201

`id` string required

`mailboxId` null | string required

`mailboxEmail` string required

`folder` null | string required

`direction` string required

`status` string required

`fromAddress` null | string required

`fromName` null | string required

`to` string\[\] required

`cc` string\[\] required

`subject` null | string required

`sentAt` null | string required date-time

`preview` string required

`suspicious` boolean required

`attachments` object\[\] required

`filename` null | string required

`documentId` null | string required

`replyToId` null | string required

`doneAt` null | string required date-time

`createdAt` string required date-time

`text` string

`replyTo` string | null

`messageId` null | string

```bash
curl -X POST https://api.damedoklad.cz/v1/mailboxes/messages \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "mailboxId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "to": [
    "2026-10-30"
  ],
  "subject": "string",
  "text": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/mailboxes/messages', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "mailboxId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "to": [
      "2026-10-30"
    ],
    "subject": "string",
    "text": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/mailboxes/messages",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "mailboxId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "to": [
            "2026-10-30"
        ],
        "subject": "string",
        "text": "string"
    },
)
data = response.json()
```

## Read one message with its text. The text is plain, never HTML, and an attachment that reached K vyřízení names its document

GET `/v1/mailboxes/messages/{id}`

Read one message with its text. The text is plain, never HTML, and an attachment that reached K vyřízení names its document

MCP tool: `get-mailbox-message`

### Path parameters

`id` string required

### Response · 200

`id` string required

`mailboxId` null | string required

`mailboxEmail` string required

`folder` null | string required

`direction` string required

`status` string required

`fromAddress` null | string required

`fromName` null | string required

`to` string\[\] required

`cc` string\[\] required

`subject` null | string required

`sentAt` null | string required date-time

`preview` string required

`suspicious` boolean required

`attachments` object\[\] required

`filename` null | string required

`documentId` null | string required

`replyToId` null | string required

`doneAt` null | string required date-time

`createdAt` string required date-time

`text` string

`replyTo` string | null

`messageId` null | string

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/mailboxes/messages/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/mailboxes/messages/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Move a message between Unprocessed and Done. This happens here only: nothing changes on the mail server

PATCH `/v1/mailboxes/messages/{id}`

Move a message between Unprocessed and Done. This happens here only: nothing changes on the mail server

MCP tool: `update-mailbox-message`

### Path parameters

`id` string required

### Request body

`status` "unprocessed" | "done" required

### Response · 200

`id` string required

`mailboxId` null | string required

`mailboxEmail` string required

`folder` null | string required

`direction` string required

`status` string required

`fromAddress` null | string required

`fromName` null | string required

`to` string\[\] required

`cc` string\[\] required

`subject` null | string required

`sentAt` null | string required date-time

`preview` string required

`suspicious` boolean required

`attachments` object\[\] required

`filename` null | string required

`documentId` null | string required

`replyToId` null | string required

`doneAt` null | string required date-time

`createdAt` string required date-time

`text` string

`replyTo` string | null

`messageId` null | string

```bash
curl -X PATCH https://api.damedoklad.cz/v1/mailboxes/messages/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "status": "unprocessed"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/mailboxes/messages/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "status": "unprocessed"
  }),
});
const data = await response.json();
```

```python
import os
import requests

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

## Delete a message from here. It stays on the mail server, and documents already in K vyřízení stay too. It does not come back, because reading has moved past it

DELETE `/v1/mailboxes/messages/{id}`

Delete a message from here. It stays on the mail server, and documents already in K vyřízení stay too. It does not come back, because reading has moved past it

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

MCP tool: `delete-mailbox-message`

### Path parameters

`id` string required

### Response · 200

`id` string required

`deleted` boolean required

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/mailboxes/messages/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/mailboxes/messages/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Forward a message with the attachments held in K vyřízení. An attachment that did not reach it was not kept, so it does not go along. It really goes out

POST `/v1/mailboxes/messages/{id}/forward`

Forward a message with the attachments held in K vyřízení. An attachment that did not reach it was not kept, so it does not go along. It really goes out

MCP tool: `forward-mailbox-message`

### Path parameters

`id` string required

### Request body

`to` string\[\] required

`cc` string\[\]

`text` string max 200000 chars

`attachments` object\[\]

`filename` string required max 255 chars

`contentType` string required max 120 chars

`fileBase64` string required

File content encoded as base64.

### Response · 201

`id` string required

`mailboxId` null | string required

`mailboxEmail` string required

`folder` null | string required

`direction` string required

`status` string required

`fromAddress` null | string required

`fromName` null | string required

`to` string\[\] required

`cc` string\[\] required

`subject` null | string required

`sentAt` null | string required date-time

`preview` string required

`suspicious` boolean required

`attachments` object\[\] required

`filename` null | string required

`documentId` null | string required

`replyToId` null | string required

`doneAt` null | string required date-time

`createdAt` string required date-time

`text` string

`replyTo` string | null

`messageId` null | string

```bash
curl -X POST https://api.damedoklad.cz/v1/mailboxes/messages/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/forward \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "to": [
    "2026-10-30"
  ]
}'
```

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

```python
import os
import requests

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

## Reply to a message from the mailbox it came to, quoting it and keeping the thread, and move it to Done. replyAll adds the others. It really goes out

POST `/v1/mailboxes/messages/{id}/reply`

Reply to a message from the mailbox it came to, quoting it and keeping the thread, and move it to Done. replyAll adds the others. It really goes out

MCP tool: `reply-to-mailbox-message`

### Path parameters

`id` string required

### Request body

`replyAll` boolean

`text` string required max 200000 chars

`attachments` object\[\]

`filename` string required max 255 chars

`contentType` string required max 120 chars

`fileBase64` string required

File content encoded as base64.

### Response · 201

`id` string required

`mailboxId` null | string required

`mailboxEmail` string required

`folder` null | string required

`direction` string required

`status` string required

`fromAddress` null | string required

`fromName` null | string required

`to` string\[\] required

`cc` string\[\] required

`subject` null | string required

`sentAt` null | string required date-time

`preview` string required

`suspicious` boolean required

`attachments` object\[\] required

`filename` null | string required

`documentId` null | string required

`replyToId` null | string required

`doneAt` null | string required date-time

`createdAt` string required date-time

`text` string

`replyTo` string | null

`messageId` null | string

```bash
curl -X POST https://api.damedoklad.cz/v1/mailboxes/messages/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reply \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "text": "string"
}'
```

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

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/mailboxes/messages/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reply",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "text": "string"
    },
)
data = response.json()
```

## Which kinds of mailbox can be connected here. IMAP always; Gmail and Microsoft 365 when the operator has registered an app

GET `/v1/mailboxes/providers`

Which kinds of mailbox can be connected here. IMAP always; Gmail and Microsoft 365 when the operator has registered an app

MCP tool: `get-mailbox-providers`

### Response · 200

`imap` boolean required

`gmail` boolean required

`microsoft365` boolean required

`sending` boolean

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/mailboxes/providers', {
  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/mailboxes/providers",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## List the people with access to this company and their roles

GET `/v1/members`

List the people with access to this company and their roles

MCP tool: `list-members`

### 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` "membership" required

`id` string required

`role` string required

`userId` null | string required

`workspaceId` string required

`email` null | string

`name` null | string

`totpEnabled` boolean

`lastUsedAt` null | string date-time

`joinedAt` string date-time

`isCurrentUser` boolean required

`accessRoleId` null | string

`accessRoleName` string

`access` null | object

`agendas` object required

`payroll` string

`contacts` string

`sales` string

`purchases` string

`bank` string

`cash` string

`ledger` string

`tax` string

`inventory` string

`assets` string

`travel` string

`agendas` string

`reports` string

`inbox` string

`administration` string

`scopes` object required

`warehouses` array | null required

`registers` array | null required

`accounts` array | null required

`series` array | null required

`centers` array | null

`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/members \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/members', {
  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/members",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Invite someone by e-mail. Sends a real e-mail; confirm the address and role with the user first.

POST `/v1/members`

Invite someone by e-mail. Sends a real e-mail; confirm the address and role with the user first.

MCP tool: `invite-member`

### Request body

`email` string required email

`role` "owner" | "accountant" | "invoicing" | "warehouse" | "readonly" | "custom" required

`accessRoleId` string

ID of the access role. Find it with list-access-roles.

### Response · 201

`id` string required

`email` null | string required

`role` string required

`accessRoleId` null | string

`expiresAt` string required date-time

`expired` boolean required

`createdAt` string required date-time

`token` string

```bash
curl -X POST https://api.damedoklad.cz/v1/members \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "email": "info@example.cz",
  "role": "owner"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/members', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "email": "info@example.cz",
    "role": "owner"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/members",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "email": "info@example.cz",
        "role": "owner"
    },
)
data = response.json()
```

## Change what someone may do in this company. The last owner cannot be demoted.

PATCH `/v1/members/{id}`

Change what someone may do in this company. The last owner cannot be demoted.

MCP tool: `update-member-role`

### Path parameters

`id` string required

### Request body

`role` "owner" | "accountant" | "invoicing" | "warehouse" | "readonly" | "custom" required

`accessRoleId` string

ID of the access role. Find it with list-access-roles.

### Response · 200

`id` string required

`role` string required

`userId` null | string required

`workspaceId` string required

`email` null | string

`name` null | string

`totpEnabled` boolean

`lastUsedAt` null | string date-time

`joinedAt` string date-time

`isCurrentUser` boolean required

`accessRoleId` null | string

`accessRoleName` string

`access` null | object

`agendas` object required

`payroll` string

`contacts` string

`sales` string

`purchases` string

`bank` string

`cash` string

`ledger` string

`tax` string

`inventory` string

`assets` string

`travel` string

`agendas` string

`reports` string

`inbox` string

`administration` string

`scopes` object required

`warehouses` array | null required

`registers` array | null required

`accounts` array | null required

`series` array | null required

`centers` array | null

```bash
curl -X PATCH https://api.damedoklad.cz/v1/members/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "role": "owner"
}'
```

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

```python
import os
import requests

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

## Remove someone from this company, or leave it yourself. Their API keys here are revoked. The last owner cannot be removed.

DELETE `/v1/members/{id}`

Remove someone from this company, or leave it yourself. Their API keys here are revoked. The last owner cannot be removed.

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

MCP tool: `remove-member`

### Path parameters

`id` string required

### Response · 200

`id` string required

`deleted` boolean required

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/members/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/members/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## What one person may do in this company: a fixed role written out as rights, or a custom role with its parent applied

GET `/v1/members/{id}/access`

What one person may do in this company: a fixed role written out as rights, or a custom role with its parent applied

MCP tool: `get-member-access`

### Path parameters

`id` string required

### Response · 200

`role` null | object required

`id` string required

`name` null | string required

`fixedRole` null | string required

`parent` null | object required

`id` string required

`name` null | string required

`agendas` object\[\] required

`key` string required

`level` string required

`inherited` boolean required

`scopes` object required

`warehouses` array | null required

`id` string required

`name` null | string required

`registers` any required

Null in every recorded response.

`accounts` any required

Null in every recorded response.

`series` any required

Null in every recorded response.

`centers` any required

Null in every recorded response.

`denied` object required

`formats` string\[\] required

`reports` object\[\] required

`key` string required

`cs` string required

`en` string required

`fixedOnly` string\[\] required

`members` string\[\] required

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/members/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/access', {
  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/members/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/access",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Get the membership and role of whoever is calling, and for a custom role the agendas and limits it has

GET `/v1/members/me`

Get the membership and role of whoever is calling, and for a custom role the agendas and limits it has

MCP tool: `get-current-member`

### Response · 200

`id` string required

`role` string required

`userId` null | string required

`workspaceId` string required

`email` null | string

`name` null | string

`totpEnabled` boolean

`lastUsedAt` null | string date-time

`joinedAt` string date-time

`isCurrentUser` boolean required

`accessRoleId` null | string

`accessRoleName` string

`access` null | object

`agendas` object required

`payroll` string

`contacts` string

`sales` string

`purchases` string

`bank` string

`cash` string

`ledger` string

`tax` string

`inventory` string

`assets` string

`travel` string

`agendas` string

`reports` string

`inbox` string

`administration` string

`scopes` object required

`warehouses` array | null required

`registers` array | null required

`accounts` array | null required

`series` array | null required

`centers` array | null

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/members/me', {
  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/members/me",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## List notifications for this company, newest first: tax and payroll deadlines coming up, overdue invoices, failed e-mails and webhooks, finished imports

GET `/v1/notifications`

List notifications for this company, newest first: tax and payroll deadlines coming up, overdue invoices, failed e-mails and webhooks, finished imports

MCP tool: `list-notifications`

### Query parameters

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`unread` "true" | "false"

### Response · 200

`data` object\[\] required

`object` "notification" required

`id` string required

`kind` string required

`severity` string required

`params` object required

`count` integer

`oldestDays` integer

`amountHaler` integer | null

`overDeadline` integer

`daysLeft` integer

`notAfter` string date

`period` string

`link` boolean

`what` string

`label` null | string

`status` string

`credential` string

`filename` null | string

`autoMatched` integer

`subject` null | string

`recipient` string

`result` null | object

`contacts` integer required

`contactsUpdated` integer required

`due` string

`unknown` integer

`key` string

`date` string date

`labelCs` string

`labelEn` string

`contactName` null | string

`dueOn` null | string date

`sent` integer

`failed` integer

`skipped` integer

`path` null | string required

`titleCs` string required

`titleEn` string required

`bodyCs` null | string required

`bodyEn` null | string required

`read` boolean required

`readAt` null | string required date-time

`createdAt` string required date-time

`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/notifications \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/notifications', {
  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/notifications",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Find contacts and documents (invoices, received invoices, proformas, advances to suppliers, credit notes, delivery notes) by name, number, IČO, DIČ or variable symbol, and by any custom field marked as searchable

GET `/v1/search`

Find contacts and documents (invoices, received invoices, proformas, advances to suppliers, credit notes, delivery notes) by name, number, IČO, DIČ or variable symbol, and by any custom field marked as searchable

MCP tool: `search`

### Query parameters

`q` string required max 100 chars

`limit` integer min 1 max 50

### Response · 200

`data` object\[\] required

`id` string required

`object` "contact" | "credit\_note" | "delivery\_note" | "invoice" | "item" | "proforma" | "received\_invoice" | "sales\_document" | "supplier\_advance" required

`title` null | string required

`subtitle` string required

`path` null | string required

`total` integer required

`hasMore` boolean required

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/search', {
  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/search",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Send a failed delivery again

POST `/v1/webhook-deliveries/{id}/retry`

Send a failed delivery again

MCP tool: `retry-webhook-delivery`

### Path parameters

`id` string required

### Response · 200

`id` string required

`endpointId` string required

`eventId` string required

`eventType` string required

`status` string required

`attempts` integer required

`nextAttemptAt` null | string required date-time

`responseStatus` integer | null required

`responseBody` null | string required

`durationMs` integer | null required

`error` null | string required

`isTest` boolean required

`payload` any required

`createdAt` string required date-time

`deliveredAt` null | string required date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/webhook-deliveries/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/retry \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/webhook-deliveries/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/retry', {
  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/webhook-deliveries/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/retry",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## List the event types a webhook can subscribe to. Payloads are in the \`webhooks\` section of /openapi.json

GET `/v1/webhook-events`

List the event types a webhook can subscribe to. Payloads are in the \`webhooks\` section of /openapi.json

MCP tool: `list-webhook-events`

### 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` "webhook\_event" required

`id` string required

`module` string required

`summary` 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/webhook-events \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/webhook-events', {
  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/webhook-events",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## List webhook endpoints

GET `/v1/webhooks`

List webhook endpoints

MCP tool: `list-webhook-endpoints`

### 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` "webhook\_endpoint" required

`id` string required

`url` string required

`description` null | string required

`events` string\[\] required

`enabled` boolean required

`createdAt` string required date-time

`updatedAt` string required date-time

`secret` 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/webhooks \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/webhooks', {
  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/webhooks",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Create a webhook endpoint. The signing secret is returned once.

POST `/v1/webhooks`

Create a webhook endpoint. The signing secret is returned once.

MCP tool: `create-webhook-endpoint`

### Request body

`url` string required max 2000 chars uri

`description` string | null

`events` string\[\] default `["*"]`

### Response · 201

`id` string required

`url` string required

`description` null | string required

`events` string\[\] required

`enabled` boolean required

`createdAt` string required date-time

`updatedAt` string required date-time

`secret` string

```bash
curl -X POST https://api.damedoklad.cz/v1/webhooks \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "url": "string"
}'
```

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

```python
import os
import requests

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

## Get a webhook endpoint

GET `/v1/webhooks/{id}`

Get a webhook endpoint

MCP tool: `get-webhook-endpoint`

### Path parameters

`id` string required

### Response · 200

`id` string required

`url` string required

`description` null | string required

`events` string\[\] required

`enabled` boolean required

`createdAt` string required date-time

`updatedAt` string required date-time

`secret` string

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/webhooks/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/webhooks/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Update a webhook endpoint: URL, events, or pause it

PATCH `/v1/webhooks/{id}`

Update a webhook endpoint: URL, events, or pause it

MCP tool: `update-webhook-endpoint`

### Path parameters

`id` string required

### Request body

`url` string max 2000 chars uri

`description` string | null

`events` string\[\]

`enabled` boolean

### Response · 200

`id` string required

`url` string required

`description` null | string required

`events` string\[\] required

`enabled` boolean required

`createdAt` string required date-time

`updatedAt` string required date-time

`secret` string

```bash
curl -X PATCH https://api.damedoklad.cz/v1/webhooks/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "url": "string",
  "description": "Pečivo, říjen",
  "events": [
    "string"
  ]
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/webhooks/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "url": "string",
    "description": "Pečivo, říjen",
    "events": [
      "string"
    ]
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/webhooks/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "url": "string",
        "description": "Pečivo, říjen",
        "events": [
            "string"
        ]
    },
)
data = response.json()
```

## Delete a webhook endpoint and its delivery log

DELETE `/v1/webhooks/{id}`

Delete a webhook endpoint and its delivery log

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

MCP tool: `delete-webhook-endpoint`

### Path parameters

`id` string required

### Response · 200

`id` string required

`deleted` boolean required

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/webhooks/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/webhooks/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## List delivery attempts of a webhook endpoint, newest first

GET `/v1/webhooks/{id}/deliveries`

List delivery attempts of a webhook endpoint, newest first

MCP tool: `list-webhook-deliveries`

### Path parameters

`id` string required

### 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.

`status` "pending" | "success" | "failed"

### Response · 200

`data` object\[\] required

`object` "webhook\_delivery" required

`id` string required

`endpointId` string required

`eventId` string required

`eventType` string required

`status` string required

`attempts` integer required

`nextAttemptAt` null | string required date-time

`responseStatus` integer | null required

`responseBody` null | string required

`durationMs` integer | null required

`error` null | string required

`isTest` boolean required

`payload` any required

`createdAt` string required date-time

`deliveredAt` null | string required date-time

`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/webhooks/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/deliveries \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/webhooks/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/deliveries', {
  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/webhooks/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/deliveries",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Replace the signing secret. The new secret is returned once; the old one stops working immediately.

POST `/v1/webhooks/{id}/rotate-secret`

Replace the signing secret. The new secret is returned once; the old one stops working immediately.

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

MCP tool: `rotate-webhook-secret`

### Path parameters

`id` string required

### Response · 200

`id` string required

`url` string required

`description` null | string required

`events` string\[\] required

`enabled` boolean required

`createdAt` string required date-time

`updatedAt` string required date-time

`secret` string

```bash
curl -X POST https://api.damedoklad.cz/v1/webhooks/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/rotate-secret \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/webhooks/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/rotate-secret', {
  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/webhooks/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/rotate-secret",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Send a signed test event to this endpoint now and return the result. Test events are not retried.

POST `/v1/webhooks/{id}/test`

Send a signed test event to this endpoint now and return the result. Test events are not retried.

MCP tool: `test-webhook-endpoint`

### Path parameters

`id` string required

### Response · 200

`id` string required

`endpointId` string required

`eventId` string required

`eventType` string required

`status` string required

`attempts` integer required

`nextAttemptAt` null | string required date-time

`responseStatus` integer | null required

`responseBody` null | string required

`durationMs` integer | null required

`error` null | string required

`isTest` boolean required

`payload` any required

`createdAt` string required date-time

`deliveredAt` null | string required date-time

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/webhooks/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/test', {
  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/webhooks/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/test",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```
