Migration Guide — v4.0.0
v4.0.0 is a major release that removes deprecated API surface. Almost all of it was already rejected or dropped by Wildberries (dead endpoints, sunset fields); removing it gives compile-time fail-fast and clears dead code. The v3.12.0 changelog pre-announced the stocks sku/skus removal for v4.0.0; the rest rides along so we ship one major bump instead of several.
Upgrading: every removed symbol below now produces a TypeScript compile error pointing at the replacement. Fix each call site (usually a one-line rename or field swap).
Removed methods
| Module | Removed method | Replacement |
|---|---|---|
| finances | getSupplierReportDetailByPeriod | getSalesReportsList / getSalesReportsDetailed / getSalesReportsDetailedByReportId (v1 sales-reports; see migration-finance-reports-v5-to-v1) |
| orders-dbs | getMetaBulk | checkMetaValidation (POST …/meta/details — also returns marking-metadata validation status) |
| general | getJamSubscriptionStatus | getJamSubscription (direct GET /api/common/v1/subscriptions) |
| promotion | updateBidsV2 | updateBids (kopeck-based) |
| promotion | createAutoSetExcluded, createAutoUpdatenm, getAuctionAdverts, getPromotionAdverts, getStatsKeywords, updateAuctionBid | v0/v1 advert API (WB-disabled 2026-02-02). Use the v2 methods, e.g. getAdvertsV2 |
| in-store-pickup | updateOrdersConfirm / Prepare / Receive / Reject / Cancel, createOrdersStatus, getOrdersMeta, deleteOrdersMeta, updateMetaSgtin / Uin / Imei / Gtin (12 single-order shims) | the batch methods: confirmBulk / prepareBulk / receiveBulk / rejectBulk / cancelBulk, createOrdersStatusBulk, getMetaBulk, deleteMetaBulk, setMeta…Bulk |
Note:
in-store-pickup.getMetaBulkis kept — it is the live batch-API method (the replacement), not the deprecated orders-dbs one of the same name.
Removed types & fields
| Where | Removed | Replacement |
|---|---|---|
products StockItem / StocksRequest / UpdateStockRequest | sku, skus (stocks identifiers) | chrtId / chrtIds (size IDs) — see dedicated section below |
| finances | DetailReportItem | SalesReportDetailedItem (v1; camelCase + string money — use parseMoneyAmount()) |
communications Chat / Event | clientID | (WB-removed Feb 2 — no replacement) |
communications GoodCard | date | addTime / addTimestamp on the enclosing message/event |
communications GoodCard | needRefund | the /api/v1/claims endpoint |
communications GoodCard | statusID | (WB-removed Feb 10 — no replacement) |
| general | JamSubscriptionStatus, JamSubscriptionTier, GetJamSubscriptionStatusParams | JamSubscriptionDetails (from getJamSubscription) |
| promotion | GetAdverts family, V0KeywordsStatistics* | v2 types (AdvertV2 / GetAdvertsV2Response, etc.) |
| in-store-pickup | ApiGTINRequest, ApiIMEIRequest, ApiOrderStatus(es), ApiOrdersMeta, ApiBaseMeta, ApiSGTINsRequest, ApiUINRequest | the …Bulk request types |
orders-fbs OrderMetaResponse / OrderMetaItem / OrderMetaAPI | .meta (Meta interface) | .metaDetails (MetaDetail[] — {key, value, decision}) |
Removed config (internal)
DEFAULT_RATE_LIMITS(legacy alias — useALL_RATE_LIMITS).analytics.postNmReportDetail/DetailHistory/GroupedHistoryrate-limit keys (v2 wrappers removed back in v3.0.0; the livepostNmReportDownloads/DownloadsRetrystay).reports.analyticsCharacteristicsChangerate-limit key (endpoint removed from swagger).
Other changes
updateStock(warehouseId, data)—datais now required (was optional in v3.x).- The runtime
console.warnmigration nudges and the internalsanitize*helpers for stocks are gone (nothing left to detect/strip —sku/skusno longer exist). - Card-size barcodes (
sizes[].skusoncreateCard/media methods) are unrelated and still supported — only the stockssku/skusidentifiers were removed.
Stocks: sku / skus → chrtId / chrtIds (detail)
Wildberries fully rejects the sku / skus identifiers on the stocks endpoints since 2026-05-20 13:00 MSK (HTTP 400). v4.0.0 removes them from the types entirely.
Before (v3.x — deprecated, already 400-ing at runtime)
await sdk.products.getStocks(warehouseId, { skus: ['1234567890123'] });
await sdk.products.updateStock(warehouseId, { stocks: [{ sku: '1234567890123', amount: 100 }] });After (v4.0.0)
await sdk.products.getStocks(warehouseId, { chrtIds: [12345678] });
await sdk.products.updateStock(warehouseId, { stocks: [{ chrtId: 12345678, amount: 100 }] });Where do I get chrtId / chrtIds?
chrtId is the size ID returned by POST /content/v2/get/cards/list (sizes[].chrtID — note WB uses uppercase D there; the SDK stocks property is lowercase chrtId/chrtIds, same numeric value).
const cards = await sdk.products.getCardsList({ ... });
const chrtId = cards.cards[0].sizes[0].chrtID; // → use in stocks calls