Public API: подключение своей программы к Norman
Создайте API-ключ, настройте доступ к компании и выполните первый запрос из скрипта или интеграции.
Обновлено
Что можно сделать через API
Public API позволяет программе читать и изменять поддерживаемые записи Norman с помощью HTTP-запросов. Например, выгружать транзакции в дашборд, обновлять клиентов из CRM, готовить черновики счетов или загружать подтверждающие документы.
Публичный справочник охватывает сведения о компании, транзакции, существующие банковские подключения, клиентов, каталог товаров и услуг, счета, расписания повторяющихся счетов, документы и чтение налоговых отчётов и настроек. Также доступны распознавание документов, получение PDF/XML и связывание счетов с платежами. Доступные действия различаются по ресурсу. Платежи, авторизация банка и подача налоговых деклараций не входят в этот набор операций Public API.
Точные методы, поля и примеры находятся в документации разработчика. Если для интеграции нужен файл OpenAPI JSON, обратитесь в поддержку.
Выберите сценарий
- Документы и OCR: загрузите чек, прочитайте распознанные поля, запустите распознавание повторно или отправьте фрагмент изображения. Уже обработанные документы можно импортировать без OCR, указав внешний источник и ID для повторных запросов.
- Пакетная обработка: загрузите до 20 документов, не более 10 МБ на файл и 50 МБ суммарно. Затем запрашивайте прогресс, созданные транзакции и ошибки по каждому файлу. Этот сценарий может создавать или связывать транзакции, поэтому загрузка требует
write_documentsиwrite_transactions, а чтение статуса требует обоих прав чтения. Завершённое задание может содержать файлы с ошибками. - Подтверждающие файлы: добавьте накладную или другой дополнительный файл к транзакции без OCR и замены основного документа. Исправление полей документа может обновлять связанные транзакции и требует обоих прав записи.
- Счета: синхронизируйте товары и услуги, получите предложенный номер следующего счёта, скачайте PDF/XML, свяжите платёж и отправьте доступное напоминание о просрочке. Можно прочитать расписание существующей серии счетов или остановить её. Каталог товаров использует права для счетов.
- Предложения из договоров: извлеките условия выставления счёта, затем проверьте получателя, суммы, даты и замечания перед созданием счёта. Цены позиций в предложении указаны в основных единицах валюты, а создание счёта принимает минимальные единицы. Само предложение не создаёт и не отправляет счёт.
Полные примеры: документы и OCR и работа со счетами. У каждого метода в справочнике указаны необходимые права.
Создайте ключ
- Откройте Automations → Integrations → Public API или управление ключами.
- Выберите компанию, с данными которой должна работать интеграция. При необходимости скопируйте её company ID.
- Создайте именованный ключ, выберите права и срок действия. Для отчётов начните с Read only. Набор Invoicing включает чтение и изменение клиентов и счетов.
- Скопируйте ключ при создании. Полное значение показывается один раз; в списке остаются его префикс и статус.
- Сохраните ключ в переменной окружения сервера или хранилище учётных данных инструмента автоматизации. Не размещайте его на публичной странице, в репозитории, скриншоте или общем экспорте сценария.
Один ключ связан с одной компанией
Передавайте Authorization: Bearer YOUR_API_KEY вместе с запросом. Ключ привязан к своей компании. Идентификаторы компании в пути, теле запроса и необязательном заголовке X-Company-Id должны ей соответствовать. Клиенты и документы, на которые ссылается запрос, тоже должны принадлежать этой компании.
Права чтения и изменения выдаются отдельно. Например, read_transactions позволяет читать транзакции, а write_invoices разрешает поддерживаемые изменения счетов, но автоматически не добавляет право чтения счетов. full_access охватывает публичные операции для компании ключа. Права аккаунта, ограничения тарифа и статус документа продолжают действовать.
Выполните первый запрос
Этот пример читает сведения о компании ключа. Замените значение-заглушку у себя:
export NORMAN_API_KEY='nrm_replace_with_your_key'
curl --fail-with-body 'https://api.norman.finance/api/v1/companies/' \
-H "Authorization: Bearer $NORMAN_API_KEY"
Успешный ответ имеет HTTP-статус 200 и список results. Сохраните publicId компании для запросов, которым нужен company ID. Архивные компании по умолчанию скрыты из списка; при необходимости добавьте ?include_archived=true.
С правом read_transactions можно затем получить первую страницу транзакций:
curl --fail-with-body 'https://api.norman.finance/api/v1/accounting/transactions/?page=1&page_size=20' \
-H "Authorization: Bearer $NORMAN_API_KEY"
Ответы со списком содержат results, next, previous и count. Для полной выгрузки переходите по next, пока значение не станет null. Пустой список транзакций тоже может быть успешным ответом.
Настройте следующий шаг
В примерах показаны создание клиента, черновик счёта, загрузка документа и выгрузка нескольких страниц. Поля JSON используют camelCase; названия query-параметров, например page_size, берите из справочника. Суммы транзакций и ставки позиций счёта указываются в минимальных единицах валюты: 4999 для EUR означает 49,99 €. Перед записью проверяйте схему запроса, а не просто копируйте значения из ответа.
Замена ключа и ошибки
Создайте новый ключ, обновите интеграцию, проверьте один запрос и затем отзовите старый ключ. Истёкшие и отозванные ключи перестают работать. Доступ также зависит от действующего аккаунта создателя ключа и его доступа к компании.
- 401: проверьте Bearer-заголовок, срок действия и отзыв ключа.
- 403: проверьте права, компанию, поддержку операции и требования аккаунта.
- 400 или 422: исправьте значения полей или состояние документа по сведениям в ответе.
- 429: подождите время, указанное в
Retry-After.
Перед повтором запроса на изменение после тайм-аута проверьте, не создана ли уже запись. Подробнее: ошибки и повторные запросы.
Для визуальных сценариев переходите к n8n или Make. Для ИИ-ассистента используйте инструкцию MCP.
Norman берёт операционную финансовую работу на себя
Счета, документы, бухгалтерия и налоги в одном процессе: начните бесплатно.