---
description: >-
  Это важно для работы с любым сервисом. Рассказываем про допустимые форматы
  файлов, виды запросов и ответов, набор HTTP-статусов и даём рекомендации по
  устранению ошибок
---

# Общая информация о сервисах

## Краткое описание сервисов

* [Классификация документов](document-classification) — сортируем документы по типу.
* [Извлечение данных из документов](izvlechenie-dannykh) — извлекаем данные из изображений документов и возвращаем их в структурированном виде.
* [Проверка документов](proverka-dokumentov) — находим признаки подделки файла с документом, проверяем качество изображений и наличие подписей и печатей. Также можем проверить документ по базам данных.
* [Операции с лицами](operacii-s-licami) — сравниваем лицо человека с фото на документе и даём оценку их схожести. Также умеем проверять «живость» человека.
* [Базовый OCR](fulltext-recognition) — возвращаем весь найденный текст из любых изображений документов.
* [Ручная верификация](manual-recognition) — вручную проверяем результаты извлечения текста в онлайн-режиме.

## Форматы файлов

Обрабатываем одностраничные файлы любого формата. Многостраничные файлы — только форматов PDF и DJVU:

<table><thead><tr><th>Формат</th><th data-type="checkbox">Одностраничный</th><th data-type="checkbox">Многостраничный</th></tr></thead><tbody><tr><td>JPEG/JPG</td><td>true</td><td>false</td></tr><tr><td>PDF</td><td>true</td><td>true</td></tr><tr><td>PNG</td><td>true</td><td>false</td></tr><tr><td>TIFF</td><td>true</td><td>false</td></tr><tr><td>BMP</td><td>true</td><td>false</td></tr><tr><td>GIF</td><td>true</td><td>false</td></tr><tr><td>HEIC</td><td>true</td><td>false</td></tr><tr><td>HEIF</td><td>true</td><td>false</td></tr><tr><td>DJVU</td><td>true</td><td>true</td></tr></tbody></table>

{% hint style="info" %}
Размер файлов должен быть не более 30 Mb и не менее 1 Kb
{% endhint %}

## Формат запросов и ответов

Сервис принимает запросы в формате `multipart/form-data`.

В ответах формата JSON используется кодировка `UTF-8`.

## Универсальные параметры запроса к API

Все сервисы Dbrain поддерживают этот набор параметров. Использовать их необязательно, но они могут помочь решить вашу задачу.

#### Асинхронный запрос

{% hint style="success" %}
#### async — boolean
{% endhint %}

Поведение по умолчанию: `async=false` — сервис обрабатывает запросы синхронно. При отправке запроса вы получите ответ только после окончательного завершения обработки запроса сервисом.

Если вам нужен асинхронный режим, укажите в запросе `async=true`. В ответ на запрос сервис вернёт в `response body` параметр `task_id`. Например:

```json
"task_id": "96b8ccc950a70699927036842c624d7c"
```

Используйте этот `task_id`, чтобы получить результаты классификации в методе `result`:

```bash
curl -X 'GET' \
  'https://latest.dbrain.io/result/96b8ccc950a70699927036842c624d7c?token=XXX' \
  -H 'accept: application/json'
```

Не забудьте указать в параметре `token` ваш ключ лицензии. Рекомендуем запрашивать метод `result` в цикле с периодом 1-2 секунды.

#### Тегирование запроса

{% hint style="success" %}
**task\_tags — string array**
{% endhint %}

Поведение по умолчанию: параметр не используется.

Функция тегирует запросы по вашему усмотрению. Это упрощает отслеживание пакетов документов, связанных с конкретным клиентом-физлицом. Для использования функции укажите в параметре `task_tags` удобный вам тег. Например, `task_tags=id_13`

## Тело запроса к API

В любом сервисе Dbrain изображение нужно передавать в теле запроса. В сервисе [«Сравнение лиц»](operacii-s-licami/sravnenie-lic) нужно передать два изображения в атрибутах `image1` и `image2`.

#### **Изображение**

{% hint style="success" %}
**image — string ($binary)**
{% endhint %}

Обязательно для передачи в запросе. Сервис ожидает изображение в двоичном виде.

## HTTP-коды ответа на запрос

Сервисы Dbrain возвращают универсальный набор HTTP-статусов. Рассказываем, что значит каждый статус и что с ним делать.

### `200 OK`

Это наилучший код ответа. Он означает, что всё работает: сервис успешно обработал запрос и вернул запрошенные данные.

### `202 Accepted`

Наш сервис принял запрос в обработку, но ответ ещё не готов. Повторите запрос через 1-2 секунды.

### `403 Forbidden`

Вы попытались получить результат задачи, отправленной от другого токена. Проверьте корректность параметра token в запросе.

### `404 Not Found`

Задача с таким task\_id не найдена. Проверьте корректность параметра task\_id в запросе.

### `405 License is Invalid`

В запросе не указан токен, или есть проблемы с лицензией. Например, истёк срок действия лицензии или превышено число запросов. Проверьте корректность параметра token в запросе. Если token указан верно, напишите нам в[ телеграм](https://t.me/dbrain_support_bot) или на [hello@dbrain.io](mailto:hello@dbrain.io)

### `405 Method Not Allowed`

Вы использовали неверный тип запроса. Например, отправили GET вместо POST.

### `413 Content Too Large`

Вы отправили слишком большой файл. Файл должен быть меньше 30 Мб. Если у вас тяжелый многостраничный файл, разбейте его на несколько файлов перед отправкой. Если файл состоит из одной страницы — сохраните его с меньшим разрешением.

### `415 Unsupported Media Type`

Вы отправили слишком маленький файл. Он должен быть больше 1 Кб.

### `422 Unprocessable Content`

Скорее всего, вы передали неправильный content-type тела запроса. Возможно, вы отправили текст вместо файла. Проверьте запрос.

### `500 Internal Server Error`

Внутренняя ошибка сервиса Dbrain. Как правило, сопровождается пояснением. Попробуйте повторить запрос. Если это не решило проблему, напишите нам в[ телеграм](https://t.me/dbrain_support_bot) или на [hello@dbrain.io](mailto:hello@dbrain.io).

### `502 Bad Gateway`

Проблемы с роутингом соединения до сервисов Dbrain. Возможно, проблема на вашей стороне. Проверьте сетевые настройки.

### `503 Service Unavailable`

Сервис недоступен. Возможно, он перегружен. Попробуйте повторить запрос позже. Если появился такой статус, мы тоже о нём знаем и уже решаем проблему.

## Проверка работоспособности сервиса

Отправьте GET-запрос на адрес `https://latest.dbrain.io/healthcheck`.

В ответ вы получите код состояния HTTP `200` с `Content-Type: application/json` и телом ответа `{"success": true}`.

Если пришёл любой другой код, значит, есть проблемы с сервисом и мы уже их устраняем.

