lrk-parts.ru API для партнёров Быстрый старт Справочник методов Скачать OpenAPI

API для партнёров lrk-parts.ru

Номенклатура запчастей для автовозов и коммерческого транспорта: поиск по артикулу, ваша цена, остатки и аналоги — для вашего сайта или учётной системы.

Версия 1.3.0 REST · JSON · UTF-8 https://lrk-parts.ru/api/v1

1Быстрый старт

  1. Получите токен доступа у менеджера lrk-parts.ru.
  2. Проверьте доступ — запрос вернёт название вашей компании и лимиты:
    curl -H "Authorization: Bearer ВАШ_ТОКЕН" \
         https://lrk-parts.ru/api/v1/limits
  3. Найдите деталь по артикулу или названию:
    curl -H "Authorization: Bearer ВАШ_ТОКЕН" \
         "https://lrk-parts.ru/api/v1/parts/search?q=21214-3502010"
  4. Для обновления всего ассортимента используйте полную выгрузку.
Запросы можно отправлять прямо со страницы: в разделе «Справочник методов» нажмите Authorize, вставьте токен, затем у нужного метода — Try it out → Execute.

2Авторизация

Каждый запрос передаётся с заголовком:

Authorization: Bearer ВАШ_ТОКЕН
  • Токен выдаёт и отзывает администратор lrk-parts.ru. Храните его как пароль — не публикуйте в коде страниц сайта.
  • Нет токена или он неверный — ответ 401; доступ приостановлен — 403.
  • Ответы — JSON в кодировке UTF-8.

3Методы

МетодАдресЧто делаетЛимит
GET/api/v1/parts/search?q=…Поиск по артикулу или названию (до 50 позиций)поиск
GET/api/v1/parts/{артикул}Цена, остаток и аналоги по точному артикулупоиск
GET/api/v1/exportВся доступная номенклатура постраничновыгрузка
GET/api/v1/limitsВаша группа цен, доступный каталог, лимиты и расход за сегодняне считается

Параметры, примеры ответов и форма для пробных запросов — в справочнике методов.

4Данные позиции

ПолеТипОписание
skuстрокаАртикул
nameстрокаНаименование
brandстрока | nullБренд
priceчислоЦена для вас, руб. — по группе цен вашей компании
retail_priceчислоРозничная цена на сайте, руб.
currencyстрокаВсегда RUB
quantityчисло | строкаОстаток, шт. (см. остатки)
quantity_exactлогическоеfalse — остаток не точный
availabilityстрокаin_stock — в наличии, low_stock — мало, on_order — под заказ
availability_labelстрокаСтатус по-русски, как на сайте
urlстрока | nullСтраница товара на lrk-parts.ru
analogsмассивАналоги (см. аналоги); нет поля, если передан analogs=0

Пример

{
  "sku": "21214-3502010",
  "name": "Барабан тормозной задний",
  "brand": "ОАТ",
  "price": 2205.0,
  "retail_price": 2450.0,
  "currency": "RUB",
  "quantity": 14,
  "quantity_exact": true,
  "availability": "in_stock",
  "availability_label": "В наличии",
  "url": "https://lrk-parts.ru/catalog/oat/baraban-tormoznoy-zadniy-21214-3502010",
  "analogs": []
}

5Цены и остатки

Цена

price — цена для вашей компании по назначенной группе цен (опт, дилер…). Если для позиции отдельная цена группы не задана — базовая цена. retail_price — розничная цена сайта для сравнения. Цены в рублях с копейками.

Остаток

Режим показа остатков для вашей компании виден в /limits, поле quantity_mode:

Реальный остатокexactmasked
0 (под заказ)00
555
888
1414">8" (строка)
В режиме masked поле quantity может прийти строкой ">8" — учитывайте это при разборе ответа. Также quantity = 1000 с quantity_exact: false означает «много» — точное количество неизвестно.

6Аналоги

У каждой позиции — массив analogs: заданные аналоги и кроссы. Тип связи relation_type: analog — аналог, oem — номер производителя техники, original — оригинал.

  • in_catalog: true — аналог есть в доступном вам каталоге, у него заполнены цена и остаток (те же поля, что у позиции).
  • in_catalog: false — известен только артикул и тип связи, остальные поля null.
  • Аналоги не нужны — передайте analogs=0: ответ станет меньше и быстрее (особенно для выгрузки).

