СДЭК API v2: Создать заказ и дождаться его регистрации

Сценарий из mcp-everything. Актуально на 2026-10-24.

Передать заказ интернет-магазина в СДЭК и получить номер отправления.

  1. Отправь заказ: POST /v2/orders с tariff_code, number (номер заказа у тебя), recipient (name и phones), packages с товарами в items и адресом: delivery_point для доставки до пункта выдачи или to_location для курьерской доставки — не оба сразу. Точно так же shipment_point и from_location взаимоисключающие.
  2. Сервер ответит 202 Accepted с uuid заказа и статусом запроса ACCEPTED — это только первичная проверка, заказ ещё не создан.
  3. Проверь результат: GET /v2/orders/{uuid} с паузой 2–3 секунды. Обычно ответ готов за полсекунды, в пиковые часы — до минуты. Статус запроса SUCCESSFUL означает, что заказ создан, INVALID — что нет, причина в errors.
  4. Когда заказ создан, сохрани cdek_number: по нему покупатель отслеживает посылку.
  5. Поменять заказ можно через PATCH /v2/orders, пока он в статусе CREATED или ACCEPTED. Если заказ уже принят к перевозке, придёт ошибка v2_update_forbidden.
# Тариф 136 — «Посылка склад-склад»: сдаёшь в ПВЗ, покупатель забирает в ПВЗ
curl -X POST https://api.cdek.ru/v2/orders \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
        "type": 1,
        "number": "ORDER-1042",
        "tariff_code": 136,
        "shipment_point": "<код ПВЗ, куда сдашь посылку>",
        "delivery_point": "<код ПВЗ покупателя>",
        "recipient": {"name": "Иван Петров", "phones": [{"number": "+79990001122"}]},
        "packages": [{
          "number": "1",
          "weight": 1500, "length": 20, "width": 15, "height": 10,
          "items": [{"name": "Кружка", "ware_key": "SKU-17", "payment": {"value": 0}, "cost": 990, "weight": 1500, "amount": 1}]
        }]
      }'

# Через 2–3 секунды — проверить, создан ли заказ
curl https://api.cdek.ru/v2/orders/<uuid> -H "Authorization: Bearer $TOKEN"

Базовые URL

Авторизация

Тип: OAuth 2.0

OAuth 2.0 (client credentials). Токен получают запросом POST /v2/oauth/token с grant_type=client_credentials, client_id (Account) и client_secret (Secure password) из личного кабинета СДЭК (раздел интеграции) и передают в заголовке Authorization: Bearer <token> (JWT). Для интеграции нужен договор со СДЭК.

Тестовая учётная запись для api.edu.cdek.ru (из документации):

Методы сценария

POST /v2/orders — Регистрация заказа

Создаёт заказ на доставку. Возвращает 202 Accepted с UUID заказа и статусом запроса; статус ACCEPTED не гарантирует создание заказа.

Параметр Где Тип Обяз. Описание
type body integer нет 1 — интернет-магазин, 2 — доставка
number body string нет Номер заказа в системе клиента (для ИМ), до 40 символов
tariff_code body integer да Код тарифа
comment body string нет Комментарий
shipment_point body string нет ПВЗ, куда клиент привезёт посылку; не вместе с from_location
delivery_point body string нет ПВЗ доставки; обязателен для тарифов «до склада»
sender body object нет Отправитель; обязателен для типа «доставка»
recipient body object да Получатель
recipient.name body string да ФИО контактного лица
recipient.phones body array да Телефоны (до 10): number, additional
recipient.email body string нет Email
from_location body object нет Адрес отправления; не вместе с shipment_point
to_location body object нет Адрес получения; не вместе с delivery_point
to_location.address body string нет Строка адреса
to_location.code body integer нет Код населённого пункта СДЭК
delivery_recipient_cost body object нет Доп. сбор за доставку с получателя (для ИМ)
services body array нет Дополнительные услуги
packages body array да Места, от 1 до 255
packages[].number body string да Номер упаковки
packages[].weight body integer да Вес, граммы
packages[].length body integer нет Длина, см
packages[].width body integer нет Ширина, см
packages[].height body integer нет Высота, см
packages[].items body array нет Товары; обязательно для заказов «интернет-магазин»
packages[].items[].name body string да Наименование товара
packages[].items[].ware_key body string да Артикул
packages[].items[].payment body object да Оплата при получении за единицу (value ≥ 0)
packages[].items[].cost body number да Объявленная стоимость за единицу
packages[].items[].weight body integer да Вес
packages[].items[].amount body integer да Количество
packages[].items[].marking body string нет Код маркировки «Честный знак»
print body string нет Тип печатной формы для формирования

GET /v2/orders/{uuid} — Информация о заказе по UUID

Детальная информация о заказе: статусы, доставка, получатель. По номеру СДЭК или номеру ИМ — GET /v2/orders с параметрами cdek_number или im_number.

Параметр Где Тип Обяз. Описание
uuid path string да Идентификатор заказа в ИС СДЭК

PATCH /v2/orders — Изменение заказа

Изменение возможно только в статусах CREATED и ACCEPTED. Удаление — DELETE /v2/orders/{uuid}.

Нюансы

Другие сценарии


Если этого недостаточно — официальная документация: https://apidoc.cdek.ru/ Вся интеграция одним документом: https://mcp-everything.ru/integrations/cdek.md