API
Все, что делается в кабинете, доступно через REST API: загрузка файлов или ссылки на них, запуск сверок с шаблонами, результат, файл расхождений и PDF-отчет.
Полный справочник
Каждая установка отдает свое описание OpenAPI со Swagger UI по адресу/swagger/index.html — например,https://reconcio.example.com/swagger/index.html. Оно всегда соответствует вашей версии, поэтому поля запросов и ответов сверяйте с ним. Здесь — главное.
Доступ
Базовый путь — /api/v1. Каждый запрос несет API-ключ в заголовке Authorization:
curl https://reconcio.example.com/api/v1/templates \
-H "Authorization: Bearer $RECONCIO_API_KEY"Ключи создаются в кабинете, в разделе API-ключи (см.руководство). Ключ действует от имени создавшего его пользователя и только в пределах своих разрешений:
| Разрешение | Что дает |
|---|---|
reconciliations:read | Список сверок, результат, файл расхождений и отчет, отправка отчета письмом |
reconciliations:write | Создание сверок из загрузки или хранилища, запуск |
templates:read | Список и чтение шаблонов |
templates:write | Создание, изменение и удаление шаблонов |
У ключа также могут быть ограничения частоты запросов в минуту и в сутки и срок действия. Ключи заблокированного пользователя перестают работать сразу.
Методы
| Метод и путь | Что делает |
|---|---|
POST /reconciliations/prepare | Загрузка file_a и file_b (multipart). Необязательный template_id запускает сверку сам; необязательный report_emails (через запятую) — кому отправить PDF-отчет по завершении. |
POST /reconciliations/prepare-from-storage | Сверка по ссылкам s3://bucket/key, с тем же необязательнымtemplate_id. Бакеты должен разрешить администратор. |
POST /reconciliations/{id}/run | Запуск с final_columns или template_id — нужен, только если шаблон не указан при создании. |
GET /reconciliations/{id} | Статус, предложенные и выбранные колонки, результат. |
GET /reconciliations | Ваши сверки, новые первыми; page, limit, status. |
GET /reconciliations/{id}/diff | Файл расхождений (CSV). |
GET /reconciliations/{id}/report | PDF-отчет. |
POST /reconciliations/{id}/report/send | Отправка PDF-отчета письмом, до 10 получателей. |
GET|POST|PUT|DELETE /templates | Управление шаблонами. |
Типичный порядок
С шаблоном — один запрос
Загрузите оба файла с template_id. Сверка запустится, как только файлы будут подготовлены, а отчет придет письмом по завершении:
curl -X POST https://reconcio.example.com/api/v1/reconciliations/prepare \
-H "Authorization: Bearer $RECONCIO_API_KEY" \
-F file_a=@psp_transactions.csv \
-F file_b=@ledger.xlsx \
-F template_id=3c1e7a52-0b9d-4c64-9f0e-2a7d5b8c4e11 \
-F report_emails=finance@example.comИли укажите файлы, которые уже лежат в вашем S3:
curl -X POST https://reconcio.example.com/api/v1/reconciliations/prepare-from-storage \
-H "Authorization: Bearer $RECONCIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"file_a": "s3://psp-exports/2026-10/transactions.csv",
"file_b": "s3://erp-exports/2026-10/ledger.xlsx",
"template_id": "3c1e7a52-0b9d-4c64-9f0e-2a7d5b8c4e11"
}'Результат
В ответе на prepare есть id сверки. Запрашивайте ее, пока status не станет completed илиfailed:
curl https://reconcio.example.com/api/v1/reconciliations/8f2b9d51-f5a8-4b64-8a0d-4c8db2dc6e4f \
-H "Authorization: Bearer $RECONCIO_API_KEY"
{
"id": "8f2b9d51-f5a8-4b64-8a0d-4c8db2dc6e4f",
"status": "completed",
"file_a_rows_count": 10544,
"file_b_rows_count": 10531,
"results": {
"matched_rows_count": 10487,
"mismatched_rows_count": 29,
"missed_rows_count_in_file_b": 26,
"missed_rows_count_in_file_a": 15,
"duplicate_key_rows_count": 2,
"convergence": 0.9934,
"float_column_stat": [
{
"column_name": "amount",
"total_a": 1284903.17,
"total_b": 1284903.16,
"difference": 0.01
}
],
...
}
}Затем скачайте файл расхождений и отчет:
# Файл расхождений (CSV)
curl -o diff.csv https://reconcio.example.com/api/v1/reconciliations/$ID/diff \
-H "Authorization: Bearer $RECONCIO_API_KEY"
# PDF-отчет
curl -o report.pdf https://reconcio.example.com/api/v1/reconciliations/$ID/report \
-H "Authorization: Bearer $RECONCIO_API_KEY"Без шаблона
Загрузите файлы без template_id, дождитесь статусаawaiting_user_config, посмотрите suggested_columnsи запустите сверку со своим выбором колонок. Подойдет любая колонка файла A или B, не только предложенные; их списки — в file_a_columns иfile_b_columns.
curl -X POST https://reconcio.example.com/api/v1/reconciliations/$ID/run \
-H "Authorization: Bearer $RECONCIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"final_columns": [
{ "file_a_column": "transaction_id", "file_b_column": "payment_id", "is_join_key": true },
{ "file_a_column": "amount", "file_b_column": "Betrag", "condition": "EQ" },
{ "file_a_column": "status", "file_b_column": "Status", "condition": "IGNORE" }
]
}'is_join_key: true. Условия —
EQ, GT, GTE, LT,
LTE и IGNORE, см.
условия сравнения.
Ошибки
| Код | Значение |
|---|---|
401 | Нет API-ключа, ключ неверный или истек. |
403 | У ключа нет нужного разрешения. |
404 | Сверки или шаблона нет либо они принадлежат другому пользователю. |
422 | Ошибка проверки: неверный тип файла, файл слишком большой, неверная ссылка или бакет не разрешен, нет ключевой колонки. |
429 | Превышено ограничение частоты запросов ключа. |
Ошибки возвращаются в формате Problem Details (application/problem+json); точные поля — в Swagger UI.
Не нашли ответ? Напишите на support@reconcio.pro