7Доступный каталог

Вам может быть открыт не весь каталог, а отдельные категории. Позиции вне них не находятся поиском, по артикулу возвращают 404, не попадают в выгрузку, а аналоги из них приходят с in_catalog: false.

Сколько позиций доступно — /limits → catalog.positions (столько же придёт в полной выгрузке); catalog.categories: all — весь каталог, restricted — отдельные категории.

8Полная выгрузка

Для синхронизации всего ассортимента — /api/v1/export. Страницы листаются курсором: позиции не теряются и не дублируются, даже если каталог меняется во время выгрузки.

  1. Первый запрос — без after.
  2. Следующие — с after = meta.next_after из предыдущего ответа.
  3. meta.has_more = false — выгрузка закончена. Позиции, которых в ней нет, сняты с продажи или недоступны.
# Пример на bash + jq: выгрузка страницами по 2000 позиций без аналогов
AFTER=""
while : ; do
  RESP=$(curl -s -H "Authorization: Bearer ВАШ_ТОКЕН" \
    "https://lrk-parts.ru/api/v1/export?per_page=2000&analogs=0${AFTER:+&after=$AFTER}")
  echo "$RESP" | jq -c '.data[]' >> catalog.jsonl
  [ "$(echo "$RESP" | jq -r '.meta.has_more')" = "true" ] || break
  AFTER=$(echo "$RESP" | jq -r '.meta.next_after')
  sleep 1   # не больше 60 запросов в минуту
done

Рекомендуем обновлять каталог не чаще раза в час, а между выгрузками пользоваться /parts/{артикул} для отдельных позиций.

9Лимиты запросов

ЛимитЗначениеМетоды
В минуту60все вместе
В сутки: поиск5 000/parts/search, /parts/{артикул}
В сутки: выгрузка200 сейчас/export
  • Лимит выгрузки — 24 полных проходов каталога в сутки страницами по 500 позиций (не меньше 200); растёт вместе с каталогом. Страницами по 2000 на проход нужно вчетверо меньше запросов.
  • Суточные счётчики обнуляются в 00:00 (по московскому времени). Ваши точные лимиты и расход — /limits.
  • В каждом ответе — заголовки X-Daily-Limit, X-Daily-Remaining, X-Daily-Reset (суточный лимит) и X-RateLimit-Limit, X-RateLimit-Remaining (минутный).
  • При превышении — 429: минутного — повторите через Retry-After секунд; суточного — код daily_limit_exceeded и время сброса.
  • Индивидуальные лимиты для крупных партнёров — по запросу менеджеру.

10Ошибки

Формат ответа об ошибке:

{
  "error": {
    "code": "validation_failed",
    "message": "Количество символов в поле q должно быть не меньше 2.",
    "fields": { "q": ["Количество символов в поле q должно быть не меньше 2."] }
  }
}
HTTPКодКогда
401unauthenticatedТокен не передан или недействителен
403partner_inactiveДоступ приостановлен
404not_foundНет такой позиции (или она вне доступного каталога)
422validation_failedНеверные параметры — подробности в fields
429daily_limit_exceededИсчерпан суточный лимит
429—Превышен минутный лимит: {"message": "Too Many Attempts."}
5xx—Временная ошибка сервера — повторите запрос позже

11История версий

ВерсияИзменения
1.3.0Доступ к каталогу по категориям; поле catalog в /limits.
1.2.0Режим скрытых остатков (">8"), поле quantity_mode в /limits.
1.1.0Остаток quantity, цена партнёра price и retail_price, аналоги, метод /limits, суточные лимиты.
1.0.0Поиск, проверка по артикулу, выгрузка каталога.

Изменения обратно совместимы: поля не удаляются и не меняют смысл, только добавляются новые.

Справочник методов

Нажмите на метод, чтобы увидеть параметры и примеры ответов. Чтобы отправить запрос: Authorize → вставьте токен (без слова Bearer) → у метода Try it out → Execute. Токен запоминается в этом браузере.