Публичный API магазина
Программный доступ к магазину: каталог, остатки, баланс и заказы. Ключ вы создаёте сами в личном кабинете, а проверить запрос можно здесь же — плейграунд бьёт из браузера.
https://boomly.ac/api/v1Отдельного адреса вида api.boomly.ac нет — все запросы идут на этот адрес.
Как подключиться
X-API-Key: <ключ из личного кабинета>
X-Timestamp: 1785312000
X-Signature: hmac_sha256(secret, f'{ts}\n{body}').hex()Не чаще, чем
120 запросов в минуту на один адрес
И не больше, чем
60 запросов в минуту на один ключ
Ключ и секрет вы создаёте сами в личном кабинете. Подпись нужна только тем ключам, у которых она включена.
/v1/healthcurl https://boomly.ac/api/v1/health \ -H "X-API-Key: $KEY"
Что придёт в ответ
{"status": "ok"}Если оплатили с баланса и выдача не удалась
Заказы, оплаченные через программный доступ с баланса, при неудачной выдаче возвращаются на баланс сами. На сайте и в боте так не работает — там деньги просто не списываются, а если что-то пошло не так, возврат делает поддержка.
Попробовать прямо здесь
Ответ появится здесь.
Запрос уходит прямо из вашего браузера. Ключ на сервере не сохраняется.
Ключ создаётся в личном кабинете. Создать ключ
Какие числа в ответе решают за вас
В карточке позиции API отдаёт два разных числа остатка и два разных минимума. Путаница между ними — самая частая причина того, что заказ, собранный скриптом, не проходит или собирается дольше ожидаемого.
| Поле | Что означает | На что влияет |
|---|---|---|
| quantity | общий остаток партии | его показывает витрина в колонке «В наличии» |
| instant_stock | сколько уедет из готового запаса сразу | заказ сверх этого числа собирается дольше |
| min_quantity | минимальная партия, заявленная поставщиком | справочное значение |
| min_qty_effective | фактический минимум магазина | по нему проходит заказ и считается шаг количества |
| sku | публичный артикул позиции | адрес страницы товара, повторная закупка, обращение в поддержку |
| id | внутренний номер | ссылка по нему уводит на артикул постоянным редиректом |
Правило короткое: планировать закупку по мгновенному остатку и фактическому минимуму, ссылаться на артикул. Общий остаток и минималка поставщика — справочные, и ни одно из этих чисел не стоит запоминать между прогонами: каталог живой.
Заказ: от запроса до строк выдачи
Заказ создаётся артикулом и количеством, сразу получает свой номер и статус. Пока партия собирается, статус об этом и говорит; готовый заказ отдаёт выданные строки в составе самого заказа — отдельного запроса за данными нет.
- Количество кратно фактическому минимуму позиции, а не заявленному поставщиком.
- Оплата идёт с баланса, поэтому выдача не ждёт подтверждения перевода.
- Заказ, оплаченный по API с баланса, при неудачной выдаче возвращается на баланс сам. На сайте и в боте так не работает: там средства просто не списываются, а случай разбирает поддержка.
Тот же заказ виден в личном кабинете: выдачу можно скопировать или скачать файлом повторно, в том числе по отдельным позициям. Уведомлений на почту магазин не отправляет — почты у него нет.
Приёмка партии, которую заказал скрипт
Автозакупка не отменяет приёмку, она её ускоряет. Окно замены — тридцать минут с момента выдачи, и для скрипта это значит, что сверку надо делать в том же прогоне, а не утром следующего дня.
- Сверить число выданных строк с заказанным количеством.
- Проверить состав полей: формат партии написан в названии позиции, и от него зависит, что вообще должно прийти. Разложить строку по полям помогает конвертер форматов на сайте.
- Не менять пароль, почту и привязки до конца проверки — после изменения гарантия не действует.
- Не уложились или состав не сошёлся — писать в бот поддержки с номером заказа и артикулом позиции.
От ручной приёмки эта отличается ровно одним: сверку делает код, а решение о замене всё равно принимает человек в боте поддержки. Поэтому в скрипте закупки полезно сразу складывать номер заказа и артикул рядом с результатом сверки — именно эту пару спросят первой.
Служебные ручки: доступность и расход ключа
Две ручки стоит держать в мониторинге с первого дня. Первая отвечает, жив ли адрес, и ничего, кроме запроса, не требует — по ней отличают «магазин не отвечает» от «ключ отозван». Вторая показывает, сколько запросов ключ израсходовал за сегодня и какой у него потолок в минуту.
Значения лимитов подписаны на карточках выше и считаются независимо: одно ограничение на адрес, другое на ключ. Ручка расхода нужна, чтобы увидеть приближение к потолку заранее: отказ по лимиту в момент закупки обходится дороже, чем пауза между запросами.
Вопросы и ответы
Полезные страницы