Создание карточек товаров
POST /content/v2/cards/uploadБаза: https://content-api.wildberries.ru · Модуль: items · Раздел: Создание карточек товаров · Документация спецификации ↗
Метод создаёт карточки товаров c указанием описаний и характеристик товаров.
Есть две формы запроса: для создания отдельных и объединённых карточек товаров
Габариты товаров можно указать только в сантиметрах, вес товара с упаковкой — в килограммах.
Создание карточки товара происходит асинхронно. Синхронизация новой карточки с сервисами может занимать до 30 минут. В течение этого времени невозможно добавить остатки на склады и настроить цены. В песочнице карточка товара создаётся сразу, без ожидания.
Одним запросом можно создать максимум 100 отдельных карточек товаров или 100 групп объединённых карточек товаров по 30 карточек в каждой. Максимальный размер запроса 10 Мб. Если ответ Успешно (200), но какие-то карточки не создались, проверьте список несозданных карточек товаров.
Чтобы прикрепить документы к карточке товара, передайте данные документов в объекте запроса documents. Чтобы подтвердить, что для товара не требуются документы, передайте true в параметре excludeDocuments.
Проверка документов выполняется асинхронно и может занимать до 3 дней. При изменении карточки или документа проверка запускается повторно. Результаты проверки отображаются в списке карточек товаров, объект documents:
- результат по каждому документу в полях
verdictобъектаitems. Еслиverdictне возвращается в ответе — проверка документа ещё не завершена - итоговый общий результат по карточке в поле
overallVerdict. При общей проверке карточки учитываются не только результаты проверки документов, но и другие данные. Например, наличие обязательной маркировки и сведения из внешних реестров. ЕслиoverallVerdictне возвращается в ответе — проверка карточки ещё не завершена
Типы документов, которые вы можете добавить для товара, указаны в характеристиках предмета.
При этом не все документы, которые вы можете добавить, обязательны и проходят проверку — вы самостоятельно определяете, какие разрешительные документы требуются для товара в соответствии с законодательством.
Лимит запросов на один профиль продавца:
| Период | Лимит | Интервал | Всплеск |
|---|---|---|---|
| 1 мин | 10 запросов | 6 сек | 5 запросов |
Тело запроса
application/json — схема object[], необязательно
subjectIDinteger<int64>(обязательно) — ID предметаvariantsobject[](обязательно) — Объединённые карточки товаров. Чтобы создать отдельную карточку, передайте только один объектbrandstring— Брендtitlestring— Наименование товараgtinstring— Дополнительный GTIN. Укажите этот параметр, если тот же GTIN вы ранее указывали в одной из карточек товара в параметреskus. Нельзя указывать один и тот же GTIN вskusдля разных карточек или размеров товаров. Только для продавцов из РФdescriptionstring— Описание товара. Максимальное количество символов зависит от категории товара Стандарт — 2000, минимум — 1000, максимум — 5000 Подробно о **правилах заполнения карточки товара** в Справочном центре на портале продавцовvendorCodestring(обязательно) — Артикул продавцаkizMarkedboolean— Подтверждение, что на товар нанесён обязательный код маркировки Честного знака: -true— продавец подтверждает, что на товар нанесён обязательный код маркировки -false— продавец не подтверждает, что на товар нанесён обязательный код маркировки. Передайте в запросеtrue, чтобы подтвердить наличие на товаре обязательного кода маркировки. Карточка товара не пройдёт проверку, если нет подтверждения продавца о том, что обязательный код маркировки нанесён на товар Чтобы проверить, является ли код маркировки Честного знака обязательным, используйте метод Список карточек товаров, поле ответаneedKizwholesaleobject— B2B-продажаenabledboolean— Предназначен ли товар для продажи только B2B-покупателям: -true— товар предназначен для продажи только B2B-покупателям -false— товар предназначен для продажи B2B и B2C-покупателямquantumnumber<uint64>— Минимальное количество единиц товара в одной корзине B2B-покупателя. Только при"enable":true
dimensionsobject— Габариты и вес товара **c упаковкой**. Укажите всантиметрахикилограммахдля любого товара. Если данные не указаны, автоматически сгенерируются нулевые значения длины, ширины, высоты и веса. Синхронизация данных новой карточки с сервисом может занимать до 30 минутlengthinteger<int64>— Длина, смwidthinteger<int64>— Ширина, смheightinteger<int64>— Высота, смweightBruttonumber— Вес, кг Количество знаков после запятой <=3
sizesobject[]— Массив размеров. Если не указать для размерного товара (обувь, одежда и др.), сгенерируется автоматически сtechSize= "A",wbSize= "1" и баркодомtechSizestring— Размер товара (например, XL, 45)wbSizestring— Российский размер товараpriceinteger<int64>— Цена товараskusstring[]— Массив баркодов для размера. Если не указать, сгенерируется автоматически. Позволяет связать несколько баркодов с одним размером, например, для разных партий товара
characteristicsobject[]— Характеристики товара. Можно получить методом Характеристики предметаidinteger<int64>(обязательно) — ID характеристикиvalueobject(обязательно) — Значения характеристики. Тип данных — массив строк или число — зависит от типа характеристики, см. описание поляcharcTypeв методе Характеристики предмета. Допустимое количество значений отображено в полеmaxCountтого же метода
documentsobject— Разрешительные документы карточки товараitemsdocumentsRequest[]— Список разрешительных документов и их данные. Тип документаtypeобязателен для каждого документаtypeinteger<int64>— Тип документа. Типы документов, которые вы можете добавить для товара, указаны в характеристиках предмета — полеcharcID. Возможные типы документов: -1— Сертификат соответствия. Можно указать дляcharcID: 15001136, 15001137, 15001138 -2— Декларация о соответствии. Можно указать дляcharcID: 15001135, 15001137, 15001138 -3— Свидетельство о государственной регистрации (СГР). Можно указать дляcharcID: 62945173, 15000785, 15004302 -4— Регистрационное удостоверение (РУ) на медицинские изделия. Можно указать дляcharcID: 15001574, 15002355, 15002356, 15002357 -5— Регистрационное удостоверение Республики Беларусь. Можно указать дляcharcID: 15003071, 15003939 -7— Данные о регистрации пестицида. Можно указать дляcharcID: 15003924, 15003925 -8— Данные о регистрации агрохимиката. Можно указать дляcharcID: 15003920, 15003921 -9— Регистрационное удостоверение (РУ) на лекарственные препараты. Можно указать дляcharcID: 1897013, 15004284numberstring— Номер документаproductNumberstring— Дополнительный номер документаtradeNamestring— Торговое наименованиеapplicantstring— Представитель изготовителя медицинского изделияstartDatestring— Дата и время начала срока действия документаendDatestring— Дата и время окончания срока действия документаisEndlessboolean— Бессрочный ли документ: -true— да, документ бессрочный -false— нет, у документа есть срок действия
excludeDocumentsboolean— Подтверждение продавца, что для товара не требуются разрешительные документы: -true— продавец подтверждает, что документы не требуются. Все значения, переданные вdocuments, будут заменены на пустые значения -false— продавец не подтверждает, что документы не требуются Обязательность документов проверяется при создании и изменении карточки товара. Если для товара требуются документы и указано значениеtrue, карточка не пройдёт проверку
Ответы
| Код | Описание | Схема |
|---|---|---|
200 | Успешно | responseItemList |
400 | Неправильный запрос | responseBodyContentError400 |
401 | Не авторизован | object |
402 | Требуется платёж | object |
403 | Доступ запрещён | object |
413 | Превышен лимит объёма данных в запросе | PostV2CardsUploadResponse413 |
429 | Слишком много запросов | object |
Структура 200:
dataobject— Данные ответаerrorboolean— Флаг ошибкиerrorTextstring— Описание ошибкиadditionalErrorsobject— Дополнительные ошибки- один из вариантов:
object,string,object
- один из вариантов:
Структура 400:
dataobject— Данные ошибкиerrorboolean— Флаг ошибкиerrorTextstring— Описание ошибкиadditionalErrorsobject— Дополнительные ошибки
Структура 401:
titlestring— Заголовок ошибкиdetailstring— Детали ошибкиcodestring— Внутренний код ошибкиrequestIdstring— Уникальный ID запросаoriginstring— ID внутреннего сервиса WBstatusnumber— HTTP статус-кодstatusTextstring— Расшифровка HTTP статус-кодаtimestampstring— Дата и время запроса
Структура 402:
titlestring— Заголовок ошибкиdetailstring— Детали ошибки. Ошибка возвращается только сервисам из Каталога решений для бизнеса
Структура 403:
titlestring— Заголовок ошибкиdetailstring— Детали ошибкиcodestring— Внутренний код ошибкиrequestIdstring— ID запросаoriginstring— ID внутреннего сервиса WBstatusnumber— HTTP статус-кодstatusTextstring— Расшифровка HTTP статус-кодаtimestampstring— Дата и время запроса
Структура 413:
titlestring— Заголовок ошибкиdetailstring— Детали ошибкиcodestring— Внутренний код ошибкиrequestIdstring— Уникальный ID запросаoriginstring— ID внутреннего сервиса WBstatusnumber— HTTP статус-кодstatusTextstring— Расшифровка HTTP статус-кода
Структура 429:
titlestring— Заголовок ошибкиdetailstring— Детали ошибкиcodestring— Внутренний код ошибкиrequestIdstring— Уникальный ID запросаoriginstring— ID внутреннего сервиса WBstatusnumber— HTTP статус-кодstatusTextstring— Расшифровка HTTP статус-кодаtimestampstring— Дата и время запроса
Примеры вызова
Аргументы показаны именами параметров — подставьте свои значения. Языки, в клиенте которых этой операции нет, не показаны.
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_v2_cards_upload(post_v2_cards_upload_request_inner=...)
print(result)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.postV2CardsUpload(postV2CardsUploadRequestInner);
console.log(data);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.PostV2CardsUpload(context.Background()).Execute()
if err != nil {
panic(err)
}
fmt.Printf("%+v\n", result)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.postV2CardsUpload(postV2CardsUploadRequestInner));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->postV2CardsUpload());#Использовать "wb-api-client"
Настройки = Новый Конфигурация();
Настройки.УстановитьТокен("<ваш JWT WB>");
Клиент = Новый ItemsApi(Настройки);
Сообщить(Клиент.PostV2CardsUpload(Тело).Тело);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.PostV2CardsUpload());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_v2_cards_upload(&cfg, post_v2_cards_upload_request_inner).await;
println!("{:#?}", result);
}