Если вдруг что-то останется непонятным — напишите нам в поддержку: https://t.me/lava_sup_bot
Интеграция — это процесс объединения двух или более сервисов с помощью API. Она позволяет системам обмениваться данными и событиями, обеспечивая их совместную и автоматизированную работу.
С помощью lava.top можно настроить интеграцию с любой внешней системой, сервисом, сайтом или с Telegram-ботом: принимать и отслеживать оплаты, управлять доступом и контролировать статусы подписок. Всё это делает рабочие процессы проще и удобнее.
Public API — программный интерфейс lava.top, который позволяет внешним программам и приложениям взаимодействовать друг с другом по сети.
API key — уникальный код, который используется для авторизации и аутентификации клиента API. Он работает, как аналог логина и пароля, только не для людей, а для программного обеспечения: без него вы не можете получить доступ к данным или функциям, которые предоставляет API.
Webhook — механизм, позволяющий одному сервису автоматически отправлять данные другому сервису в ответ на определенные события. Проще говоря, это уведомление, которое ваша система получает, когда что-то произошло. Вместо того чтобы постоянно опрашивать сервер («что нового?»), вы один раз настраиваете URL, и сервер сам уведомляет вас, когда нужно.




Для того, чтобы начать настройку интеграции на платформе, потребуется создать API key и добавить webhook.








- URL — это ссылка на сервис, куда будут отправляться webhook (сервер, который будет обрабатывать запросы);
- Тип события:
- Результат платежа — обычная покупка: этот webhook можно использовать для единоразовых платежей, а также для первого платежа по подписке.
- Регулярный платеж — покупка подписки: используется для оплаты второго, третьего и последующих платежей по подписке.


- Basic - введите логин и пароль от вашего сервиса, куда будут отправляться webhook.


- API key вашего сервиса - введите API key от вашего сервиса, куда будут отправляться webhook. Максимальная длина ключа — 80 символов.


При аутентификации Basic: lava.top будет отправлять webhook-запросы по указанному URL, аутентифицированные при помощи basic (HTTP) аутентификации путем отправки запроса вида user:pass@example.com - для такого запроса может использоваться только https соединение.
При аутентификации по API Key: lava.top будет отправлять webhook-запросы по указанному URL, аутентифицированные при помощи ключа. Принимающая сторона должна получить ключ из http-заголовка «X-Api-Key».
Для этого нажмите на три точки рядом с нужным ключом и выберите Добавить Webhook.


Для получения детального описания методов API используйте API документацию.
Документация представлена в формате Open API v3.0.0 (Swagger).
Вы сможете подобрать API-метод по основным сценариям работы:
Products - для работы с цифровыми продуктами: получение списка продуктов и изменение их параметров (например, цены).
Invoices - для создания контрактов на покупку и проверку их статуса.
Reports - для получения данных для аналитики по продажам через API.
Subscriptions - для управления подписками пользователей.
Donate - для получения ссылок на донат.
Интерактивность документации поможет протестировать методы и убедиться в их корректной работе.
- нажмите кнопку Authorize в верхнем углу страницы:


- заполните ApiKeyAuth (apiKey), (используйте API key, который вы получили в ЛК Автора в пользовательском интерфейсе lava.top Интеграции → Public API → Создать API key (более подробно рассказывали про это здесь)):




