Skip to content

List Items with Merge ​

http
POST /content/v2/cards/upload/add

Base URL: https://content-api.wildberries.ru · Module: items · Section: Listing Items · Specification doc ↗

The method lists items by merging it with existing individual listings and groups of merged listings. There can be no more than 30 listings in one group of merged listings, respectively, you can list no more than 29 items in one request.

The dimensions of the items can only be specified in centimeters, and the weight of packed items must be specified in kilograms. If this method response is Success (200) but listing was not updated, check errors using failed listings with errors method. Items are listed asynchronously. The process of synchronizing a new listing with services may take up to 30 minutes. During this time, you can't add inventory to warehouses and set prices. In the sandbox, the product card is created immediately, without waiting.

To add documents to the listing, pass the document data in the documents request object. To confirm that no documents are required for the item, pass true in the excludeDocuments parameter. Document validation is performed asynchronously and can take up to 3 days. When the listing or document is changed, the validation is started again. The validation results are displayed in the listings, the documents object:

  • the result for each document in the verdict fields of the items object. If verdict is not returned in the response, the document validation is not completed yet.
  • the final overall result for the listing in the overallVerdict field. 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. If overallVerdict is 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:

TypePeriodLimitIntervalBurst
Personal1 min10 requests6 s5 requests
Service1 min10 requests6 s5 requests
Base with secret1 min10 requests6 s5 requests
Base2 h1 request2 h1 request

Request body ​

application/json — schema object, optional

  • imtID integer<int64> — imtID of an individual listing or group of merged listings to which the listed items are added
  • cardsToAdd object[] — Added listings
    • brand string — Brand
    • vendorCode string (required) — Seller item number
    • kizMarked boolean — 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. Pass true in 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 field needKiz
    • wholesale object — B2B sale
      • enabled boolean — Is the item intended for sale only to B2B buyers: - true — the item is intended for sale only to B2B buyers - false — the item is intended for sale to B2B and B2C buyers
      • quantum number<uint64> — Minimum number of items in one cart of B2B buyer. Only when "enable":true
    • title string — Item title
    • gtin string — Additional GTIN. Specify this parameter if you have previously indicated the same GTIN in the skus parameter of one of the listings. It is not possible to specify the same GTIN in skus for different listings or item sizes. Only for sellers from the Russian
    • description string — 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 portal
    • dimensions object — Dimensions and weight of the item **with packaging**. Specify in centimeters and kilograms for any item. If the data is not specified, zero values ​​for length, width, height and weight will be automatically generated. The process of synchronizing new data with service may take up to 30 minutes
      • length integer<int64> — Length, cm
      • width integer<int64> — Width, cm
      • height integer<int64> — Height, cm
      • weightBrutto number — Weight, kg Number of decimal places <=3
    • sizes object[] — Item sizes. If the item has sizes but you send empty parameter, it is generated automatically with values: techSize = "A", wbSize = "1" and some random SKU
      • techSize string — Item size (for example, L or 45)
      • wbSize string — Russian size
      • price integer<int64> — Price, ₽
      • skus string[] — SKU. If not specified, the SKU is generated automatically
    • characteristics object[] — Item characteristics. Use the Subcategory characteristics method to get characteristics of the item
      • id integer<int64> (required) — Characteristic ID
      • value object (required) — Characteristic values. Data type — array of strings or number — depends on the characteristic data type. For more details see the description of the charcType field in the Subcategory characteristics method. The allowed number of values is specified in the maxCount field of the Subcategory characteristics method
    • documents object — Documents
      • items documentsRequest[] — Permits list and data. The document type type is required for each document
        • type integer<int64> — Document type. The types of documents that you can add for the item are listed in subcategory characteristics in the charcID field. Possible document types:: - 1 — Certificate of Conformity. You can specify for charcID: 15001136, 15001137, 15001138 - 2 — The Correspondence Declaration. You can specify for charcID: 15001135, 15001137, 15001138 - 3 — Certificate of Registration of SGR. You can specify for charcID: 62945173, 15000785, 15004302 - 4 — Registration Certificate. You can specify for charcID: 15001574, 15002355, 15002356, 15002357 - 5 — Certificate of Registration of the Republic of Belarus. You can specify for charcID: 15003071, 15003939 - 7 — Registration of a Pesticide. You can specify for charcID: 15003924, 15003925 - 8 — Registration of an Agrochemical. You can specify for charcID: 15003920, 15003921 - 9 — Medicine Registration Certificate. You can specify for charcID: 1897013, 15004284
        • number string — Document number
        • productNumber string — Additional document number
        • tradeName string — Trade name
        • applicant string — Representative of the medical device manufacturer
        • startDate string — Document start date and time
        • endDate string — Document end date and time
        • isEndless boolean — Is the document valid indefinitely: - true — yes, the document is indefinite - false — no, the document has an expiration date
      • excludeDocuments boolean — Seller confirmation that no permits are required for the item: - true — yes, seller confirms that no permits are required. All values passed to documents will be replaced with empty values - false — no, seller does not confirm that no permits are required Whether the permits are required is checked when creating and changing the listing. If permits are required for the item and the value true is specified, the listing will not pass validation

Responses ​

CodeDescriptionSchema
200SuccessresponseItemList
400Bad requestresponseBodyContentError400
401Unauthorizedobject
402Payment requiredobject
403Access deniedobject
413The request body size exceeds the given limitPostV2CardsUploadAddResponse413
429Too many requestsobject

Structure 200:

  • data object — Response data
  • error boolean — Error flag
  • errorText string — Error description
  • additionalErrors object — Any additional errors
    • one of: object, string, object

Structure 400:

  • data object — Error data
  • error boolean — Error flag
  • errorText string — Error description
  • additionalErrors object — Additional errors

Structure 401:

  • title string — Error title
  • detail string — Error details
  • code string — Internal error code
  • requestId string — Unique request ID
  • origin string — WB internal service ID
  • status number — HTTP status code
  • statusText string — Text of the HTTP status code
  • timestamp string — Request date and time

Structure 402:

Structure 403:

  • title string — Error title
  • detail string — Error details
  • code string — Internal error code
  • requestId string — Request ID
  • origin string — WB internal service ID
  • status number — HTTP status code
  • statusText string — Text of the HTTP status code
  • timestamp string — Request date and time

Structure 413:

  • title string — Error title
  • detail string — Error details
  • code string — Internal error code
  • requestId string — Unique request ID
  • origin string — WB internal service ID
  • status number — HTTP status code
  • statusText string — Text of the HTTP status code

Structure 429:

  • title string — Error title
  • detail string — Error details
  • code string — Internal error code
  • requestId string — Unique request ID
  • origin string — WB internal service ID
  • status number — HTTP status code
  • statusText string — Text of the HTTP status code
  • timestamp string — 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.

python
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_upload_add(post_v2_cards_upload_add_request=...)
print(result)
ts
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.postV2CardsUploadAdd(postV2CardsUploadAddRequest);
console.log(data);
go
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.PostV2CardsUploadAdd(context.Background()).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("<your WB JWT>"));
ItemsApi api = new ItemsApi(client);

System.out.println(api.postV2CardsUploadAdd(postV2CardsUploadAddRequest));
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('<your WB JWT>'));
$api = new ItemsApi(new Client(), $config);

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

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

Сообщить(Клиент.PostV2CardsUploadAdd(Тело).Тело);
csharp
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.PostV2CardsUploadAdd());
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("<your WB JWT>");

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