Использование API СДЭК для автоматического создания накладных
ТЕХНО
Если вы продавец с 100+ товарами на Авито, ручное создание накладных для каждого заказа — непозволительная роскошь. Через API СДЭК можно автоматически генерировать накладные в момент оформления заказа на Авито. В этом материале — готовый алгоритм: от получения ключей до боевого запуска.
Заключите договор со СДЭК, войдите в ЛК и создайте ключи client_id/client_secret в разделе Интеграция.
Настройка OAuth 2.0 и кэширование
Получите токен по grant_type=client_credentials. Кэшируйте его на 3600 секунд, чтобы избежать ошибки 429.
Создание заказа через POST /v2/orders
Отправьте JSON c данными получателя, товарами и тарифом. В ответ получите номер накладной (uuid).
Сравнение
Критерий
По теме страницы
Создание накладных вручную через ЛК
Скорость создания накладной
Автоматически (менее 1 сек)
2-5 минут
Человеческие ошибки
Отсутствуют
Возможны (опечатки, неверный тариф)
Интеграция с Авито
Полная (заказ → накладная)
Нет (нужно вводить вручную)
Затраты времени на 100 заказов
5 минут
3-4 часа
Как это работает
1
Получите ключи API
В ЛК СДЭК перейдите в «Интеграция», создайте приложение, скопируйте client_id и client_secret.
2
Получите access_token
Отправьте POST на /v2/oauth/token?grant_type=client_credentials&client_id=...&client_secret=... Сохраните токен сроком на 1 час.
3
Создайте скрипт для вызова API
Напишите на Python: используйте requests.post('https://api.edu.cdek.ru/v2/orders', json=data, headers={'Authorization': 'Bearer '+token}).
4
Запустите тест на sandbox
Проверьте создание накладной на тестовом сервере. Если вернулся uuid — всё работает. Повторите для 10 заказов.
Подробно
Структура запроса для создания накладной
Пример тела запроса: {"number": "AVITO123", "tariff_code": 136, "recipient": {"name": "Иван", "phones": [{"number": "+79001234567"}], "address": {"city": "Москва", "street": "Тверская", "house": "1"}}, "packages": [{"weight": 1000, "length": 20, "width": 15, "height": 10}]}. Обязательные поля: номер заказа (можно свой), тариф, адрес, вес в граммах.
Обработка ошибок и тестирование
На этапе тестирования используйте sandbox api.edu.cdek.ru. Типичные ошибки: неверный формат телефона, номера заказа уже существует (используйте уникальные), превышение лимита веса для тарифа. После исправления ошибок повторите запрос. В production установите лимит запросов — не более 10 в секунду на один токен.
Словарь терминов
OAuth 2.0 client_credentials—Протокол авторизации для серверных приложений. Позволяет получить токен по паре ключей.
Sandbox—Тестовая среда API СДЭК (api.edu.cdek.ru) для отладки без списания реальных средств.
UUID накладной—Уникальный идентификатор созданной накладной в формате xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.
Отзывы
Павел
Разработчик на PHP
★★★★★
Интегрировал API СДЭК с Авито: при каждом новом заказе автоматом создаётся накладная. Кэш токена сохраняю в файл, обновляю раз в 50 минут. Ни одной ошибки 429.
Игорь
Владелец интернет-магазина на Авито
★★★★★
Раньше уходило часа два на создание накладных. Теперь скрипт делает это за секунду. Экономия времени — колоссальная.
Частые вопросы
Можно ли использовать API СДЭК без договора?
Нет, для доступа к API требуется заключить договор со СДЭК. Только после этого выдаются ключи.
Как часто нужно обновлять токен?
Токен действует 3600 секунд (1 час). Его нужно перевыпускать по истечении или кэшировать и обновлять по таймеру.
Что делать, если в ответе ошибка 429?
Превышен лимит запросов. Кэшируйте токен и результаты расчётов, добавляйте задержку между запросами (минимум 100 мс).
Р
Cdek-Logistika
Редакция портала · проверка фактов
Материал подготовлен в формате справочного разбора для информационного портала.
Попробуйте создать первую накладную через API — скачайте готовый скрипт на Python!