Мы подготовили несколько open source-библиотек, которые помогут вам быстрее и удобнее использовать возможности нашей платформы.
Наш API соответствует спецификации Open API (Swagger), которая может быть сложной для работы, и эти библиотеки помогут упростить процесс.
Скачайте пакет с PyPI, обычно с помощью pip:
1.pip install lava-top-sdk
Убедитесь, что при установке библиотеки lava-top-sdk также устанавливаются все её зависимости.
Доступно на npm
1.npm install --save lava-top-sdk
Подключите пакет из репозитория Maven
1.<dependency>2. <groupId>top.lava</groupId>3. <artifactId>lava-top-kotlin-sdk</artifactId>4. <version>1.0.0</version>5.</dependency>
На платформе lava.top используются два типа API key:
Этот ключ используется вашей системой для отправки запросов к lava.top. Так мы идентифицируем вас.
Этот ключ создается на стороне вашего сервиса и передается lava.top. Lava.top использует его, добавляя в X-Api-Key заголовок HTTP запроса при отправке webhook на вашу сторону.
Платформа lava.top использует HTTP-коды ответа для обозначения успешного выполнения или ошибки при обработке API-запросов.
Исходящие соединения происходят с IP-адреса 158.160.60.174
Если webhook не были доставлены, система предпримет попытки повторно отправить их на указанный URL. Повторные попытки осуществляются по логике: сначала 1с, 5с, 15с, далее 10 попыток с интервалом в 1 мин, далее, если не удалось, еще 5 попыток с интервалом в 1 час.
Всего будет сделано до 20 попыток.
Наиболее популярные ошибки:
| Код | Описание |
|---|---|
| 400 | Bad Request: Запрос некорректен. Проверьте синтаксис, параметры, ограничения по размеру и т. д. |
| 401 | Unauthorized: Ошибка аутентификации. Проверьте API key, OAuth-токен, срок его действия и наличие нужных прав (scope). |
| 403 | Forbidden: Доступ к ресурсу отклонён. Возможно, у вас недостаточно прав или вы обращаетесь к закрытому ресурсу. |
| 404 | Not Found: Ресурс не найден. Проверьте URL, идентификатор объекта или его наличие в вашем аккаунте. |
| 405 | Method Not Allowed: HTTP-метод не поддерживается для данного эндпоинта. Обратитесь к документации API. |
| 406 | Not Acceptable: Неподдерживаемый формат запроса или ответа. API поддерживает только application/json. |
| 408 | Request Timeout: Сервер не дождался завершения запроса. Повторите попытку с меньшим объёмом данных. |
| 410 | Gone: Ресурс был безвозвратно удалён и больше недоступен. |
| 429 | Too Many Requests: Превышен лимит обращений. Уменьшите частоту запросов. |
| 500 | Internal Server Error: Ошибка на стороне сервера. Повторите попытку позже. |
| 503 | Service Unavailable: Сервис временно недоступен из-за технических работ или перегрузки. Повторите попытку позже. |
Платформа lava.top использует ограничение на частоту запросов для защиты от перегрузок и обеспечения стабильной работы API.
Мы уже рассказывали, что в разделе «Интеграции» в основном меню есть возможность настраивать интеграцию с Public API, где можно создавать API keys и добавлять webhook.
Также там можно просматривать историю их отправки, статус и повторить отправку в случае ошибки доставки и/или обработки webkook.
Историю можно найти в карточке аккаунта. Для этого перейдите в редактирование Интеграции → Public API → История webhooks.


Здесь фиксируются события, на которые настроены соответствующие webhook. Эти события различаются по типу, статусу и паре API Key+webhook. В деталях платежа можно увидеть тело запроса, отправленного в момент события, а также историю попыток отправки (при неудачном списании по подписке webhook приходит только по последней попытке списания (т.е. если было 3 попытки списания, то webhook придет только по третей), при возвратах webhook не отправляется). Чтобы просмотреть детали платежа, нужно кликнуть по строке webhook.
Чтобы найти нужный webhook можно использовать расширенные фильтры - искать по Почте покупателя, ID инвойса или Названию или ID продукта.


