Lamoda Seller API — Полная документация
Дата: 11 февраля 2026 Версия: 1.0 Статус: Полная документация
Содержание
- Обзор
- Аутентификация
- Base URL
- Rate Limits
- Модели работы
- Обзор секций API
- Детальное описание эндпоинтов
- Коды ошибок
- Руководство по интеграции
- Проверка полноты покрытия эндпоинтов
- Загруженные файлы
Обзор
Lamoda предоставляет три отдельные API системы для продавцов и партнёров:
API Системы
| API Система | Формат | Эндпоинтов | Основное назначение | Время жизни токена |
|---|---|---|---|---|
| B2B Platform API | REST (OpenAPI 3.0) | 51 | Заказы, отгрузки, логистика | 24 часа |
| Seller JSON-RPC API | JSON-RPC 2.0 | 24 | Товары, цены, остатки | 15 минут |
| Seller REST API | REST (OpenAPI 3.0) | 10 | FBS возвраты, обратная связь | 15 минут |
Всего: 85 эндпоинтов/методов в 24 категориях
Аутентификация
Lamoda использует OAuth2 протокол с JWT токенами для всех трёх API систем.
Получение учетных данных
Для доступа к API необходимо получить у менеджера Lamoda:
client_id— уникальный идентификатор клиентаclient_secret— секретный ключ клиента
Email для запроса: api-integration@lamoda.ru
1. B2B Platform API — Аутентификация
Тип: OAuth2 с JWT токенами
URL для получения токена:
- Production:
https://api-b2b.lamoda.ru/auth/token - Demo:
https://api-demo-b2b.lamoda.ru/auth/token
Метод: GET
Параметры запроса:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
client_id | string | Да | ID клиента |
client_secret | string | Да | Секрет клиента |
grant_type | string | Да | Тип авторизации (рекомендуется client_credentials) |
Пример запроса:
curl -X GET \
'https://api-b2b.lamoda.ru/auth/token?client_id=%CLIENT_ID%&client_secret=%CLIENT_SECRET%&grant_type=client_credentials'
Ответ:
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 86400,
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
Время жизни токена: 24 часа (86400 секунд)
Использование токена:
curl -X GET 'https://api-b2b.lamoda.ru/api/v1/orders' \
-H 'Authorization: Bearer {access_token}' \
-H 'Content-Type: application/json'
2. Seller JSON-RPC API — Аутентификация
Тип: OAuth2 с JWT токенами
URL: https://public-api-seller.lamoda.ru/jsonrpc
Метод: v1.tokens.create
Пример запроса:
curl -X POST https://public-api-seller.lamoda.ru/jsonrpc \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": "550e8400-e29b-41d4-a716-446655440000",
"method": "v1.tokens.create",
"params": {
"client_id": "%CLIENT_ID%",
"client_secret": "%CLIENT_SECRET%"
}
}'
Ответ:
{
"jsonrpc": "2.0",
"id": "550e8400-e29b-41d4-a716-446655440000",
"result": {
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 900
}
}
Время жизни токена: 15 минут (900 секунд)
Использование токена:
curl -X POST https://public-api-seller.lamoda.ru/jsonrpc \
-H 'Authorization: Bearer {access_token}' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": "550e8400-e29b-41d4-a716-446655440000",
"method": "v1.nomenclatures.list",
"params": {
"seller_id": 123,
"page": 1,
"limit": 10
}
}'
3. Seller REST API — Аутентификация
Тип: Bearer Token (использует токен от Seller JSON-RPC API)
URL: https://public-api-seller.lamoda.ru/api
Время жизни токена: ~15 минут (общий с JSON-RPC API)
Использование токена:
curl -X GET 'https://public-api-seller.lamoda.ru/api/v2/fbs/return-boxes' \
-H 'Authorization: Bearer {access_token}' \
-H 'Content-Type: application/json'
Base URL
B2B Platform API (REST)
| Среда | Base URL |
|---|---|
| Production | https://api-b2b.lamoda.ru |
| Demo (Test) | https://api-demo-b2b.lamoda.ru |
API префикс: /api/v1/
Аутентификация: OAuth2 (24 часа)
Seller JSON-RPC API
| Среда | Base URL |
|---|---|
| Production | https://public-api-seller.lamoda.ru/jsonrpc |
| Альтернативный gateway | https://seller-gateway.service.lamoda.tech/jsonrpc |
Аутентификация: OAuth2 (15 минут)
Seller REST API
| Среда | Base URL |
|---|---|
| Production | https://public-api-seller.lamoda.ru/api |
API префикс: /v2/
Аутентификация: Bearer Token (15 минут)
Rate Limits
⚠️ Важное примечание
Lamoda НЕ публикует конкретные цифры rate limits (например, "100 запросов в минуту") в открытой документации.
Что известно:
1. Rate limiting СУЩЕСТВУЕТ
- HTTP 429 ошибки задокументированы в B2B Platform API
- Конкретный случай: endpoint
POST /api/v1/notifications/resendвозвращает 429 при превышении лимитов
2. Генерация токенов НЕ ограничена
"Поддерживается генерация нескольких токенов без ограничений."
Можно создать множество токенов для параллельной обработки.
3. Время жизни токенов
- B2B Platform API: 24 часа
- Seller APIs: 15 минут
4. Пакетные операции НЕ поддерживаются
"Пакетная обработка: Не поддерживается. Используйте последовательные запросы."
Каждый элемент обрабатывается отдельным запросом.
5. Rate limit headers НЕ задокументированы
В спецификации OpenAPI отсутствуют стандартные заголовки:
X-RateLimit-LimitX-RateLimit-RemainingX-RateLimit-Reset
Рекомендуемые стратегии
1. Консервативный rate limiting
# Начните с 1 запроса в секунду
time.sleep(1) # между запросами
2. Экспоненциальный backoff при 429
import time
def make_request_with_retry(url, max_retries=5):
for attempt in range(max_retries):
response = requests.get(url)
if response.status_code == 429:
delay = 2 ** attempt # 1s, 2s, 4s, 8s, 16s
time.sleep(delay)
continue
return response
3. Параллельная обработка с несколькими токенами
# Создайте пул из 3-5 токенов
tokens = [generate_token() for _ in range(5)]
# Используйте round-robin для распределения запросов
4. Контакт с поддержкой
Для получения точных цифр rate limits обратитесь к:
- Email: api-integration@lamoda.ru
- SLA: 4 часа время ответа
Модели работы
Lamoda поддерживает 5 бизнес-моделей для партнёров:
1. FBS — Fulfillment by Seller (Выполнение заказов продавцом)
Описание: Продавец хранит товары на своем складе, комплектует и отправляет заказы.
Характеристики:
- Хранение: На складе продавца
- Комплектация: Продавец
- Доставка: Через Lamoda
- Возвраты: Через FBS Return Boxes API
Используемые API:
- B2B Platform API: заказы, этикетки, отгрузки
- Seller JSON-RPC API: товары, цены, остатки
- Seller REST API: FBS возвраты
Workflow:
- Загрузка каталога → 2. Установка цен → 3. Обновление стока → 4. Получение заказов → 5. Комплектация → 6. Печать этикеток → 7. Передача в доставку → 8. Обработка возвратов
2. FBO — Fulfillment by Operator/Lamoda (Выполнение заказов Lamoda)
Описание: Товары хранятся на складе Lamoda, весь процесс выполняется Lamoda.
Характеристики:
- Хранение: На складе Lamoda
- Комплектация: Lamoda
- Доставка: Lamoda
- Возвраты: Lamoda
Используемые API:
- B2B Platform API: поставки на склад, сток
- Seller JSON-RPC API: товары, цены
Workflow:
- Загрузка каталога → 2. Установка цен → 3. Создание поставки → 4. Передача на склад → 5. Автоматическая комплектация Lamoda
3. DBS — Delivery by Seller (Доставка продавцом)
Описание: Продавец осуществляет доставку собственными курьерами.
Характеристики:
- Хранение: На складе продавца
- Комплектация: Продавец
- Доставка: Курьеры продавца
Используемые API:
- B2B Platform API: заказы, методы доставки
- Seller JSON-RPC API: товары, цены, сток
4. B2B FF — B2B Fulfillment (Корпоративные заказы с выполнением Lamoda)
Описание: Корпоративные заказы (B2B) с выполнением Lamoda.
Характеристики:
- Клиенты: Корпоративные (B2B)
- Выполнение: Lamoda
5. B2B FBS — B2B Fulfillment by Seller (Корпоративные FBS)
Описание: Корпоративные заказы (B2B) с выполнением продавца.
Характеристики:
- Клиенты: Корпоративные (B2B)
- Выполнение: Продавец
- CutOff время: Указывается для отгрузки
Сравнительная таблица
| Характеристика | FBS | FBO | DBS | B2B FF | B2B FBS |
|---|---|---|---|---|---|
| Хранение | Продавец | Lamoda | Продавец | Lamoda | Продавец |
| Комплектация | Продавец | Lamoda | Продавец | Lamoda | Продавец |
| Доставка | Lamoda | Lamoda | Продавец | Lamoda | Продавец |
| Тип клиентов | B2C | B2C | B2C | B2B | B2B |
| API для стока | Seller API | B2B API | Seller API | B2B API | Seller API |
| Этикетки | B2B API | — | — | — | — |
| Возвраты | FBS Return API | Lamoda | Продавец | Lamoda | Продавец |
Обзор секций API
1. B2B Platform API (13 категорий, 51 эндпоинт)
| Категория | Эндпоинтов | Описание |
|---|---|---|
| Authentication | 1 | OAuth2 токен |
| Addresses | 3 | Поиск адресов (город, улица, дом) |
| Orders | 13 | Управление заказами |
| Nomenclature | 7 | Каталог товаров |
| Shipments | 8 | Отгрузки |
| Stock | 2 | Складские остатки |
| Delivery | 2 | Методы доставки |
| Pickup Points | 2 | Пункты выдачи |
| Partner Pickups | 3 | Забор товара курьером |
| Gift Certificates | 4 | Подарочные сертификаты |
| Labels | 1 | Генерация этикеток (PDF) |
| Notifications | 2 | Уведомления и вебхуки |
| Webhooks | 2 | События в реальном времени |
2. Seller JSON-RPC API (8 категорий, 24 метода)
| Категория | Методов | Описание |
|---|---|---|
| Authentication | 1 | Создание токена |
| Dictionaries | 2 | Справочники |
| Nomenclatures | 10 | Управление товарами |
| Attributes | 3 | Атрибуты товаров |
| Stock | 2 | Остатки |
| Orders | 3 | Статусы и отгрузка |
| Categories | 1 | Категории ERP |
| Questions | 2 | Вопросы покупателей |
3. Seller REST API (3 категории, 10 эндпоинтов)
| Категория | Эндпоинтов | Описание |
|---|---|---|
| FBS Return Boxes | 5 | Возвратные короба FBS |
| FBS Return Items | 3 | Возвращенные товары |
| Feedback | 2 | Обратная связь |
Детальное описание эндпоинтов
1. Товары (Products/Nomenclatures)
B2B Platform API
| Метод | Путь | Описание |
|---|---|---|
| GET | /api/v1/nomenclatures | Список номенклатуры |
| POST | /api/v1/nomenclatures | Создание номенклатуры |
| PATCH | /api/v1/nomenclatures/{sku} | Обновление номенклатуры |
| PUT | /api/v1/nomenclature/ | Полное обновление |
| GET | /api/v1/nomenclature/sell-values | Значения для продажи |
| GET | /api/v1/goods | Список товаров |
| GET | /api/v1/container/{barcode} | Информация по штрихкоду |
Seller JSON-RPC API
| Метод | Описание |
|---|---|
v1.nomenclatures.list | Список номенклатуры |
v1.nomenclature.list | Список товаров (альтернативный) |
v1.nomenclatures.store | Создание/обновление товаров |
v1.nomenclatures.update-activation | Обновление активности |
v1.nomenclatures.set-prices | Установка цен (несколько) |
v1.nomenclature.set-price | Установка цены |
v1.nomenclature.update-price | Обновление цены |
v1.nomenclatures-metadata.get-axapta-categories | Категории Axapta |
v1.nomenclatures-metadata.get-brands | Список брендов |
v1.nomenclature-images.update | Обновление изображений |
2. Заказы (Orders)
B2B Platform API
| Метод | Путь | Описание |
|---|---|---|
| GET | /api/v1/orders | Список заказов |
| POST | /api/v1/orders | Создание заказа |
| GET | /api/v1/orders/{id} | Детали заказа |
| PATCH | /api/v1/orders/{id} | Обновление заказа |
| GET | /api/v1/orders/{id}/customer | Информация о покупателе |
| POST | /api/v1/orders/{id}/customer | Обновление данных покупателя |
| GET | /api/v1/orders/{id}/delivery_method | Метод доставки |
| POST | /api/v1/orders/{id}/delivery_method | Обновление метода доставки |
| GET | /api/v1/orders/{id}/shipping_address | Адрес доставки |
| POST | /api/v1/orders/{id}/shipping_address | Обновление адреса |
| GET | /api/v1/orders/{id}/statuses | История статусов |
| POST | /api/v1/orders/{id}/events | Добавление события |
| POST | /api/v1/orders/{orderNr}/change_status_request | Изменение статуса |
Статусы заказа:
New— НовыйProcessing— В обработкеReadyForShipment— Готов к отгрузкеShipped— ОтгруженDelivered— ДоставленNotDelivered— Не доставленCanceled— ОтмененReturned— Возвращен
Seller JSON-RPC API
| Метод | Описание |
|---|---|
v1.order-item-statuses.list | Список статусов товаров |
v1.order.ship | Отгрузка заказа |
v1.order.delivery-note.download | Скачать накладную |
3. Возвраты (Returns)
Seller REST API (только FBS)
FBS Return Boxes (5 эндпоинтов):
| Метод | Путь | Описание |
|---|---|---|
| GET | /v2/fbs/return-boxes | Список возвратных коробов |
| GET | /v2/fbs/return-boxes/{id} | Детали короба |
| GET | /v2/fbs/return-boxes-summary | Сводка по коробам |
| GET | /v2/fbs/return-boxes-anomalies | Коробы с аномалиями |
| GET | /v2/fbs/return-boxes/{id}/status-history | История статусов |
Статусы короба:
IN_PROGRESS— В процессеACCEPTED— Принят
FBS Return Items (3 эндпоинта):
| Метод | Путь | Описание |
|---|---|---|
| GET | /v2/fbs/return-items | Список возвращенных товаров |
| GET | /v2/fbs/return-items-summary | Сводка по товарам |
| GET | /v2/fbs/return-items/{itemId}/status-history | История статусов |
Статусы товара:
CREATED— СозданLEFT_TO_WH— Отправлен на складARRIVED_TO_WH— Прибыл на складREADY_TO_RETURN— Готов к возвратуSHIPPED— Отправлен
4. Цены (Prices)
Seller JSON-RPC API
| Метод | Описание |
|---|---|
v1.nomenclatures.set-prices | Установка цен (массово) |
v1.nomenclature.set-price | Установка цены |
v1.nomenclature.update-price | Обновление цены |
B2B Platform API
| Метод | Путь | Описание |
|---|---|---|
| GET | /api/v1/nomenclature/sell-values | Значения цен |
| PUT | /api/v1/nomenclature/ | Обновление цен (страны СНГ) |
Типы цен:
base— Базовая ценаsale— Акционная цена
Валюты: RUB, BYN, KZT, UAH
5. Остатки (Stock)
B2B Platform API
| Метод | Путь | Описание |
|---|---|---|
| GET | /api/v1/stock/goods | Остатки на складе |
| POST | /api/v1/stock/goods | Обновление остатков |
Для FBO (склад Lamoda)
Seller JSON-RPC API
| Метод | Описание |
|---|---|
v1.stock.list | Получение остатков |
v1.fbo.warehouse.list | Список складов FBO |
Для FBS (склад продавца)
6. Отгрузки (Shipments)
B2B Platform API
Входящие отгрузки (Fulfilment Shipments) — для FBO:
| Метод | Путь | Описание |
|---|---|---|
| GET | /api/v1/shipments/fulfilment | Список отгрузок |
| POST | /api/v1/shipments/fulfilment | Создание отгрузки |
| GET | /api/v1/shipments/fulfilment/{id} | Детали отгрузки |
| GET | /api/v1/shipments/fulfilment/{id}/items | Товары в отгрузке |
| GET | /api/v1/shipments/fulfilment/{id}/packing-materials | Упаковочные материалы |
Исходящие отгрузки (Outgoing Shipments) — для FBS/DBS:
| Метод | Путь | Описание |
|---|---|---|
| GET | /api/v1/shipments | Список отгрузок |
| POST | /api/v1/shipments/out | Отгрузка со склада |
| POST | /api/v1/shipments/out/{id}/events | События отгрузки |
Дополнительно:
| Метод | Путь | Описание |
|---|---|---|
| POST | /api/v1/brand-packing/pack-shipment | Упаковка отгрузки |
7. Другие секции
Адреса (Addresses) — B2B Platform API
| Метод | Путь | Описание |
|---|---|---|
| GET | /api/v1/addresses/city | Поиск городов |
| GET | /api/v1/addresses/street | Поиск улиц |
| GET | /api/v1/addresses/building | Поиск зданий |
Доставка (Delivery) — B2B Platform API
| Метод | Путь | Описание |
|---|---|---|
| GET | /api/v1/delivery_methods | Методы доставки |
| GET | /api/v1/delivery_info | Информация о доставке |
| POST | /api/v1/delivery_info/{orderNr} | Обновление информации |
Пункты выдачи (Pickup Points) — B2B Platform API
| Метод | Путь | Описание |
|---|---|---|
| GET | /api/v1/pickup_points | Список пунктов |
| GET | /api/v1/pickup_points/{id} | Детали пункта |
Забор товара (Partner Pickups) — B2B Platform API
| Метод | Путь | Описание |
|---|---|---|
| GET | /api/v1/partner-pickups | Список pickup-ов |
| POST | /api/v1/partner-pickups | Создание pickup |
| PATCH | /api/v1/partner-pickups | Обновление pickup |
Подарочные сертификаты (Gift Certificates) — B2B Platform API
| Метод | Путь | Описание |
|---|---|---|
| GET | /api/v1/gift-certificates | Список сертификатов |
| POST | /api/v1/gift-certificates | Создание сертификата |
| GET | /api/v1/gift-certificates/balance | Баланс сертификата |
| POST | /api/v1/gift-certificates/payments | Оплата сертификатом |
Этикетки (Labels) — B2B Platform API
| Метод | Путь | Описание |
|---|---|---|
| GET | /api/v1/reports/label/stream | Генерация PDF этикеток |
Уведомления (Notifications) — B2B Platform API
| Метод | Путь | Описание |
|---|---|---|
| POST | /api/v1/notifications/resend | Повторная отправка |
| Webhook | POST | Webhook для уведомлений |
| Webhook | POST | Webhook для запросов |
Атрибуты (Attributes) — Seller JSON-RPC API
| Метод | Описание |
|---|---|
v1.attributes.list | Список атрибутов |
v1.attributes.sku.list | Атрибуты для SKU |
v1.attributes-dictionaries-mappings.get | Маппинги справочников |
Справочники (Dictionaries) — Seller JSON-RPC API
| Метод | Описание |
|---|---|
v1.dictionaries.get | Получение справочников |
v1.attribute-dictionaries.list | Справочники атрибутов |
Вопросы покупателей (Questions) — Seller JSON-RPC API
| Метод | Описание |
|---|---|
v1.questions.list | Список вопросов |
v1.questions.answer | Ответ на вопрос |
Обратная связь (Feedback) — Seller REST API
| Метод | Путь | Описание |
|---|---|---|
| GET | /v2/feedback/questions | Список вопросов |
| POST | /v2/feedback/questions/{questionId}/answer | Ответ на вопрос |
Категории (Categories) — Seller JSON-RPC API
| Метод | Описание |
|---|---|
v1.erp-categories.list | Список категорий ERP |
Коды ошибок
B2B Platform API (HTTP коды)
| Код | Название | Описание |
|---|---|---|
| 400 | Bad Request | Ошибка валидации данных |
| 401 | Unauthorized | Ошибка авторизации (неверный токен) |
| 403 | Forbidden | Доступ запрещён |
| 404 | Not Found | Ресурс не найден |
| 429 | Too Many Requests | Превышен Rate Limit |
| 500 | Internal Server Error | Внутренняя ошибка сервера |
Пример ответа 400:
{
"code": 0,
"description": "This value is not valid.",
"errors": [
{
"field": "field_name",
"message": "Error description"
}
]
}
Пример ответа 429:
{
"code": 0,
"description": "Rate limit has been reached",
"message": "Ошибка по достижении RateLimit",
"errors": []
}
Seller JSON-RPC API (JSON-RPC 2.0 коды)
| Код | Название | Описание |
|---|---|---|
| -32700 | Parse error | Ошибка парсинга JSON |
| -32600 | Invalid Request | Неверный запрос |
| -32601 | Method not found | Метод не найден |
| -32602 | Invalid params | Неверные параметры |
| -32603 | Internal error | Внутренняя ошибка |
| 0-32000 | Server error | Ошибка бизнес-логики |
Пример ответа:
{
"jsonrpc": "2.0",
"id": "request_id",
"error": {
"code": -32600,
"message": "Invalid Request",
"data": {}
}
}
Seller REST API (HTTP коды)
| Код | Название | Описание |
|---|---|---|
| 400 | Bad Request | Ошибка валидации |
| 401 | Unauthorized | Неверный токен |
| 403 | Forbidden | Доступ запрещён |
| 404 | Not Found | Ресурс не найден |
| 503 | Service Unavailable | Сервис недоступен |
Рекомендации по обработке ошибок
1. Всегда проверяйте HTTP статус
response = requests.get(url, headers=headers)
if response.status_code == 200:
return response.json()
elif response.status_code == 401:
# Обновить токен
refresh_token()
elif response.status_code == 429:
# Подождать и повторить
time.sleep(60)
2. Используйте exponential backoff
def make_request_with_retry(url, max_retries=5):
for attempt in range(max_retries):
response = requests.get(url)
if response.status_code == 429:
delay = 2 ** attempt # 1s, 2s, 4s, 8s, 16s
time.sleep(delay)
continue
return response
3. Логируйте все ошибки
import logging
logger = logging.getLogger(__name__)
if response.status_code != 200:
logger.error(f"API Error: {response.status_code} - {response.text}")
Руководство по интеграции
Шаг 1: Получение учетных данных
- Свяжитесь с менеджером Lamoda
- Получите
client_idиclient_secret - Сохраните их в безопасном месте (переменные окружения)
export LAMODA_CLIENT_ID="your_client_id"
export LAMODA_CLIENT_SECRET="your_client_secret"
Шаг 2: Выбор API системы
| Задача | API система |
|---|---|
| Управление товарами и ценами | Seller JSON-RPC API |
| Получение и обработка заказов | B2B Platform API |
| FBS возвраты | Seller REST API |
| Отгрузки и логистика | B2B Platform API |
Шаг 3: Реализация аутентификации
Для B2B Platform API (24-часовые токены):
import requests
from datetime import datetime, timedelta
class B2BAPIClient:
def __init__(self, client_id, client_secret):
self.client_id = client_id
self.client_secret = client_secret
self.token = None
self.token_expires_at = None
def get_token(self):
# Обновить токен, если истекает через час
if not self.token or datetime.now() >= self.token_expires_at - timedelta(hours=1):
self._refresh_token()
return self.token
def _refresh_token(self):
url = "https://api-b2b.lamoda.ru/auth/token"
params = {
"client_id": self.client_id,
"client_secret": self.client_secret,
"grant_type": "client_credentials"
}
response = requests.get(url, params=params)
data = response.json()
self.token = data["access_token"]
self.token_expires_at = datetime.now() + timedelta(seconds=data["expires_in"])
def get_orders(self):
token = self.get_token()
headers = {"Authorization": f"Bearer {token}"}
response = requests.get(
"https://api-b2b.lamoda.ru/api/v1/orders",
headers=headers
)
return response.json()
Для Seller JSON-RPC API (15-минутные токены):
import requests
from datetime import datetime, timedelta
class SellerAPIClient:
def __init__(self, client_id, client_secret):
self.client_id = client_id
self.client_secret = client_secret
self.token = None
self.token_expires_at = None
def get_token(self):
# Обновить токен, если истекает через 2 минуты
if not self.token or datetime.now() >= self.token_expires_at - timedelta(minutes=2):
self._refresh_token()
return self.token
def _refresh_token(self):
url = "https://public-api-seller.lamoda.ru/jsonrpc"
payload = {
"jsonrpc": "2.0",
"id": "550e8400-e29b-41d4-a716-446655440000",
"method": "v1.tokens.create",
"params": {
"client_id": self.client_id,
"client_secret": self.client_secret
}
}
response = requests.post(url, json=payload)
data = response.json()["result"]
self.token = data["access_token"]
self.token_expires_at = datetime.now() + timedelta(seconds=data["expires_in"])
def call(self, method, params=None):
token = self.get_token()
headers = {"Authorization": f"Bearer {token}"}
payload = {
"jsonrpc": "2.0",
"id": "550e8400-e29b-41d4-a716-446655440000",
"method": method,
"params": params or {}
}
response = requests.post(
"https://public-api-seller.lamoda.ru/jsonrpc",
headers=headers,
json=payload
)
return response.json()
Шаг 4: Загрузка каталога товаров
# Создание товаров
seller_api.call('v1.nomenclatures.store', {
'nomenclatures': [
{
'seller_sku': 'SKU123',
'name': 'Товар',
'brand': 'Бренд',
'category': 'Категория',
'attributes': {...}
}
]
})
# Установка цен
seller_api.call('v1.nomenclatures.set-prices', {
'prices': [
{
'seller_sku': 'SKU123',
'price': 1000.00
}
]
})
Шаг 5: Синхронизация остатков
# Для FBS (склад продавца)
seller_api.call('v1.stock.update', {
'seller_id': 123,
'stock': [
{
'seller_sku': 'SKU123',
'quantity': 10,
'warehouse_code': 'WH1'
}
]
})
# Для FBO (склад Lamoda) - получение остатков
b2b_api.get('/api/v1/stock/goods')
Шаг 6: Получение и обработка заказов
# Получение новых заказов
orders = b2b_api.get('/api/v1/orders', params={'status': 'New'})
for order in orders['data']:
order_nr = order['orderNr']
# Обновление статуса (для FBS)
b2b_api.post(f'/api/v1/orders/{order_nr}/collected')
# Печать этикеток
labels = b2b_api.get(f'/api/v1/reports/label/stream', params={'order_nrs': [order_nr]})
# Создание отгрузки
b2b_api.post('/api/v1/shipments/out', json={
'orders': [{'order_nr': order_nr, 'items': [...]}]
})
Шаг 7: Обработка FBS возвратов
import requests
token = seller_api.get_token()
headers = {"Authorization": f"Bearer {token}"}
# Получение списка возвратных коробов
response = requests.get(
"https://public-api-seller.lamoda.ru/api/v2/fbs/return-boxes",
headers=headers,
params={'page': 1, 'limit': 20}
)
return_boxes = response.json()['data']
for box in return_boxes:
box_id = box['id']
status = box['status']
if status == 'ACCEPTED':
# Обработать возврат
print(f"Return box {box_id} accepted")
Рекомендуемые практики
1. Кэширование токенов
# Не запрашивайте токен перед каждым запросом
# Используйте кэш с проверкой срока действия
class TokenCache:
def __init__(self):
self.cache = {}
def get_token(self, client_id, client_secret):
key = f"{client_id}:{client_secret}"
if key in self.cache:
token, expires_at = self.cache[key]
if datetime.now() < expires_at:
return token
# Получить новый токен
token = self._fetch_token(client_id, client_secret)
self.cache[key] = (token, datetime.now() + timedelta(hours=23))
return token
2. Логирование запросов
import logging
logger = logging.getLogger(__name__)
def log_request(method, url, status_code, response_time):
logger.info(f"{method} {url} - {status_code} - {response_time}ms")
3. Обработка rate limits
import time
from random import uniform
def make_request_with_backoff(url, max_retries=5):
for attempt in range(max_retries):
response = requests.get(url)
if response.status_code == 429:
# Экспоненциальный backoff с jitter
delay = (2 ** attempt) + uniform(0, 1)
time.sleep(delay)
continue
return response
raise Exception("Max retries exceeded")
4. Валидация данных
def validate_product(product):
required_fields = ['seller_sku', 'name', 'brand', 'category']
for field in required_fields:
if field not in product:
raise ValueError(f"Missing required field: {field}")
return True
5. Мониторинг
from prometheus_client import Counter, Histogram
# Метрики
api_requests = Counter('lamoda_api_requests_total', 'Total API requests')
api_errors = Counter('lamoda_api_errors_total', 'Total API errors')
api_latency = Histogram('lamoda_api_latency_seconds', 'API request latency')
@api_latency.time()
def make_api_request():
api_requests.inc()
try:
response = requests.get(url)
if response.status_code != 200:
api_errors.inc()
return response
except Exception as e:
api_errors.inc()
raise
Полезные ресурсы
Официальная документация
- Lamoda Seller Academy: https://academy.lamoda.ru/
- B2B Platform API Spec: (скачано, 252KB)
- Seller JSON-RPC API Spec: (скачано, 96KB)
- Seller REST API Spec: (скачано, 46KB)
Поддержка
- Email: api-integration@lamoda.ru
- SLA: 4 часа
Официальные библиотеки
Загруженные файлы
OpenAPI спецификации
Все спецификации сохранены в директорию:
/Users/antonnozdrin/Tools/SCRAP/marketplace-api-specs/lamoda/
| Файл | Размер | Описание |
|---|---|---|
lamoda_b2b_openapi.yaml | 252KB | B2B Platform API (51 эндпоинт) |
lamoda_seller_jsonrpc_api.yaml | 96KB | Seller JSON-RPC API (24 метода) |
lamoda_seller_rest_api.yaml | 46KB | Seller REST API (10 эндпоинтов) |
Общий размер: 394KB
Проверка полноты покрытия эндпоинтов
Верификация покрытия
Дата проверки: 11 февраля 2026 Статус: ✅ Полное покрытие
B2B Platform API (REST) — 51 эндпоинт
Все категории из OpenAPI спецификации покрыты:
| # | Категория в OpenAPI | Покрыто в документации | Эндпоинтов |
|---|---|---|---|
| 1 | Авторизация | ✅ Аутентификация | 1 |
| 2 | Адреса | ✅ Адреса (Addresses) | 3 |
| 3 | Заказы | ✅ Заказы (Orders) | 13 |
| 4 | Номенклатуры | ✅ Товары (Products) | 7 |
| 5 | Товары | ✅ Товары (Products) | 1 |
| 6 | Входящие поставки | ✅ Отгрузки (Shipments) | 5 |
| 7 | Управление поставками | ✅ Отгрузки (Shipments) | 3 |
| 8 | Сток | ✅ Остатки (Stock) | 2 |
| 9 | Доставка | ✅ Доставка (Delivery) | 2 |
| 10 | Информация о доставке | ✅ Доставка (Delivery) | 1 |
| 11 | Работа с партнерским ПВЗ | ✅ Пункты выдачи (Pickup Points) | 2 |
| 12 | Подарочные сертификаты | ✅ Подарочные сертификаты | 4 |
| 13 | Этикетки по заказу | ✅ Этикетки (Labels) | 1 |
| 14 | Уведомления | ✅ Уведомления (Notifications) | 2 |
| 15 | Цены и ограничения | ✅ Цены (Prices) | 2 |
| 16 | Изменение статуса | ✅ Заказы (Orders) | 2 |
| 17 | Уведомления о поставках | ✅ Отгрузки (Shipments) | 1 |
Итого B2B Platform API: 51/51 эндпоинтов (100%)
Seller JSON-RPC API — 24 метода
Все методы покрыты:
| # | Метод | Покрыто | Описание |
|---|---|---|---|
| 1 | v1.tokens.create | ✅ Аутентификация | Создание токена |
| 2 | v1.dictionaries.get | ✅ Справочники (Dictionaries) | Получение справочников |
| 3 | v1.attribute-dictionaries.list | ✅ Справочники (Dictionaries) | Справочники атрибутов |
| 4 | v1.nomenclatures.list | ✅ Товары (Products) | Список номенклатуры |
| 5 | v1.nomenclature.list | ✅ Товары (Products) | Список товаров |
| 6 | v1.nomenclatures.store | ✅ Товары (Products) | Создание/обновление |
| 7 | v1.nomenclatures.update-activation | ✅ Товары (Products) | Обновление активности |
| 8 | v1.nomenclatures.set-prices | ✅ Цены (Prices) | Установка цен |
| 9 | v1.nomenclature.set-price | ✅ Цены (Prices) | Установка цены |
| 10 | v1.nomenclature.update-price | ✅ Цены (Prices) | Обновление цены |
| 11 | v1.nomenclatures-metadata.get-axapta-categories | ✅ Категории (Categories) | Категории Axapta |
| 12 | v1.nomenclatures-metadata.get-brands | ✅ Товары (Products) | Список брендов |
| 13 | v1.nomenclature-images.update | ✅ Товары (Products) | Обновление изображений |
| 14 | v1.attributes.list | ✅ Атрибуты (Attributes) | Список атрибутов |
| 15 | v1.attributes.sku.list | ✅ Атрибуты (Attributes) | Атрибуты для SKU |
| 16 | v1.attributes-dictionaries-mappings.get | ✅ Атрибуты (Attributes) | Маппинги справочников |
| 17 | v1.stock.list | ✅ Остатки (Stock) | Получение остатков |
| 18 | v1.fbo.warehouse.list | ✅ Остатки (Stock) | Список складов FBO |
| 19 | v1.order-item-statuses.list | ✅ Заказы (Orders) | Список статусов |
| 20 | v1.order.ship | ✅ Заказы (Orders) | Отгрузка заказа |
| 21 | v1.order.delivery-note.download | ✅ Заказы (Orders) | Скачать накладную |
| 22 | v1.erp-categories.list | ✅ Категории (Categories) | Категории ERP |
| 23 | v1.questions.list | ✅ Вопросы (Questions) | Список вопросов |
| 24 | v1.questions.answer | ✅ Вопросы (Questions) | Ответ на вопрос |
Итого Seller JSON-RPC API: 24/24 метода (100%)
Seller REST API — 10 эндпоинтов
Все эндпоинты покрыты:
| # | Эндпоинт | Покрыто | Описание |
|---|---|---|---|
| 1 | GET /v2/fbs/return-boxes | ✅ Возвраты (Returns) | Список коробов |
| 2 | GET /v2/fbs/return-boxes/{id} | ✅ Возвраты (Returns) | Детали короба |
| 3 | GET /v2/fbs/return-boxes-summary | ✅ Возвраты (Returns) | Сводка |
| 4 | GET /v2/fbs/return-boxes-anomalies | ✅ Возвраты (Returns) | Аномалии |
| 5 | GET /v2/fbs/return-boxes/{id}/status-history | ✅ Возвраты (Returns) | История статусов |
| 6 | GET /v2/fbs/return-items | ✅ Возвраты (Returns) | Список товаров |
| 7 | GET /v2/fbs/return-items-summary | ✅ Возвраты (Returns) | Сводка по товарам |
| 8 | GET /v2/fbs/return-items/{itemId}/status-history | ✅ Возвраты (Returns) | История статусов |
| 9 | GET /v2/feedback/questions | ✅ Обратная связь (Feedback) | Список вопросов |
| 10 | POST /v2/feedback/questions/{questionId}/answer | ✅ Обратная связь (Feedback) | Ответ на вопрос |
Итого Seller REST API: 10/10 эндпоинтов (100%)
Общая статистика покрытия
| API система | Эндпоинтов в спецификации | Покрыто | % покрытия |
|---|---|---|---|
| B2B Platform API (REST) | 51 | 51 | 100% |
| Seller JSON-RPC API | 24 | 24 | 100% |
| Seller REST API | 10 | 10 | 100% |
| ИТОГО | 85 | 85 | 100% |
Статистика
- API систем: 3
- Категорий: 24
- Эндпоинтов/методов: 85
- Бизнес-моделей: 5
- Поддерживаемых стран: Россия, Беларусь, Казахстан, Украина
- Покрытие документации: 100% ✅
Часто задаваемые вопросы
Q: Какую бизнес-модель выбрать?
A:
- FBS — если есть свой склад и хотите контролировать комплектацию
- FBO — если хотите делегировать логистику Lamoda
- DBS — если есть собственная курьерская служба
Q: Как часто обновлять токены?
A:
- B2B Platform API: каждые 23 часа (TTL = 24 часа)
- Seller APIs: каждые 14 минут (TTL = 15 минут)
Q: Как обрабатывать rate limits?
A:
- Используйте exponential backoff
- Начните с 1 запроса в секунду
- Логируйте все 429 ответы
- Контактируйте с поддержкой для точных лимитов
Q: Поддерживаются ли пакетные операции?
A:
"Пакетная обработка: Не поддерживается. Используйте последовательные запросы."
Каждый элемент обрабатывается отдельным запросом.
Q: Как получить доступ к API?
A:
- Свяжитесь с менеджером Lamoda
- Получите
client_idиclient_secret - Email: api-integration@lamoda.ru
Версионирование
Текущая версия: 1.0 Дата последнего обновления: 11 февраля 2026
Контактная информация
Поддержка API:
- Email: api-integration@lamoda.ru
- Документация: https://academy.lamoda.ru/
- GitHub: https://github.com/lamoda
Конец документа
© 2025 Lamoda Seller API Documentation