Update Listings
POST /content/v2/cards/updateBase URL: https://content-api.wildberries.ru · Module: items · Section: Listings · Specification doc ↗
Edits listings. Also use it to add new sizes.
The listing is overwritten when updated. So the request must also include those listing parameters that you are not going to update. To get their values, use Listings and Listings in Trash.
When the Listing is updated, the documents object is also completely overwritten. In the request, send the all documents data that should remain in the listing, including documents without changes.
You cannot use this method to update or delete:
- item size SKUs. You can only add additional SKUs
- the
photos,videoandtagsparameters - prices of items. The price can only be set if you add new sizes When adding a new size, specify its price using the
priceparameter. If nopriceis specified in the request, the size price will be0. In this case, you can update it using the methods: - Set Prices and Discounts, if item has
"editablePriceSize":false - Set Size Prices, if item has
"editablePriceSize":trueThe dimensions of the items can only be specified incentimeters, and the weight of packed items must be specified inkilograms.
If this method response is Success (200) but listing was not updated, check errors using failed listings with errors method. With one request you can edit maximum 3000 listings (nmID). Maximum request size is 10 Mb. The process of synchronizing data with services may take up to 30 minutes. During this time, you can't add inventory to warehouses and set prices. To add documents to the listing, pass the document data in the documents request object. To update the added document, pass document ID id and data in the documents request object. To get the id use listings method. When the listing or document is changed, the validation is started again.
Document validation is performed asynchronously and can take up to 3 days. You can update the listing again before completing the current validation. In this case, the validation will be started again, and the listing will retain its current status until the new validation is completed. If the listing was available for sale before the document was updated, it will be available until a new validation result is received. If the card has already been blocked, then after updating the data, it will remain blocked until a positive result of repeated validation is received.
The validation results are displayed in the listings, the documents object:
- the result for each document in the
verdictfields of theitemsobject. Ifverdictis not returned in the response, the document validation is not completed yet. - the final overall result for the listing in the
overallVerdictfield. During the listing validation, not only the results of the document validation are taken into account, but also other data. For example, the data of required labeling codes and information from external registries. IfoverallVerdictis not returned in the response, the listing validation is not completed yet.
The types of documents that you can add for the item are specified in subcategory characteristics.
Not all the documents that you can add are required and are being validated. You independently determine which permits are required for the item in accordance with the law.
Request limit per one seller account:
| Period | Limit | Interval | Burst |
|---|---|---|---|
| 1 min | 10 requests | 6 s | 5 requests |
Request body
application/json — schema object[], optional
nmIDinteger<int64>(required) — WB item numbervendorCodestring(required) — Seller item numberkizMarkedboolean— Confirmation that required labeling code Chestny ZNAK is specified: -true— the seller confirms that required labeling code is applied to the item. -false— the seller does not confirm that required labeling code is applied to the item. Passtruein the request to confirm that the item has required labeling code. The item will not pass validation if there is no confirmation from the seller that required labeling code is applied to the item. To check if labeling code Chestny ZNAK is required, use the Listings method, the response fieldneedKizbrandstring— Brandtitlestring— Item titlegtinstring— Additional GTIN. Specify this parameter if you have previously indicated the same GTIN in theskusparameter of one of the listings. It is not possible to specify the same GTIN inskusfor different listings or item sizes. Only for sellers from the Russiandescriptionstring— Item description. The maximum number of characters depends on the item category Standard — 2000, minimum — 1000, maximum — 5000 More details about **rules for filling out the listing** in Instructions category of sellers portaldimensionsobject— Dimensions and weight of the item **with packaging**. Specify incentimetersandkilogramsfor any item. The process of synchronizing new data with service may take up to 30 minuteslengthinteger<int64>— Length, cmwidthinteger<int64>— Width, cmheightinteger<int64>— Height, cmweightBruttonumber— Weight, kg Number of decimal places <=3
documentsobject— Listing permitsitemsobject[]— Permits list and their dataidstring— Document ID attached to the listing. Specify theidto rewrite previously attached document. The document ID is specified in the listings. To add a new document, you do not need to specify theid.typeinteger<int64>— Document type. The types of documents that you can add for the item are listed in subcategory characteristics in thecharcIDfield. Possible document types:: -1— Certificate of Conformity. You can specify forcharcID: 15001136, 15001137, 15001138 -2— The Correspondence Declaration. You can specify forcharcID: 15001135, 15001137, 15001138 -3— Certificate of Registration of SGR. You can specify forcharcID: 62945173, 15000785, 15004302 -4— Registration Certificate. You can specify forcharcID: 15001574, 15002355, 15002356, 15002357 -5— Certificate of Registration of the Republic of Belarus. You can specify forcharcID: 15003071, 15003939 -7— Registration of a Pesticide. You can specify forcharcID: 15003924, 15003925 -8— Registration of an Agrochemical. You can specify forcharcID: 15003920, 15003921 -9— Medicine Registration Certificate. You can specify forcharcID: 1897013, 15004284numberstring— Document numberproductNumberstring— Additional document numbertradeNamestring— Trade nameapplicantstring— Representative of the medical device manufacturerstartDatestring— Document start date and timeendDatestring— Document end date and timeisEndlessboolean— Is the document valid indefinitely: -true— yes, the document is indefinite -false— no, the document has an expiration date
excludeDocumentsboolean— Seller confirmation that no documents are required for the item: -true— yes, seller confirms that no documents are required. All values passed todocumentswill be replaced with empty values -false— no, seller does not confirm that no documents are required Whether the documents are required is checked when creating and changing the listing. If documents are required for the item and the valuetrueis specified, the listing will not pass validation
characteristicsobject[]— Item characteristics Use the Subcategory characteristics method to get characteristics of the itemidinteger<int64>(required) — Characteristic IDvalueobject(required) — Characteristic values. Data type — array of strings or number — depends on the characteristic data type. For more details see the description of thecharcTypefield in the Subcategory characteristics method. The allowed number of values is specified in themaxCountfield of the Subcategory characteristics method
sizesobject[](required) — Item sizes If item has no sizes, send only SKUschrtIDinteger<int64>— WB item number of this size Required for existing sizes If you add new size, do not send this IDtechSizestring— Size (for example, XL, S, 45)wbSizestring— Russian sizepriceinteger<int64>— Price, ₽ Specified when adding the sizeskusstring[]— SKUs
Responses
| Code | Description | Schema |
|---|---|---|
200 | Success | responseItemList |
400 | Bad request | responseBodyContentError400 |
401 | Unauthorized | object |
402 | Payment required | object |
403 | Access denied | responseBodyContentError403 |
413 | The request body size exceeds the given limit | PostV2CardsUpdateResponse413 |
429 | Too many requests | object |
Structure 200:
dataobject— Response dataerrorboolean— Error flagerrorTextstring— Error descriptionadditionalErrorsobject— Any additional errors- one of:
object,string,object
- one of:
Structure 400:
dataobject— Error dataerrorboolean— Error flagerrorTextstring— Error descriptionadditionalErrorsobject— Additional errors
Structure 401:
titlestring— Error titledetailstring— Error detailscodestring— Internal error coderequestIdstring— Unique request IDoriginstring— WB internal service IDstatusnumber— HTTP status codestatusTextstring— Text of the HTTP status codetimestampstring— Request date and time
Structure 402:
titlestring— Error titledetailstring— Error details. The error is only returned to services from the Solutions for business Catalog
Structure 403:
dataobject— Error dataerrorboolean— Error flagerrorTextstring— Error descriptionadditionalErrorsstring— Additional errors
Structure 413:
titlestring— Error titledetailstring— Error detailscodestring— Internal error coderequestIdstring— Unique request IDoriginstring— WB internal service IDstatusnumber— HTTP status codestatusTextstring— Text of the HTTP status code
Structure 429:
titlestring— Error titledetailstring— Error detailscodestring— Internal error coderequestIdstring— Unique request IDoriginstring— WB internal service IDstatusnumber— HTTP status codestatusTextstring— Text of the HTTP status codetimestampstring— Request date and time
Call examples
Arguments are shown as parameter names — substitute your own values. Languages whose client does not expose this operation are omitted.
from wb_api_client.items import Configuration, ApiClient
from wb_api_client.items.api import ItemsApi
cfg = Configuration(access_token="<your WB JWT>")
api = ItemsApi(ApiClient(cfg))
result = api.post_v2_cards_update(post_v2_cards_update_request_inner=...)
print(result)import {
Configuration,
ItemsApi,
} from "@valeryverkhoturov/wb-api-client/items";
const cfg = new Configuration({});
cfg.setAccessToken("<your WB JWT>");
const api = new ItemsApi(cfg);
const { data } = await api.postV2CardsUpdate(postV2CardsUpdateRequestInner);
console.log(data);import (
"context"
"fmt"
wbitems "github.com/ValeryVerkhoturov/wb-api-client-go/items"
)
cfg := wbitems.NewConfiguration()
cfg.SetAccessToken("<your WB JWT>")
client := wbitems.NewAPIClient(cfg)
result, _, err := client.ItemsAPI.PostV2CardsUpdate(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("<your WB JWT>"));
ItemsApi api = new ItemsApi(client);
System.out.println(api.postV2CardsUpdate(postV2CardsUpdateRequestInner));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('<your WB JWT>'));
$api = new ItemsApi(new Client(), $config);
print_r($api->postV2CardsUpdate());#Использовать "wb-api-client"
Настройки = Новый Конфигурация();
Настройки.УстановитьТокен("<your WB JWT>");
Клиент = Новый ItemsApi(Настройки);
Сообщить(Клиент.PostV2CardsUpdate(Тело).Тело);using ValeryVerkhoturov.WbApiClient.Items.Api;
using ValeryVerkhoturov.WbApiClient.Items.Client;
var config = new Configuration();
config.AccessTokenSecret = new SecretString("<your WB JWT>");
var api = new ItemsApi(config);
Console.WriteLine(api.PostV2CardsUpdate());use wb_api_client::items::apis::{configuration::Configuration, items_api};
#[tokio::main]
async fn main() {
let mut cfg = Configuration::new();
cfg.set_access_token("<your WB JWT>");
let result = items_api::post_v2_cards_update(&cfg, post_v2_cards_update_request_inner).await;
println!("{:#?}", result);
}