13
Стать партнером
13
{{ formatMonthYear(startMonth) }}
{{ d }}
{{ day.day }}
{{ formatMonthYear(endMonth) }}
{{ d }}
{{ day.day }}
Обновлено
20.03.2026
Содержание статьи

OAuth 2.0 авторизация

Lamoda использует OAuth 2.0 с типом гранта client_credentials. Для доступа к API необходимо получить токен и передавать его в заголовке каждого запроса.

Получение учётных данных (credentials)

Для авторизации в API необходимы ключи client_id и client_secret. Эти данные предоставляются вашим менеджером (KAM) при подключении к платформе.

Что получить От кого Для чего
client_id Менеджер (KAM) Идентификация клиента при авторизации
client_secret Менеджер (KAM) Секретный ключ для авторизации

Важно: Один набор client_id / client_secret работает для обоих API (Lamoda Seller Partner API и Lamoda B2B Platform Partner API). Храните client_secret в безопасном месте и не передавайте третьим лицам.

Endpoints авторизации

API Endpoint Метод
Lamoda Seller Partner API https://public-api-seller.lamoda.ru/jsonrpc/v1/tokens.create POST
Lamoda B2B Platform Partner API https://api-b2b.lamoda.ru/auth/token POST

Время жизни токена (TTL): 15 минут (900 секунд) для обоих API.

Получение токена: Lamoda Lamoda Seller Partner API

Запрос

curl -X POST 'https://public-api-seller.lamoda.ru/jsonrpc/v1/tokens.create' \
  -H 'Content-Type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "method": "v1.tokens.create",
    "params": {
      "client_id": "YOUR_CLIENT_ID",
      "client_secret": "YOUR_CLIENT_SECRET",
      "grant_type": "client_credentials"
    }
}'

Параметры запроса

Параметр Тип Обязательный Допустимые значения Описание
jsonrpc string Да "2.0" Версия протокола JSON-RPC. Всегда "2.0"
id string Да UUID v4, 36 символов Уникальный идентификатор запроса. Возвращается в ответе для сопоставления
method string Да "POST /jsonrpc/v1/tokens.create" Название вызываемого метода
params.client_id string Да Идентификатор клиента, полученный от менеджера
params.client_secret string Да Секретный ключ клиента, полученный от менеджера
params.grant_type string Да "client_credentials" Тип авторизации OAuth 2.0. Всегда "client_credentials"

Успешный ответ (HTTP 200)

{
  "jsonrpc": "2.0",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "result": {
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9...",
    "expires_in": 900,
    "token_type": "bearer",
    "scope": "partner_client r_orders c_order u_order r_nomenclatures ..."
  }
}

Поля ответа

Поле Тип Пример Описание
jsonrpc string "2.0" Версия протокола JSON-RPC
id string "550e8400-..." ID запроса (совпадает с отправленным)
result.access_token string "eyJ0eXAi..." JWT-токен для авторизации запросов
result.expires_in integer 900 Время жизни токена в секундах (900 = 15 минут)
result.token_type string "bearer" Тип токена. Всегда "bearer"
result.scope string "partner_client r_orders ..." Список прав доступа через пробел (см. таблицу scopes)

Получение токена: Lamoda B2B Platform Partner API (REST)

Запрос

curl -X POST 'https://api-b2b.lamoda.ru/auth/token' \
  -H 'Content-Type: application/json' \
  -d '{
    "client_id": "YOUR_CLIENT_ID",
    "client_secret": "YOUR_CLIENT_SECRET",
    "grant_type": "client_credentials"
}'

Параметры запроса

Параметр Тип Обязательный Допустимые значения Описание
client_id string Да Идентификатор клиента, полученный от менеджера
client_secret string Да Секретный ключ клиента, полученный от менеджера
grant_type string Да "client_credentials" Тип авторизации OAuth 2.0. Всегда "client_credentials"

Успешный ответ (HTTP 200)

{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "expires_in": 900,
  "token_type": "Bearer",
  "scope": "partner_client r_orders c_order ..."
}

Поля ответа

