Передача ключей цифровых товаров

Метод доступен для модели DBS.

Пока недоступен для продавцов Market Yandex Go.

Если вы используете API-Key-токен, для вызова метода необходим один из доступов в списке

Передает ключи цифровых товаров, которые покупатель заказал и оплатил. После выполнения запроса Маркет отправит ему письмо с ключами и инструкциями по активации. Если письмо будет доставлено, Маркет переведет заказ в финальный статус DELIVERED.

После передачи кода покупателю статус заказа изменится не сразу

Подключите API-уведомления — Маркет отправит вам запрос POST notification, когда заказ перейдет в статус DELIVERED.

Как работать с уведомлениями

Ключ нужно передать в течение 30 минут после перехода заказа в статус PROCESSING.

Если в один заказ входят несколько ключей, передавайте их все в одном запросе.

Каждый товар с уникальным id передавайте в виде отдельного элемента в массиве items, а ключи товара — в массиве codes.

Пример
{
  "items": [
    {
      "id": 1,
      "codes": [
        "code1", "code2", "code3"
      ],
      "slip": "slip",
      "activate_till": "2025-02-18"
    },
    {
      "id": 2,
      "codes": [
        "code4", "code5", "code6"
      ],
      "slip": "slip",
      "activate_till": "2025-02-18"
    }
  ]
}
⚙️ Лимит: 100 000 запросов в час

Request

POST

https://api.partner.market.yandex.ru/v2/campaigns/{campaignId}/orders/{orderId}/deliverDigitalGoods

Path parameters

Name

Description

campaignId

Type: integer

Идентификатор кампании (магазина) — технический идентификатор, который представляет ваш магазин в системе Яндекс Маркета при работе через API. Он однозначно связывается с вашим магазином, но предназначен только для автоматизированного взаимодействия.

Его можно узнать с помощью запроса GET v2/campaigns или найти в кабинете продавца на Маркете. Нажмите на иконку вашего аккаунта → Настройки и в меню слева выберите API и модули:

  • блок Идентификатор кампании;
  • вкладка Лог запросов → выпадающий список в блоке Показывать логи.

⚠️ Не путайте его с:

  • идентификатором магазина, который отображается в личном кабинете продавца;
  • рекламными кампаниями.

Min value: 1

orderId

Type: integer

Идентификатор заказа.

Body

application/json
{
  "items": [
    {
      "id": 0,
      "code": "example",
      "codes": [
        "example"
      ],
      "slip": "example",
      "activate_till": "2025-01-01"
    }
  ]
}

Name

Description

items

Type: OrderDigitalItemDTO[]

Список проданных товаров.

Для товара с одинаковым id передавайте один элемент и массив codes по количеству ключей.

Min items: 1

Max items: 100

Example
[
  {
    "id": 0,
    "code": "example",
    "codes": [
      "example"
    ],
    "slip": "example",
    "activate_till": "2025-01-01"
  }
]

OrderDigitalItemDTO

Цифровой товар.

Name

Description

activate_till

Type: string<date>

Дата, до которой нужно активировать ключи. Если ключи действуют бессрочно, укажите любую дату в отдаленном будущем.

Формат даты: ГГГГ-ММ-ДД.

Example: 2025-01-01

id

Type: integer

Идентификатор товара в заказе.

Он приходит в ответе метода POST v1/businesses/{businessId}/orders — параметр id в items.

slip

Type: string

Инструкция по активации.

Для форматирования текста можно использовать теги HTML:

  • <h>, <h1>, <h2> и так далее — для заголовков;
  • <br> и <p> — для переноса строки;
  • <ol> — для нумерованного списка;
  • <ul> — для маркированного списка;
  • <li> — для создания элементов списка (должен находиться внутри <ol> или <ul>);
  • <div> — поддерживается, но не влияет на отображение текста.

Max length: 10000

Example: example

codes

Type: string[] | null

Ключи, относящиеся к товару.

Поле обязательно для заполнения.

Min items: 1

Max items: 5000

Unique items: true

Example
[
  "example"
]
Example
{
  "id": 0,
  "codes": [
    "example"
  ],
  "slip": "example",
  "activate_till": "2025-01-01"
}

Responses

200 OK

Пустой ответ.

Ответ 200 сам по себе не значит, что ключи переданы покупателю

Если письмо с ключами удалось доставить, Маркет переведет заказ в финальный статус DELIVERED.

Статус заказа можно узнать с помощью метода POST v1/businesses/{businessId}/orders.

Body

application/json
{
  "status": "OK"
}

