Skip to content

Загрузить медиафайлы по ссылкам ​

http
POST /content/v3/media/save

База: https://content-api.wildberries.ru · Модуль: items · Раздел: Медиафайлы · Документация спецификации ↗

Метод загружает набор медиафайлов в карточку товара через указание ссылок в запросе.

Новые медиафайлы полностью заменяют старые. Чтобы добавить новые медиафайлы, укажите в запросе ссылки одновременно на новые и старые медиафайлы.

Требования к ссылкам: * для доступа к файлу по ссылке не нужна авторизация * ссылка ведёт прямо на файл. Убедитесь, что ссылка не ведёт на страницу предпросмотра или авторизации. Ссылка должна заканчиваться на имя файла с расширением — например, /file\_name.jpg. Если по ссылке открывается текстовая страница TXT или HTML, ссылка считается некорректной. Помните, что некоторые хранилища не формируют прямые ссылки и поэтому не подходят для использования. К таким хранилищам относится, например, **Google Drive**, который формирует ссылки только на предпросмотр файла либо на служебные страницы. Требования к изображениям: * максимум изображений для одной карточки товара — 30 * минимальное разрешение — 700×900 px * максимальный размер — 32 Мб * минимальное качество — 65% * форматы — JPG, PNG, BMP, GIF (статичные), WebP Требования к видео: * максимум одно видео для одной карточки товара * максимальный размер — 50 Мб * форматы — MOV, MP4 Если видео или хотя бы одно изображение в запросе не соответствует требованиям, то даже при успешном ответе (200) ни одно изображение/видео не загрузится.

Лимит запросов на один профиль продавца для всех методов Медиафайлов:

ТипПериодЛимитИнтервалВсплеск
Персональный1 мин100 запросов600 мс5 запросов
Сервисный1 мин100 запросов600 мс5 запросов
Базовый с секретом1 мин100 запросов600 мс5 запросов
Базовый1 ч2 запроса30 мин1 запрос

В песочнице — максимум 1 запрос в секунду суммарно для всех методов Контента.

Тело запроса ​

application/json — схема object, обязательно

  • nmId integer<int64> — Артикул WB
  • data string[] — Ссылки на изображения в том порядке, в котором они будут в карточке товара, и на видео, на любой позиции массива

Ответы ​

КодОписаниеСхема
200УспешноPostV3MediaSaveResponse200
400Неправильный запросmediaErrors
401Не авторизованobject
402Требуется платёжobject
403Доступ запрещёнmediaErrors
409Ошибка сохранения части ссылокmediaErrors
422Отсутствует параметр nmIdmediaErrors
429Слишком много запросовobject

Структура 200:

  • data object
  • error boolean — Флаг ошибки
  • errorText string — Описание ошибки
  • additionalErrors object — Дополнительные ошибки

Структура 400:

  • additionalErrors object — Дополнительные ошибки
  • data object — Данные ошибки
  • error boolean — Флаг ошибки
  • errorText string — Описание ошибки

Структура 401:

  • title string — Заголовок ошибки
  • detail string — Детали ошибки
  • code string — Внутренний код ошибки
  • requestId string — Уникальный ID запроса
  • origin string — ID внутреннего сервиса WB
  • status number — HTTP статус-код
  • statusText string — Расшифровка HTTP статус-кода
  • timestamp string — Дата и время запроса

Структура 402:

Структура 403:

  • additionalErrors object — Дополнительные ошибки
  • data object — Данные ошибки
  • error boolean — Флаг ошибки
  • errorText string — Описание ошибки

Структура 409:

  • additionalErrors object — Дополнительные ошибки
  • data object — Данные ошибки
  • error boolean — Флаг ошибки
  • errorText string — Описание ошибки

Структура 422:

  • additionalErrors object — Дополнительные ошибки
  • data object — Данные ошибки
  • error boolean — Флаг ошибки
  • errorText string — Описание ошибки

Структура 429:

  • title string — Заголовок ошибки
  • detail string — Детали ошибки
  • code string — Внутренний код ошибки
  • requestId string — Уникальный ID запроса
  • origin string — ID внутреннего сервиса WB
  • status number — HTTP статус-код
  • statusText string — Расшифровка HTTP статус-кода
  • timestamp string — Дата и время запроса

Примеры вызова ​

Аргументы показаны именами параметров — подставьте свои значения. Языки, в клиенте которых этой операции нет, не показаны.

python
from wb_api_client.items import Configuration, ApiClient
from wb_api_client.items.api import ItemsApi

cfg = Configuration(access_token="<ваш JWT WB>")
api = ItemsApi(ApiClient(cfg))

result = api.post_v3_media_save(post_v3_media_save_request=...)
print(result)
ts
import {
  Configuration,
  ItemsApi,
} from "@valeryverkhoturov/wb-api-client/items";

const cfg = new Configuration({});
cfg.setAccessToken("<ваш JWT WB>");
const api = new ItemsApi(cfg);

const { data } = await api.postV3MediaSave(postV3MediaSaveRequest);
console.log(data);
go
import (
	"context"
	"fmt"

	wbitems "github.com/ValeryVerkhoturov/wb-api-client-go/items"
)

cfg := wbitems.NewConfiguration()
cfg.SetAccessToken("<ваш JWT WB>")
client := wbitems.NewAPIClient(cfg)

result, _, err := client.ItemsAPI.PostV3MediaSave(context.Background()).PostV3MediaSaveRequest(postV3MediaSaveRequest).Execute()
if err != nil {
    panic(err)
}
fmt.Printf("%+v\n", result)
java
import io.github.valeryverkhoturov.wbapi.items.ApiClient;
import io.github.valeryverkhoturov.wbapi.items.SecretString;
import io.github.valeryverkhoturov.wbapi.items.api.ItemsApi;

ApiClient client = new ApiClient();
client.setAccessToken(new SecretString("<ваш JWT WB>"));
ItemsApi api = new ItemsApi(client);

System.out.println(api.postV3MediaSave(postV3MediaSaveRequest));
php
use ValeryVerkhoturov\WbApiClient\Items\Configuration;
use ValeryVerkhoturov\WbApiClient\Items\SecretString;
use ValeryVerkhoturov\WbApiClient\Items\Api\ItemsApi;
use GuzzleHttp\Client;

$config = (new Configuration())
    ->setAccessTokenSecret(new SecretString('<ваш JWT WB>'));
$api = new ItemsApi(new Client(), $config);

print_r($api->postV3MediaSave($post_v3_media_save_request));
bsl
#Использовать "wb-api-client"

Настройки = Новый Конфигурация();
Настройки.УстановитьТокен("<ваш JWT WB>");
Клиент = Новый ItemsApi(Настройки);

Сообщить(Клиент.PostV3MediaSave(Тело).Тело);
csharp
using ValeryVerkhoturov.WbApiClient.Items.Api;
using ValeryVerkhoturov.WbApiClient.Items.Client;

var config = new Configuration();
config.AccessTokenSecret = new SecretString("<ваш JWT WB>");
var api = new ItemsApi(config);

Console.WriteLine(api.PostV3MediaSave(postV3MediaSaveRequest));
rust
use wb_api_client::items::apis::{configuration::Configuration, items_api};

#[tokio::main]
async fn main() {
    let mut cfg = Configuration::new();
    cfg.set_access_token("<ваш JWT WB>");

    let result = items_api::post_v3_media_save(&cfg, post_v3_media_save_request).await;
    println!("{:#?}", result);
}

Распространяется под лицензией Apache 2.0.