Boomly

Публичный 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 запросов в минуту на один ключ

Ключ и секрет вы создаёте сами в личном кабинете. Подпись нужна только тем ключам, у которых она включена.

GET/v1/health
curl 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 с баланса, при неудачной выдаче возвращается на баланс сам. На сайте и в боте так не работает: там средства просто не списываются, а случай разбирает поддержка.

Тот же заказ виден в личном кабинете: выдачу можно скопировать или скачать файлом повторно, в том числе по отдельным позициям. Уведомлений на почту магазин не отправляет — почты у него нет.

Приёмка партии, которую заказал скрипт

Автозакупка не отменяет приёмку, она её ускоряет. Окно замены — тридцать минут с момента выдачи, и для скрипта это значит, что сверку надо делать в том же прогоне, а не утром следующего дня.

  • Сверить число выданных строк с заказанным количеством.
  • Проверить состав полей: формат партии написан в названии позиции, и от него зависит, что вообще должно прийти. Разложить строку по полям помогает конвертер форматов на сайте.
  • Не менять пароль, почту и привязки до конца проверки — после изменения гарантия не действует.
  • Не уложились или состав не сошёлся — писать в бот поддержки с номером заказа и артикулом позиции.

От ручной приёмки эта отличается ровно одним: сверку делает код, а решение о замене всё равно принимает человек в боте поддержки. Поэтому в скрипте закупки полезно сразу складывать номер заказа и артикул рядом с результатом сверки — именно эту пару спросят первой.

Служебные ручки: доступность и расход ключа

Две ручки стоит держать в мониторинге с первого дня. Первая отвечает, жив ли адрес, и ничего, кроме запроса, не требует — по ней отличают «магазин не отвечает» от «ключ отозван». Вторая показывает, сколько запросов ключ израсходовал за сегодня и какой у него потолок в минуту.

Значения лимитов подписаны на карточках выше и считаются независимо: одно ограничение на адрес, другое на ключ. Ручка расхода нужна, чтобы увидеть приближение к потолку заранее: отказ по лимиту в момент закупки обходится дороже, чем пауза между запросами.

Вопросы и ответы

Полезные страницы