Skip to content

Create the Report ​

http
POST /api/v2/nm-report/downloads

Base URL: https://seller-analytics-api.wildberries.ru · Module: analytics · Section: Seller Analytics CSV · Specification doc ↗

The method creates a task for generating a report with advanced seller analytics.

You can create a CSV-version of sales funnel or search parameters report with grouping: * by WB item numbers * by categories, brands, and labels In each of reports on sales funnel, you can group data by days, weeks, or months.

Also you can create a CSV-version of search texts or inventory report.

Each new report must have a unique ID.

Do not use the same ID for different reports — this may cause errors during generation

The set of parameters in the params object depends on the report type. To get a description of the parameters, select the report type from the dropdown list in the description of the reportType parameter.

The parameters includeSubstitutedSKUs and includeSearchTexts cannot both be set to false

If it was not possible to get report, you can create a repeat generation task. You can also get a list and check the statuses of reports.

The report data is updated once every 2 hours.

Inventory reports — the STOCK_HISTORY_REPORT_CSV and STOCK_HISTORY_DAILY_CSV types — can be created without Jam subscription

Request limit per one seller account:

TypePeriodLimitIntervalBurst
Personal1 min3 requests20 s3 requests
Service1 min3 requests20 s3 requests
Base with secret1 min3 requests20 s3 requests
Base1 h1 request1 h1 request

Request body ​

application/json — schema object, optional

  • one of: SalesFunnelItemReq, SalesFunnelGroupReq, SearchReportGroupReq, SearchReportItemReq, SearchReportTextReq, InventoryMetricsReportReq, InventoryHistoryReportReq

Responses ​

CodeDescriptionSchema
200SuccessNmReportCreateReportResponse
400Bad requestPostV2NmReportDownloadsResponse400
401Unauthorizedobject
402Payment requiredobject
403Access deniedErrorObject
429Too many requestsobject

Structure 200:

  • data string — Notification that report generation has started.

Structure 400:

  • title string — Error title
  • detail string — Error details
  • requestId string — Unique request ID
  • origin string — WB internal service ID

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
  • requestId string — Unique request ID
  • origin string — WB internal service ID

Structure 429:

  • one of: response429Download, response429DownloadDaily

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.analytics import Configuration, ApiClient
from wb_api_client.analytics.api import AnalyticsApi

cfg = Configuration(access_token="<your WB JWT>")
api = AnalyticsApi(ApiClient(cfg))

result = api.post_v2_nm_report_downloads(post_v2_nm_report_downloads_request=...)
print(result)
ts
import {
  Configuration,
  AnalyticsApi,
} from "@valeryverkhoturov/wb-api-client/analytics";

const cfg = new Configuration({});
cfg.setAccessToken("<your WB JWT>");
const api = new AnalyticsApi(cfg);

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

	wbanalytics "github.com/ValeryVerkhoturov/wb-api-client-go/analytics"
)

cfg := wbanalytics.NewConfiguration()
cfg.SetAccessToken("<your WB JWT>")
client := wbanalytics.NewAPIClient(cfg)

result, _, err := client.AnalyticsAPI.PostV2NmReportDownloads(context.Background()).Execute()
if err != nil {
    panic(err)
}
fmt.Printf("%+v\n", result)
java
import io.github.valeryverkhoturov.wbapi.analytics.ApiClient;
import io.github.valeryverkhoturov.wbapi.analytics.SecretString;
import io.github.valeryverkhoturov.wbapi.analytics.api.AnalyticsApi;

ApiClient client = new ApiClient();
client.setAccessToken(new SecretString("<your WB JWT>"));
AnalyticsApi api = new AnalyticsApi(client);

System.out.println(api.postV2NmReportDownloads(postV2NmReportDownloadsRequest));
php
use ValeryVerkhoturov\WbApiClient\Analytics\Configuration;
use ValeryVerkhoturov\WbApiClient\Analytics\SecretString;
use ValeryVerkhoturov\WbApiClient\Analytics\Api\AnalyticsApi;
use GuzzleHttp\Client;

$config = (new Configuration())
    ->setAccessTokenSecret(new SecretString('<your WB JWT>'));
$api = new AnalyticsApi(new Client(), $config);

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

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

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

var config = new Configuration();
config.AccessTokenSecret = new SecretString("<your WB JWT>");
var api = new AnalyticsApi(config);

Console.WriteLine(api.PostV2NmReportDownloads());
rust
use wb_api_client::analytics::apis::{configuration::Configuration, analytics_api};

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

    let result = analytics_api::post_v2_nm_report_downloads(&cfg, post_v2_nm_report_downloads_request).await;
    println!("{:#?}", result);
}