REST API
API для управления контрагентами, документами и напоминаниями. Все запросы — JSON через HTTPS, авторизация по Bearer-токену из /app/api-keys. Доступ включён на тарифах Pro и Agency.
Базовый URL
https://reply.apps.newklient.com/api/v1
Аутентификация
В каждом запросе передавайте заголовок Authorization: Bearer rk_live_…. Токен получается в кабинете на странице /app/api-keys (только OWNER).
curl -H "Authorization: Bearer $REPLY_BY_TOKEN" https://reply.apps.newklient.com/api/v1/documents
Эндпоинты
Контрагенты
- GET
/counterpartiesсписок (q, limit, offset) - POST
/counterpartiesсоздать (или upsert по UNP) - GET
/counterparties/{id}один контрагент
Документы
- GET
/documentsсписок (status, counterparty_id, limit, offset) - POST
/documentsсоздать + запланировать напоминания - GET
/documents/{id}документ + напоминания - PATCH
/documents/{id}сменить статус (RETURNED/CANCELED) или notes
Пример: создать контрагента и документ
1. Создаём (или находим по УНП) контрагента:
curl -X POST https://reply.apps.newklient.com/api/v1/counterparties \
-H "Authorization: Bearer $REPLY_BY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "ООО «Покупатель»",
"unp": "100123456",
"emails": ["buh@example.by"],
"phones": ["+375291234567"]
}'2. Заводим документ:
curl -X POST https://reply.apps.newklient.com/api/v1/documents \
-H "Authorization: Bearer $REPLY_BY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"counterparty_id": "uuid-from-step-1",
"type": "ACT",
"number": "А-2026/00001",
"document_date": "2026-05-01",
"sent_at": "2026-05-01T10:00:00Z",
"amount_byn": 1250.00
}'После POST /documents reply.by автоматически запланирует напоминания контрагенту по email/SMS на 7-й, 15-й, 22-й и 30-й день (если задано правило по умолчанию).
Пример: интеграция с 1С 8.x
Минимальный модуль для отправки документа в reply.by при проведении акта. Добавьте в общий модуль или подписку на событие проведения. Если не хотите писать с нуля — готовый source-код для сборки .epf доступен бесплатно: программист 1С соберёт обработку за 10 минут.
Процедура ОтправитьДокументВReplyBy(ДокументАкт) Экспорт
Соединение = Новый HTTPСоединение(
"reply.apps.newklient.com",
443,
,
,
,
,
Новый ЗащищенноеСоединениеOpenSSL()
);
Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization", "Bearer " + Константы.ReplyByToken.Получить());
Заголовки.Вставить("Content-Type", "application/json");
// 1. upsert контрагента по УНП
КонтрагентТело = Новый Структура;
КонтрагентТело.Вставить("name", СокрЛП(ДокументАкт.Контрагент.Наименование));
КонтрагентТело.Вставить("unp", СокрЛП(ДокументАкт.Контрагент.УНП));
КонтрагентТело.Вставить("emails",
Новый Массив(СокрЛП(ДокументАкт.Контрагент.Email)));
Запрос1 = Новый HTTPЗапрос("/api/v1/counterparties", Заголовки);
Запрос1.УстановитьТелоИзСтроки(
ОбщегоНазначения.ЗначениеВJSON(КонтрагентТело),
КодировкаТекста.UTF8
);
Ответ1 = Соединение.ОтправитьДляОбработки(Запрос1);
Если Ответ1.КодСостояния >= 300 Тогда
ВызватьИсключение "reply.by counterparty: " + Ответ1.ПолучитьТелоКакСтроку();
КонецЕсли;
КонтрагентId =
ОбщегоНазначения.JSONВЗначение(Ответ1.ПолучитьТелоКакСтроку()).data.id;
// 2. создаём документ
ДокументТело = Новый Структура;
ДокументТело.Вставить("counterparty_id", КонтрагентId);
ДокументТело.Вставить("type", "ACT");
ДокументТело.Вставить("number", СокрЛП(ДокументАкт.Номер));
ДокументТело.Вставить("document_date",
Формат(ДокументАкт.Дата, "ДФ=yyyy-MM-dd"));
ДокументТело.Вставить("sent_at",
Формат(ТекущаяДатаСеанса(), "ДФ=yyyy-MM-ddTHH:mm:ssZ"));
ДокументТело.Вставить("amount_byn", ДокументАкт.СуммаДокумента);
Запрос2 = Новый HTTPЗапрос("/api/v1/documents", Заголовки);
Запрос2.УстановитьТелоИзСтроки(
ОбщегоНазначения.ЗначениеВJSON(ДокументТело),
КодировкаТекста.UTF8
);
Ответ2 = Соединение.ОтправитьДляОбработки(Запрос2);
Если Ответ2.КодСостояния >= 300 Тогда
ВызватьИсключение "reply.by document: " + Ответ2.ПолучитьТелоКакСтроку();
КонецЕсли;
КонецПроцедурыToken (Константы.ReplyByToken) сохраните как защищённый параметр в конфигурации 1С — НЕ записывайте напрямую в код.
Коды ошибок
401 unauthorized / invalid_token— токен отсутствует или некорректен403 revoked— ключ отозван в админ-кабинете403 expired— у ключа истёк срок действия403 plan_does_not_include_api— тариф workspace не включает API403 read_only_key— попытка POST/PATCH read-only ключом400 invalid_input— невалидные поля (см.details)404 not_found— объект не найден в этом workspace
Версионирование
Префикс пути /api/v1. Несовместимые изменения выпускаются как /v2с минимум 6-месячным окном поддержки /v1. Новые поля в ответах могут добавляться без bump версии — клиенты должны игнорировать неизвестные ключи.