Create the Report
POST /api/v2/nm-report/downloadsBase 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:
| Type | Period | Limit | Interval | Burst |
|---|---|---|---|---|
| Personal | 1 min | 3 requests | 20 s | 3 requests |
| Service | 1 min | 3 requests | 20 s | 3 requests |
| Base with secret | 1 min | 3 requests | 20 s | 3 requests |
| Base | 1 h | 1 request | 1 h | 1 request |
Request body
application/json — schema object, optional
- one of:
SalesFunnelItemReq,SalesFunnelGroupReq,SearchReportGroupReq,SearchReportItemReq,SearchReportTextReq,InventoryMetricsReportReq,InventoryHistoryReportReq
Responses
| Code | Description | Schema |
|---|---|---|
200 | Success | NmReportCreateReportResponse |
400 | Bad request | PostV2NmReportDownloadsResponse400 |
401 | Unauthorized | object |
402 | Payment required | object |
403 | Access denied | ErrorObject |
429 | Too many requests | object |
Structure 200:
datastring— Notification that report generation has started.
Structure 400:
titlestring— Error titledetailstring— Error detailsrequestIdstring— Unique request IDoriginstring— WB internal service ID
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:
titlestring— Error titledetailstring— Error detailsrequestIdstring— Unique request IDoriginstring— 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.
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)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);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)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));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());#Использовать "wb-api-client"
Настройки = Новый Конфигурация();
Настройки.УстановитьТокен("<your WB JWT>");
Клиент = Новый AnalyticsApi(Настройки);
Сообщить(Клиент.PostV2NmReportDownloads(Тело).Тело);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());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);
}