Skip to content

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 ​

ModuleRemoved methodReplacement
financesgetSupplierReportDetailByPeriodgetSalesReportsList / getSalesReportsDetailed / getSalesReportsDetailedByReportId (v1 sales-reports; see migration-finance-reports-v5-to-v1)
orders-dbsgetMetaBulkcheckMetaValidation (POST …/meta/details — also returns marking-metadata validation status)
generalgetJamSubscriptionStatusgetJamSubscription (direct GET /api/common/v1/subscriptions)
promotionupdateBidsV2updateBids (kopeck-based)
promotioncreateAutoSetExcluded, createAutoUpdatenm, getAuctionAdverts, getPromotionAdverts, getStatsKeywords, updateAuctionBidv0/v1 advert API (WB-disabled 2026-02-02). Use the v2 methods, e.g. getAdvertsV2
in-store-pickupupdateOrdersConfirm / 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.getMetaBulk is kept — it is the live batch-API method (the replacement), not the deprecated orders-dbs one of the same name.

Removed types & fields ​

WhereRemovedReplacement
products StockItem / StocksRequest / UpdateStockRequestsku, skus (stocks identifiers)chrtId / chrtIds (size IDs) — see dedicated section below
financesDetailReportItemSalesReportDetailedItem (v1; camelCase + string money — use parseMoneyAmount())
communications Chat / EventclientID(WB-removed Feb 2 — no replacement)
communications GoodCarddateaddTime / addTimestamp on the enclosing message/event
communications GoodCardneedRefundthe /api/v1/claims endpoint
communications GoodCardstatusID(WB-removed Feb 10 — no replacement)
generalJamSubscriptionStatus, JamSubscriptionTier, GetJamSubscriptionStatusParamsJamSubscriptionDetails (from getJamSubscription)
promotionGetAdverts family, V0KeywordsStatistics*v2 types (AdvertV2 / GetAdvertsV2Response, etc.)
in-store-pickupApiGTINRequest, ApiIMEIRequest, ApiOrderStatus(es), ApiOrdersMeta, ApiBaseMeta, ApiSGTINsRequest, ApiUINRequestthe …Bulk request types
orders-fbs OrderMetaResponse / OrderMetaItem / OrderMetaAPI.meta (Meta interface).metaDetails (MetaDetail[] — {key, value, decision})

Removed config (internal) ​

  • DEFAULT_RATE_LIMITS (legacy alias — use ALL_RATE_LIMITS).
  • analytics.postNmReportDetail / DetailHistory / GroupedHistory rate-limit keys (v2 wrappers removed back in v3.0.0; the live postNmReportDownloads / DownloadsRetry stay).
  • reports.analyticsCharacteristicsChange rate-limit key (endpoint removed from swagger).

Other changes ​

  • updateStock(warehouseId, data) — data is now required (was optional in v3.x).
  • The runtime console.warn migration nudges and the internal sanitize* helpers for stocks are gone (nothing left to detect/strip — sku/skus no longer exist).
  • Card-size barcodes (sizes[].skus on createCard/media methods) are unrelated and still supported — only the stocks sku/skus identifiers 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) ​

typescript
await sdk.products.getStocks(warehouseId, { skus: ['1234567890123'] });
await sdk.products.updateStock(warehouseId, { stocks: [{ sku: '1234567890123', amount: 100 }] });

After (v4.0.0) ​

typescript
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).

typescript
const cards = await sdk.products.getCardsList({ ... });
const chrtId = cards.cards[0].sizes[0].chrtID; // → use in stocks calls

Looking ahead: v5 ​

  • ordersFBS getShippingPoints() — WB disables GET /api/marketplace/v3/fbs/shipping-points on 2026-11-20 (release note). The method is now @deprecated and emits a one-time runtime warning; it will be removed in v5. Migrate to getSupplyShippingPoints(supplyId, params) (GET /api/marketplace/v3/fbs/supplies/{supplyId}/shipping-points): points available for the specified supply, officeType comma-list instead of the cargoType filter, and a per-point available flag (false when a pickup point is overloaded on the planned date).

  • reports getAnalyticsGoodsReturn() — REMOVED in v5.0.0. WB disabled GET /api/v1/analytics/goods-return on 2026-10-26 (release note). Migrate to getAnalyticsV1GoodsReturn() (GET /api/analytics/v1/item-returns): status=active|archive filter instead of the isStatusActive field, limit/offset pagination, count total for the period (window ≤ 31 days); field renames barcode→sku, status→returnStatus, reason→returnReason.

  • promotion getAdvBudget() — WB disables GET /adv/v1/budget on 2026-11-16 (release note). The method is now @deprecated and emits a one-time runtime warning; it will be removed in v5. Migrate to postV2Budget() (POST /api/advert/v2/budget), which returns budget balances for 1–50 campaigns per request (total in base currency units, balances only for campaign statuses 4/9/11).

Made with ❤️ for the Wildberries developer community