Reconcio

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}/reportPDF-отчет.
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