Поле Тип Пример Описание
access_token string "eyJhbGci..." JWT-токен для авторизации запросов
expires_in integer 900 Время жизни токена в секундах (900 = 15 минут)
token_type string "Bearer" Тип токена. Всегда "Bearer"
scope string "partner_client r_orders ..." Список прав доступа через пробел

Использование токена

Передавайте токен в заголовке Authorization с префиксом Bearer:

curl -X GET 'https://api-b2b.lamoda.ru/api/v1/orders' \
  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIs...'

Важно: Между словом Bearer и токеном должен быть ровно один пробел. Не используйте кавычки вокруг токена.

Права доступа (scopes)

Поле scope в ответе содержит список прав, доступных вашему токену. Основные права:

Scope Описание
partner_client Базовый доступ партнёра
r_orders Чтение списка заказов
r_order Чтение деталей заказа
c_order Создание заказов
u_order Обновление заказов
c_shipments Создание отгрузок
r_shipments Чтение отгрузок
r_nomenclatures Чтение номенклатуры
c_nomenclature Создание номенклатуры
u_nomenclature Обновление номенклатуры
r_stock Чтение остатков
c_status_change Изменение статусов
r_reports_label Получение этикеток
u_notifications Управление нотификациями

Если в ответе отсутствует нужный scope, обратитесь к вашему менеджеру для расширения прав доступа.

Время жизни токена (TTL)

TTL токена = 900 секунд = 15 минут.

Токен необходимо обновлять до истечения срока действия. Рекомендуемые стратегии:

Вариант 1: Проактивное обновление (рекомендуется)

Обновляйте токен за 1-2 минуты до истечения:

import time
import requests

class LamodaAPI:
    def __init__(self, client_id, client_secret, base_url):
        self.client_id = client_id
        self.client_secret = client_secret
        self.base_url = base_url
        self.token = None
        self.token_expires_at = 0
    
    def get_token(self):
        # Обновляем токен за 60 секунд до истечения
        if self.token and time.time() < self.token_expires_at - 60:
            return self.token
        
        response = requests.post(
            f"{self.base_url}/auth/token",
            json={
                "client_id": self.client_id,
                "client_secret": self.client_secret,
                "grant_type": "client_credentials"
            }
        )
        data = response.json()
        
        self.token = data["access_token"]
        self.token_expires_at = time.time() + data["expires_in"]
        
        return self.token
    
    def request(self, method, endpoint, **kwargs):
        headers = kwargs.pop("headers", {})
        headers["Authorization"] = f"Bearer {self.get_token()}"
        
        return requests.request(
            method,
            f"{self.base_url}{endpoint}",
            headers=headers,
            **kwargs
        )

Вариант 2: Реактивное обновление

При получении 401 Unauthorized — запросите новый токен и повторите запрос:

def request_with_retry(api, method, endpoint, data=None):
    try:
        return api.request(method, endpoint, json=data)
    except requests.HTTPError as e:
        if e.response.status_code == 401:
            # Сбрасываем токен и пробуем снова
            api.token = None
            return api.request(method, endpoint, json=data)
        raise

Ошибки авторизации

Код Сообщение Причина Решение
50401 Unauthorized Токен истёк или невалиден Запросите новый токен
50400 Партнер не найден / Partner not found Неверный client_id или client_secret Проверьте учётные данные у менеджера
50403 Forbidden Нет прав на ресурс (отсутствует scope) Проверьте права доступа у менеджера

Полный список ошибок: Справочник кодов ошибок

Частые проблемы

"Партнер не найден" (код 50400)

Возможные причины:

  • Неверный client_id или client_secret
  • Партнёр не активирован в системе

Решение: Уточните учётные данные (credentials) у вашего менеджера.

Токен перестаёт работать через 15 минут

Это нормальное поведение. TTL токена = 900 секунд = 15 минут. Реализуйте автоматическое обновление токена (см. примеры выше).

Отсутствие пробела после Bearer

Неправильно: Authorization: BearereyJhbGci...

Правильно: Authorization: Bearer eyJhbGci...

См. также

Помогла эта информация?

Да Нет
0/1000 Отправить
Атрибуты и справочники API
Точки входа (endpoints) API
Спросить у Lamoda Seller Assistant в Telegram