Каждое событие привязано к типу платежа и статусу контракта.
Типы платежей:
- оплата (покупка цифрового продукта, курса, консультации или первый платёж по подписке);
- рекуррентный платёж (продление или отмена подписки).
Статусы контракта:
- success (успешный платёж);
- failed (незавершённый платёж, например, недостаточно средств на балансе клиента);
- cancelled (отменённый, в случае подписки).
Поэтому в истории можно встретить следующие Типы событий:
- payment.successpayment.success — успешная покупка продуктов (не донатов) или первая оплата подписки;
- payment.failedpayment.failed — неуспешная покупка продуктов (не донатов) или первая оплата подписки;
- subscription.recurring.payment.successsubscription.recurring.payment.success — успешное продление подписки (второй, третий и последующие платежи);
- subscription.recurring.payment.failedsubscription.recurring.payment.failed — неуспешное продление подписки (второй, третий и последующие платежи);
- subscription.cancelledsubscription.cancelled — отмена ранее купленной подписки.
Чтобы получать эти события, нужно настроить соответствующие webhook. При их создании нужно выбрать один из двух типов событий:
- Webhook с типом «Результат платежа» (принимает только события payment.successpayment.success и payment.failedpayment.failed .)
- Webhook с типом «Регулярный платеж» (принимает только события subscription.recurring.payment.successsubscription.recurring.payment.success , subscription.recurring.payment.failedsubscription.recurring.payment.failed и subscription.cancelledsubscription.cancelled ).


Статус показывает был ли получен webhook.


Может быть только два статуса:
- DELIVERED (доставлено) — webhook успешно доставлен.
- FAILED (не доставлено) — произошел сбой при доставке.
Статус webhook определяется HTTP-кодом, который поступает вместе с событием.
Платформа lava.top использует HTTP-коды ответа для обозначения успешного выполнения или ошибки при обработке API-запросов.
В случае получения кода о неудачной доставке lava.top повторяет попытки отправки до 19 раз.
Если webhook не были доставлены, система предпримет попытки повторно отправить их на указанный URL. Повторные попытки осуществляются по логике: сначала 1с, 5с, 15с, далее 10 попыток с интервалом в 1 мин, далее, если не удалось, еще 5 попыток с интервалом в 1 час.
Всего будет сделано до 20 попыток.
При каждой попытке отправить webhook в историю будет добавляться событие с соответствующим HTTP-кодом. Если статус-код указывает на успех, то появится одно событие об успешной или неуспешной оплате. При неуспешном ответе может быть до 20 попыток (они прекращаются после успешной отправки или после 19 попыток). Все эти события можно просмотреть в разделе «История попыток отправки» в деталях webhook.


Наиболее популярные коды ответов:
- Код 401 / Код 403 — неверные данные авторизации, нельзя получить доступ к методу принятия webhook;
- Код 404 — в webhook прописан неверный URL
- Код 500 — ошибка на стороне сервера автора, который принимает webhook.


С помощью кнопки стрелки каждый webhook можно отправить повторно.


Нажмите и подтвердите отправку.


Мы регулярно улучшаем возможности интеграции: добавляем новые функции, исправляем ошибки и обновляем документацию. Здесь вы можете следить за всеми изменениями.
Добавлена возможность оплаты подписок через Stripe.
Реализованы методы /api/v2/invoices и /api/v2/invoices/{id} с обновленной типизацией контрактов:
- INVOICEINVOICE - оплата продуктов, консультаций, курсов,
- SUBSCRIPTION_FIRST_INVOICESUBSCRIPTION_FIRST_INVOICE - первое списание по подписке,
- SUBSCRIPTION_RENEWALSUBSCRIPTION_RENEWAL - рекуррентный платеж по подписке.
Добавлена возможность отправки донатов через Stripe.
Доработан запрос GET /invoices: теперь возвращается поле parentInvoiceId (ID родительской транзакции при оформлении подписки).
Добавлена возможностью оплаты через PayPal:
- оплата подписок,
- отправка доната.
Улучшен функционал работы с webkook:
- возможность повторной отправки,
- получение списка webhook,
- добавление типа (события) в тело webhook,
- возможность поиска webhook по Product ID в ЛК кабинете автора (Интеграции → Public API → История webhooks).
Добавлена поддержка UTM-меток.
Добавлена возможность оплаты цифровых продуктов через провайдера Stripe.
Здесь мы собрали наиболее частые вопросы, которые могут возникать у пользователей нашего API.