Руководство по Amazon SP-API
Регистрация и доступ
1. Регистрация приложения
Для работы со SP-API необходимо:
- Аккаунт Amazon Seller Central или Vendor Central
- Зарегистрированное приложение в Seller Central
- Заполненный профиль разработчика (Developer Profile)
2. Получение SP-API ролей
Amazon требует указать роли при регистрации приложения:
- Public — публичные приложения (для других продавцов)
- Private — приватные приложения (только для вашего аккаунта)
3. Авторизация продавца
Продавец должен авторизовать приложение через:
- Авторизационная ссылка — redirect URL на ваш сервер
- Seller Central — ручная авторизация в Settings → Authorization
После авторизации вы получаете:
refresh_token— для генерации access токеновSPAPI_AWS_ACCESS_KEY_ID— для подписи запросов (устаревший метод)
Аутентификация
LWA Token Exchange
POST https://api.amazon.com/auth/o2/token
Content-Type: application/x-www-form-urlencoded
grant_type=refresh_token
&refresh_token=<your_refresh_token>
&client_id=<your_client_id>
&client_secret=<your_client_secret>
Ответ:
{
"access_token": "Atza|...",
"token_type": "bearer",
"expires_in": 3600,
"refresh_token": "Atzr|..."
}
Использование токена
curl -X GET \
"https://sellingpartnerapi-na.amazon.com/orders/v0/orders?CreatedAfter=2024-01-01" \
-H "x-amz-access-token: Atza|..."
Rate Limits и обработка 429
Стратегия обработки
import time
import requests
def sp_api_request(url, max_retries=5):
for attempt in range(max_retries):
resp = requests.get(url, headers=headers)
if resp.status_code == 429:
retry_after = int(resp.headers.get("Retry-After", 5))
time.sleep(retry_after)
continue
if resp.status_code == 200:
rate_limit = resp.headers.get("x-amzn-RateLimit-Limit")
# Соблюдение rate limit
if rate_limit:
min_delay = 1.0 / float(rate_limit)
time.sleep(min_delay)
return resp
raise Exception(f"Max retries ({max_retries}) exceeded")
Leaky Bucket
Каждая группа операций имеет свою квоту:
- Rate — запросов в секунду (пополнение)
- Burst — максимальный размер очереди
Например: rate=0.016, burst=15
→ можно мгновенно отправить 15 запросов,
затем 1 запрос каждые ~62 секунды
Основные операции
Получение маркетплейсов
GET /sellers/v1/marketplaceParticipations
Возвращает список маркетплейсов, в которых продавец может листить товары.
Управление заказами
GET /orders/v0/orders?CreatedAfter=2024-01-01
GET /orders/v0/orders/{orderId}
POST /orders/v0/orders/{orderId}/acknowledge
Работа с каталогом
GET /catalog/2022-04-01/items/{asin}?marketplaceId=ATVPDKIKX0DER
PUT /listings/2021-08-01/items/{sellerId}/{sku}
Вебхуки (Notifications)
SP-API поддерживает push-уведомления через SQS или EventBridge:
POST /notifications/v1/subscriptions
{
"notificationType": "ORDER_CHANGE",
"destinationArn": "arn:aws:sqs:us-east-1:..."
}