Type: object

All of 1 type
  • Type: ApiResponse

    Стандартная обертка для ответов сервера.

    Example
    {
      "status": "OK"
    }
    

ApiResponseStatusType

Тип ответа. Возможные значения:

  • OK — ошибок нет.
  • ERROR — при обработке запроса произошла ошибка.

Type: string

Enum: OK, ERROR

ApiResponse

Стандартная обертка для ответов сервера.

Name

Description

status

Type: ApiResponseStatusType

Тип ответа. Возможные значения:

  • OK — ошибок нет.
  • ERROR — при обработке запроса произошла ошибка.

Enum: OK, ERROR

Example
{
  "status": "OK"
}

400 Bad Request

Запрос содержит неправильные данные. Подробнее об ошибках при работе с заказами

Body

application/json
{
  "status": "OK",
  "errors": [
    {
      "code": "example",
      "message": "example"
    }
  ]
}

Type: object

All of 1 type
  • Type: ApiErrorResponse

    Стандартная обертка для ошибок сервера.

    Example
    {
      "status": "OK",
      "errors": [
        {
          "code": "example",
          "message": "example"
        }
      ]
    }
    

ApiErrorDTO

Общий формат ошибки.

Name

Description

code

Type: string

Код ошибки.

Example: example

message

Type: string

Описание ошибки.

Example: example

Example
{
  "code": "example",
  "message": "example"
}

ApiErrorResponse

Стандартная обертка для ошибок сервера.

Type: object

All of 2 types
  • Type: ApiResponse

    Стандартная обертка для ответов сервера.

    Example
    {
      "status": "OK"
    }
    
  • Type: object

    errors

    Type: ApiErrorDTO[] | null

    Список ошибок.

    Min items: 1

    Example
    [
      {
        "code": "example",
        "message": "example"
      }
    ]
    
    Example
    {
      "errors": [
        {
          "code": "example",
          "message": "example"
        }
      ]
    }
    
Example
{
  "status": "OK",
  "errors": [
    {
      "code": "example",
      "message": "example"
    }
  ]
}

401 Unauthorized

В запросе не указаны данные для авторизации. Подробнее об ошибке

Body

application/json
{
  "status": "OK",
  "errors": [
    {
      "code": "example",
      "message": "example"
    }
  ]
}

Type: object

All of 1 type
  • Type: ApiErrorResponse

    Стандартная обертка для ошибок сервера.

    Example
    {
      "status": "OK",
      "errors": [
        {
          "code": "example",
          "message": "example"
        }
      ]
    }
    

403 Forbidden

Данные для авторизации неверны или доступ к ресурсу запрещен. Подробнее об ошибке

Body

application/json
{
  "status": "OK",
  "errors": [
    {
      "code": "example",
      "message": "example"
    }
  ]
}

Type: object

All of 1 type
  • Type: ApiErrorResponse

    Стандартная обертка для ошибок сервера.

    Example
    {
      "status": "OK",
      "errors": [
        {
          "code": "example",
          "message": "example"
        }
      ]
    }
    

404 Not Found

Запрашиваемый ресурс не найден. Подробнее об ошибке

Body

application/json
{
  "status": "OK",
  "errors": [
    {
      "code": "example",
      "message": "example"
    }
  ]
}

Type: object

All of 1 type
  • Type: ApiErrorResponse

    Стандартная обертка для ошибок сервера.

    Example
    {
      "status": "OK",
      "errors": [
        {
          "code": "example",
          "message": "example"
        }
      ]
    }
    

420 Method Failure

Превышено ограничение на доступ к ресурсу. Подробнее об ошибке

Body

application/json
{
  "status": "OK",
  "errors": [
    {
      "code": "example",
      "message": "example"
    }
  ]
}

Type: object

All of 1 type
  • Type: ApiErrorResponse

    Стандартная обертка для ошибок сервера.

    Example
    {
      "status": "OK",
      "errors": [
        {
          "code": "example",
          "message": "example"
        }
      ]
    }
    

500 Internal Server Error

Внутренняя ошибка Маркета. Подробнее об ошибке

Body

application/json
{
  "status": "OK",
  "errors": [
    {
      "code": "example",
      "message": "example"
    }
  ]
}

Type: object

All of 1 type
  • Type: ApiErrorResponse

    Стандартная обертка для ошибок сервера.

    Example
    {
      "status": "OK",
      "errors": [
        {
          "code": "example",
          "message": "example"
        }
      ]
    }
    

No longer supported, please use an alternative and newer version.