СДЭК API v2: Рассчитать стоимость и сроки доставки

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

Показать покупателю цену и срок доставки СДЭК в корзине или калькуляторе на сайте.

  1. Получи токен: POST /v2/oauth/token с grant_type=client_credentials, client_id (Account) и client_secret (Secure password) из личного кабинета СДЭК. Токен живёт expires_in секунд — сохрани его и переиспользуй, а не запрашивай на каждый расчёт.
  2. Рассчитай все доступные тарифы: POST /v2/calculator/tarifflist с from_location, to_location и packages. Вес передавай в граммах, габариты — в сантиметрах.
  3. В ответе для каждого тарифа есть код, название, стоимость delivery_sum и срок period_min–period_max в днях. Покажи покупателю подходящие тарифы и сохрани tariff_code — он понадобится при создании заказа.
  4. Для отладки используй тестовый адрес https://api.edu.cdek.ru и тестовую учётную запись из документации, на боевом — https://api.cdek.ru.
# Токен (кешируй на expires_in секунд)
TOKEN=$(curl -s -X POST "https://api.cdek.ru/v2/oauth/token?grant_type=client_credentials&client_id=<Account>&client_secret=<Secure password>" | jq -r .access_token)

# Все тарифы: Москва → Санкт-Петербург, посылка 1,5 кг
curl -X POST https://api.cdek.ru/v2/calculator/tarifflist \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
        "from_location": {"code": 44},
        "to_location": {"code": 137},
        "packages": [{"weight": 1500, "length": 20, "width": 15, "height": 10}]
      }'

Базовые 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/oauth/token — Получение токена авторизации

В ответе: access_token, token_type, expires_in, scope, jti.

Параметр Где Тип Обяз. Описание
grant_type query string да client_credentials
client_id query string да Идентификатор клиента
client_secret query string да Секретный ключ клиента

POST /v2/calculator/tarifflist — Расчёт по доступным тарифам

Стоимость и сроки доставки по всем доступным тарифам. Расчёт по конкретному тарифу — POST /v2/calculator/tariff, с доп. услугами — POST /v2/calculator/tariffAndService.

Параметр Где Тип Обяз. Описание
date body string нет Плановая дата передачи заказа; по умолчанию текущая
type body integer нет 1 — интернет-магазин (по умолчанию), 2 — доставка
currency body integer нет Код валюты расчёта
lang body string нет rus, eng, zho
shipment_point body string нет ПВЗ, куда клиент привезёт посылку
delivery_point body string нет ПВЗ доставки
from_location body object да Откуда: code, postal_code, country_code, city, address, координаты
to_location body object да Куда: те же поля
packages body array да Места
packages[].weight body integer да Вес в граммах
packages[].length body integer нет Длина, см
packages[].width body integer нет Ширина, см
packages[].height body integer нет Высота, см

Нюансы

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


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