# Data formats

## Requests and responses

- The base URL is `https://api.datool.ru/v1/…`, HTTPS only.
- The key goes in the `Authorization: Bearer dtk_…` header (or `X-API-Key: dtk_…`).
- Responses are JSON in UTF-8. Request bodies (webhooks) are JSON with the `Content-Type: application/json` header.
- The language of error texts and descriptions follows the `Accept-Language` header: `en` — English, otherwise Russian. Data (channel titles, post texts, category names) is as in MAX.

## Time and dates

- Points in time are ISO 8601 with a time zone, in Moscow time: `2026-10-18T11:42:00+03:00`. Any program that understands ISO 8601 converts them to another zone by itself. The exception is the `X-Quota-Reset` header: it is in UTC (`2026-11-04T10:20:00Z`).
- Days (statistics, the `from` and `to` filters) are `YYYY-MM-DD` in Moscow time: `2026-10-17`.

## Numbers

- `id` — the number in datool.ru (of a channel, post, category, webhook). It is used in API URLs and filters.
- `external_id` — the number in MAX: for a channel — the chat ID with a minus sign (`-71204896310021`), for a post — the post number in the channel.

## Values

- `null` — no value or it is unknown: for example, `subscribers: null` — the channel wasn’t polled that day.
- Yes / no — `true` / `false`.
- Money (the balance in `/v1/me/`) — a string with two decimal places, in rubles: `"1490.00"`.
- Reactions — an “emoji → count” object: `{"👍": 180, "🔥": 56}`.

## Compatibility

New fields and methods appear in `v1` without a version change. Write your client so that unfamiliar fields in a response don’t break parsing.
