Channels

GET/channels

List channels

Request

GET/channels
curl -G https://YOUR_DOMAIN/api/channels \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"
Loading response...
POST/channels/amazon/connection-invitation

Create an Amazon channel connection invitation

Required attributes

  • Name
    marketplace
    Type
    string
    Description
    The Amazon marketplace identifier to connect ATVPDKIKX0DER
  • Name
    redirect_url
    Type
    string
    Description
    The URL to redirect the merchant to after they successfully connect their Amazon channel https://app.example.com/channels/connected

Optional attributes

  • Name
    nickname
    Type
    string
    Description
    An optional nickname for the channel

Request

POST/channels/amazon/connection-invitation
curl -X POST https://YOUR_DOMAIN/api/channels/amazon/connection-invitation \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "marketplace": "ATVPDKIKX0DER",
    "nickname": "string",
    "redirect_url": "https://app.example.com/channels/connected"
}'
Loading response...
GET/channels/{channel}

Show a channel

Get a single channel by its ID. Used to populate the channel edit page.

Required attributes

  • Name
    channel
    Type
    integer
    Description
    The ID of the channel 1

Request

GET/channels/{channel}
curl -G https://YOUR_DOMAIN/api/channels/{channel} \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"
Loading response...
DELETE/channels/{channel}

Delete a channel

Delete a channel and its associated listings, listing-product links, and Amazon feeds.

Required attributes

  • Name
    channel
    Type
    integer
    Description
    The ID of the channel 1

Request

DELETE/channels/{channel}
curl -X DELETE https://YOUR_DOMAIN/api/channels/{channel} \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"
Loading response...
GET/channels/{channel}/activate

Activate a channel

Mark a channel as active. Used on the channel edit page.

Required attributes

  • Name
    channel
    Type
    integer
    Description
    The ID of the channel 1

Request

GET/channels/{channel}/activate
curl -G https://YOUR_DOMAIN/api/channels/{channel}/activate \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"
Loading response...
GET/channels/{channel}/deactivate

Deactivate a channel

Deactivate a channel, setting its connection status to `unauthorized`. Used on the channel edit page.

Required attributes

  • Name
    channel
    Type
    integer
    Description
    The ID of the channel 1

Request

GET/channels/{channel}/deactivate
curl -G https://YOUR_DOMAIN/api/channels/{channel}/deactivate \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"
Loading response...
POST/channels/amazon

Create an Amazon channel

Create a new Amazon channel for the current merchant. The channel is created in an unauthorized state; use the authorize-url endpoint to begin the OAuth flow.

Required attributes

  • Name
    marketplace
    Type
    string
    Description
    The Amazon marketplace identifier to connect ATVPDKIKX0DER

Optional attributes

  • Name
    nickname
    Type
    string
    Description
    An optional nickname for the channel Amazon Store

Request

POST/channels/amazon
curl -X POST https://YOUR_DOMAIN/api/channels/amazon \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "marketplace": "ATVPDKIKX0DER",
    "nickname": "Amazon Store"
}'
Loading response...
PUT/channels/amazon/{channel}

Update an Amazon channel

Update an Amazon channel's nickname and marketplace. Changing the marketplace disconnects the channel and sets its connection status to `unauthorized`, requiring re-authorization.

Required attributes

  • Name
    channel
    Type
    integer
    Description
    The ID of the Amazon channel 1
  • Name
    marketplace
    Type
    string
    Description
    The Amazon marketplace identifier ATVPDKIKX0DER

Optional attributes

  • Name
    nickname
    Type
    string
    Description
    An optional nickname for the channel Amazon Store

Request

PUT/channels/amazon/{channel}
curl -X PUT https://YOUR_DOMAIN/api/channels/amazon/{channel} \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "marketplace": "ATVPDKIKX0DER",
    "nickname": "Amazon Store"
}'
Loading response...
GET/channels/amazon/{channel}/authorize-url

Get the Amazon channel authorize URL

Return the Amazon OAuth URL to redirect the merchant to in order to authorize the channel. This is the real "authorize" step of connecting an Amazon channel.

Required attributes

  • Name
    channel
    Type
    integer
    Description
    The ID of the Amazon channel 1

Request

GET/channels/amazon/{channel}/authorize-url
curl -G https://YOUR_DOMAIN/api/channels/amazon/{channel}/authorize-url \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"
Loading response...
GET/channels/amazon/marketplaces

List Amazon marketplaces

Return the list of Amazon marketplaces that a channel can be connected to.

Request

GET/channels/amazon/marketplaces
curl -G https://YOUR_DOMAIN/api/channels/amazon/marketplaces \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"
Loading response...
GET/channels/amazon/catalog-items/{catalog_item_uuid}/prices

Show a Amazon catalog item's landed-price analytics

Summarises daily UTC landed-price observations of the Amazon New featured offer for one Amazon catalog item into calendar buckets over [start, end). Catalog prices are global per platform, so no listing, channel or merchant link is needed; the caller needs listings:view on the narrated account. A uuid that is not an existing Amazon catalog item returns 404. Days are UTC calendar days, weeks start on Monday and months on the first. Edge buckets are clipped to the range. Each observed currency is its own series; an item with no observations in the range returns an empty series array. Averages are per observation, not time-weighted, and the current UTC day may still gain observations.

Required attributes

  • Name
    catalog_item_uuid
    Type
    string
    Description
    The Amazon catalog item's uuid 019b2286-9fee-8019-9f64-154824d3aa4d
  • Name
    start
    Type
    string
    Description
    First UTC day to include, as YYYY-MM-DD with a four-digit AD year from 0001 to 9999. 2026-09-28
  • Name
    end
    Type
    string
    Description
    UTC day after the last day to include, as YYYY-MM-DD with a four-digit AD year from 0001 to 9999. Must be after start, at most 731 days later. 2026-10-03
  • Name
    granularity
    Type
    string
    Description
    Bucket size: UTC calendar day, Monday-start week, or calendar month. week

Request

GET/channels/amazon/catalog-items/{catalog_item_uuid}/prices
curl -G https://YOUR_DOMAIN/api/channels/amazon/catalog-items/{catalog-item-uuid}/prices \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"
Loading response...
GET/channels/amazon/{channel}/inventory-levels

Index an Amazon channel's listing inventory levels

Returns one entry per stored AFN or MFN level, so one listing can have two entries. Listings without inventory are omitted and `total` counts levels. Values are retained until replaced: `synced_at` is the source-request time and exposes staleness, while nullable `reported_at` is a legacy vendor timestamp and is not freshness. AFN and MFN may have different ages. This read-only request does not fetch Amazon, inactive channels remain readable, and replica reads may lag recent writes slightly.

Required attributes

  • Name
    channel
    Type
    integer
    Description
    The ID of the Amazon channel 1

Optional attributes

  • Name
    q
    Type
    string
    Description
    Search language filter for `listing_id`, `sku`, and `fulfillment_network`. Clauses can be combined with `AND` or `OR`; fragments the search-language parser does not recognize are ignored, while recognized clauses must use a supported field and valid value. Unknown network values simply return no rows. Example: `sku~"WIDGET" AND fulfillment_network:"afn"`
  • Name
    sorts
    Type
    array<Sort>
    Description
    Up to two requested sorts. Defaults to listing_id ascending then fulfillment_network ascending. Requested priorities are normalized and those same tie-breakers are appended, keeping page boundaries stable even for equal SKU or synced_at values. Example: `sorts[0][field]=synced_at&sorts[0][direction]=desc&sorts[0][order]=1`.
  • Name
    page
    Type
    integer
    Description
    1
  • Name
    per_page
    Type
    integer
    Description
    25

Request

GET/channels/amazon/{channel}/inventory-levels
curl -G https://YOUR_DOMAIN/api/channels/amazon/{channel}/inventory-levels \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"
Loading response...
POST/channels/custom

Create a custom channel

Create a new custom channel for the current merchant. Custom channels are created in an active state.

Required attributes

  • Name
    nickname
    Type
    string
    Description
    A nickname for the channel My Custom Channel

Request

POST/channels/custom
curl -X POST https://YOUR_DOMAIN/api/channels/custom \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "nickname": "My Custom Channel"
}'
Loading response...
PUT/channels/custom/{channel}

Update a custom channel

Update a custom channel's nickname.

Required attributes

  • Name
    channel
    Type
    integer
    Description
    The ID of the custom channel 1
  • Name
    nickname
    Type
    string
    Description
    A nickname for the channel My Custom Channel

Request

PUT/channels/custom/{channel}
curl -X PUT https://YOUR_DOMAIN/api/channels/custom/{channel} \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "nickname": "My Custom Channel"
}'
Loading response...
POST/channels/walmart

Create a Walmart channel

Create a new Walmart channel for the current merchant. The channel is created in an unauthorized state; use the authorize-url endpoint to begin the OAuth flow.

Required attributes

  • Name
    marketplace
    Type
    string
    Description
    The Walmart marketplace to connect us

Optional attributes

  • Name
    nickname
    Type
    string
    Description
    An optional nickname for the channel Walmart Store

Request

POST/channels/walmart
curl -X POST https://YOUR_DOMAIN/api/channels/walmart \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "marketplace": "us",
    "nickname": "Walmart Store"
}'
Loading response...
GET/channels/walmart/{channel}/authorize-url

Get the Walmart channel authorize URL

Return the Walmart OAuth URL to redirect the merchant to in order to authorize the channel. This is the real "authorize" step of connecting a Walmart channel.

Required attributes

  • Name
    channel
    Type
    integer
    Description
    The ID of the Walmart channel 1

Optional attributes

  • Name
    walmart_callback_uri
    Type
    string
    Description
    The Walmart authorization endpoint to redirect to, as handed to us by the App Store-initiated connect flow. Must be an allow-listed Walmart host. https://login.account.wal-mart.com/authorize

Request

GET/channels/walmart/{channel}/authorize-url
curl -G https://YOUR_DOMAIN/api/channels/walmart/{channel}/authorize-url \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"
Loading response...
GET/channels/walmart/{channel}/feeds

Index a Walmart channel's feeds

The feeds submitted to Walmart for this channel, newest first, with their processing status.

Required attributes

  • Name
    channel
    Type
    integer
    Description
    The ID of the Walmart channel 1

Optional attributes

  • Name
    feed_type
    Type
    string
    Description
    Only feeds of this type
  • Name
    page
    Type
    integer
    Description
    The page number to retrieve (1-indexed) 1
  • Name
    per_page
    Type
    integer
    Description
    The number of items per page 15

Request

GET/channels/walmart/{channel}/feeds
curl -G https://YOUR_DOMAIN/api/channels/walmart/{channel}/feeds \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"
Loading response...
GET/channels/walmart/{channel}/inventory-levels

Index a Walmart channel's listing inventory levels

One entry per listing of the channel, with the last WFS and ship-node levels stored for it. Listings with no stored level are included with `wfs: null` and an empty `ship_nodes`; missing levels are not zero. Every quantity Walmart did not report is null, and zero is only returned when Walmart reported zero. WFS and ship-node levels are synced from separate Walmart requests, so each carries its own `synced_at` (the time of that request) and they can be of different ages. Levels are retained until a later sync replaces them, so an old `synced_at` means the level may no longer be current; the levels are not a guarantee of current stock or a complete catalogue. WFS and ship-node quantities may describe the same units and must not be added together. Nothing is fetched from Walmart by this request. Reads may lag recent writes slightly. Inactive channels remain readable.

Required attributes

  • Name
    channel
    Type
    integer
    Description
    The ID of the Walmart channel 1

Optional attributes

  • Name
    q
    Type
    string
    Description
    Search language filter. Supported fields: `listing_id` (integer; `:`, `!:`, `>`, `>=`, `<`, `<=`) and `sku` (string; `:`, `!:`, `~`, `!~`). Substring matches require at least 3 characters. Clauses can be combined with `AND` / `OR`. Any other field or operator is rejected with a 422. Example: `sku~"WIDGET" AND listing_id>"100"`
  • Name
    sorts
    Type
    array<Sort>
    Description
    Sort the results. Defaults to `listing_id` ascending; unless `listing_id` is sorted explicitly, `listing_id` ascending is applied last so listings with the same SKU keep a stable order. Example: `sorts[0][field]=sku&sorts[0][direction]=desc&sorts[0][order]=1`
  • Name
    page
    Type
    integer
    Description
    The page number to retrieve (1-indexed) 1
  • Name
    per_page
    Type
    integer
    Description
    The number of listings per page 25

Request

GET/channels/walmart/{channel}/inventory-levels
curl -G https://YOUR_DOMAIN/api/channels/walmart/{channel}/inventory-levels \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"
Loading response...
POST/channels/walmart/{channel}/inventory-levels/{listing}/refresh

Refresh a Walmart listing's stored inventory levels

Requires listings:update. Fetches fresh WFS inventory and inventory across all ship nodes for the listing's Walmart SKU (channel_identifier), then saves the reported levels together and returns the stored values. Both Walmart lookups must succeed before either source is saved. An inactive or disconnected channel is rejected. Quantities Walmart omits remain null; zero is stored only when Walmart reports zero. Previously stored WFS or ship-node levels omitted from a successful response are retained with their original synced_at. Newer stored observations are not overwritten. Each source carries the time its lookup began. WFS and ship-node quantities may describe the same units and must not be added together. The response is read from the primary database.

Required attributes

  • Name
    channel
    Type
    integer
    Description
    The ID of the Walmart channel
  • Name
    listing
    Type
    integer
    Description
    The ID of a listing belonging to this channel

Request

POST/channels/walmart/{channel}/inventory-levels/{listing}/refresh
curl -X POST https://YOUR_DOMAIN/api/channels/walmart/{channel}/inventory-levels/{listing}/refresh \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"
Loading response...
POST/channels/walmart/{channel}/listings/{listing}/price/refresh

Refresh a Walmart listing's stored seller price

Requires listings:update. Fetches the item for the listing's Walmart SKU (channel_identifier) and saves its reported price and item facts. Returns the stored price from the primary database. The price is the seller's own offer price. An inactive or disconnected channel is rejected. Empty responses and missing or unparseable prices retain the previous observation, including synced_at; without stored details, price and synced_at are null. Zero is stored only when Walmart reports zero. Newer stored details are not overwritten. synced_at is the time the lookup began. Catalogue links and WFS enrolment are preserved.

Required attributes

  • Name
    channel
    Type
    integer
    Description
    The ID of the Walmart channel
  • Name
    listing
    Type
    integer
    Description
    The ID of a listing belonging to this channel

Request

POST/channels/walmart/{channel}/listings/{listing}/price/refresh
curl -X POST https://YOUR_DOMAIN/api/channels/walmart/{channel}/listings/{listing}/price/refresh \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"
Loading response...
GET/channels/walmart/{channel}/taxonomy

List Walmart product types

Walmart's product type taxonomy for a feed type, flattened to one row per product type, for a product type picker. Read from Walmart's `GET /v3/items/taxonomy` (https://developer.walmart.com/us-marketplace/reference/gettaxonomyresponse) and cached for 24 hours per marketplace and feed type. For an existing Walmart item, the product type it is listed under is authoritative; see `walmart.live_item.product_type` on the listing.

Required attributes

  • Name
    channel
    Type
    integer
    Description
    The ID of the Walmart channel 1
  • Name
    feed_type
    Type
    string
    Description
    The item spec feed type whose taxonomy to return

Request

GET/channels/walmart/{channel}/taxonomy
curl -G https://YOUR_DOMAIN/api/channels/walmart/{channel}/taxonomy \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"
Loading response...
GET/channels/walmart/feeds/{walmart_feed}

Show a Walmart feed

One feed with Walmart's result for each item in it. Items are empty until the feed is processed.

Required attributes

  • Name
    walmart_feed
    Type
    string
    Description
    The feed's uuid 019b2286-9fee-71de-9f64-154824d3aa4d

Request

GET/channels/walmart/feeds/{walmart_feed}
curl -G https://YOUR_DOMAIN/api/channels/walmart/feeds/{walmart-feed} \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"
Loading response...
GET/channels/walmart/catalog-items/{catalog_item_uuid}/prices

Show a Walmart catalog item's landed-price analytics

Summarises daily UTC landed-price observations of the Walmart buy box for one Walmart catalog item into calendar buckets over [start, end). Catalog prices are global per platform, so no listing, channel or merchant link is needed; the caller needs listings:view on the narrated account. A uuid that is not an existing Walmart catalog item returns 404. Days are UTC calendar days, weeks start on Monday and months on the first. Edge buckets are clipped to the range. Each observed currency is its own series; an item with no observations in the range returns an empty series array. Averages are per observation, not time-weighted, and the current UTC day may still gain observations.

Required attributes

  • Name
    catalog_item_uuid
    Type
    string
    Description
    The Walmart catalog item's uuid 019b2286-9fee-80ea-9f64-154824d3aa4d
  • Name
    start
    Type
    string
    Description
    First UTC day to include, as YYYY-MM-DD with a four-digit AD year from 0001 to 9999. 2026-09-28
  • Name
    end
    Type
    string
    Description
    UTC day after the last day to include, as YYYY-MM-DD with a four-digit AD year from 0001 to 9999. Must be after start, at most 731 days later. 2026-10-03
  • Name
    granularity
    Type
    string
    Description
    Bucket size: UTC calendar day, Monday-start week, or calendar month. week

Request

GET/channels/walmart/catalog-items/{catalog_item_uuid}/prices
curl -G https://YOUR_DOMAIN/api/channels/walmart/catalog-items/{catalog-item-uuid}/prices \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"
Loading response...
POST/channels/walmart/listings/{listing}

Set up a listing on Walmart

Set up the listing's SKU as an offer on an item already in Walmart's catalogue ("setup by match", the `MP_ITEM_MATCH` feed). Walmart processes the feed asynchronously: the listing is marked submitted, and the returned feed reports the outcome through the Walmart feeds endpoints. When the feed finishes, the listing becomes synced (with its WPID) or unsynced.

Required attributes

  • Name
    listing
    Type
    integer
    Description
    The ID of a listing on a Walmart channel 1
  • Name
    gtin
    Type
    string
    Description
    The GTIN, UPC or EAN of the Walmart catalogue item to match (8, 12, 13 or 14 digits) 012345678905
  • Name
    price
    Type
    number
    Description
    The offer price, in the channel's marketplace currency 19.99

Optional attributes

  • Name
    shipping_weight_lb
    Type
    number
    Description
    The shipping weight in pounds. Defaults to the listing's weight; required when the listing has none. 1.5
  • Name
    condition
    Type
    string
    Description
    The item condition. Defaults to `New`. New

Request

POST/channels/walmart/listings/{listing}
curl -X POST https://YOUR_DOMAIN/api/channels/walmart/listings/{listing} \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "gtin": "012345678905",
    "price": 19.99,
    "shipping_weight_lb": 1.5,
    "condition": "New"
}'
Loading response...
PATCH/channels/walmart/listings/{listing}

Update listing attributes on Walmart

Requests partial product content and offer attribute updates for an existing United States Walmart listing through an MP_MAINTENANCE feed. Include only attributes to update, using Walmart attribute names inside orderable and visible. The listing SKU is supplied automatically; gtin defaults to the linked catalogue item. Walmart validates category-specific attributes asynchronously. The returned feed tracks submission and item-level errors. The local listing status and content are not changed by this request. WFS trade item and supply chain fields require WFS item setup instead. For dedicated SKU-based price and MSRP updates without a GTIN, use PATCH /channels/walmart/listings/{listing}/price, which submits PRICE_AND_PROMOTION.

Required attributes

  • Name
    listing
    Type
    integer
    Description
    The ID of a listing on a Walmart channel 1

Optional attributes

  • Name
    gtin
    Type
    string
    Description
    GTIN, UPC or EAN (8, 12, 13 or 14 digits). Defaults to the linked Walmart catalogue GTIN. Required when the listing has no catalogue GTIN. For restored or GTIN-exempt items, use the identifier Walmart assigned to the existing item. 012345678905
  • Name
    product_type
    Type
    string
    Description
    The Walmart product type that keys visible. Defaults to the product type Walmart lists the item under; when supplied it must equal that product type. Ignored without visible. T-Shirts
  • Name
    visible
    Type
    object
    Description
    Product content attributes for the item's product type, using Walmart names (for example productName, shortDescription, mainImageUrl, productSecondaryImageURL, keyFeatures and category attributes). condition cannot be changed: it may only restate the live item's condition (`walmart.live_item.condition`), otherwise 422, and only for a product type whose spec has a condition attribute (many have none, such as Battle Ropes and Baby Blankets, and then any condition is refused as an attribute the product type does not have). Must meet Walmart's item spec for the product type: carry every attribute in `required` from GET /channels/walmart/listings/{listing}/content-requirements, plus any the spec requires for another attribute's value (for example warrantyText when has_written_warranty is "Yes - Warranty Text"), with each value meeting its spec rules (type, length, allowed values, item counts); no feed is sent otherwise. {"productName":"Updated product title","keyFeatures":["Updated feature"]}
  • Name
    orderable
    Type
    object
    Description
    Offer attributes using Walmart names (for example price, ShippingWeight, startDate, endDate and stateRestrictions). sku, productIdentifiers, specProductType, condition, skuUpdate and productIdUpdate are reserved and must be omitted. Use the dedicated /price endpoint for pricing-only updates. {"price":19.99,"ShippingWeight":1.5}

Request

PATCH/channels/walmart/listings/{listing}
curl -X PATCH https://YOUR_DOMAIN/api/channels/walmart/listings/{listing} \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "gtin": "012345678905",
    "product_type": "T-Shirts",
    "visible": {
        "productName": "Updated product title",
        "keyFeatures": [
            "Updated feature"
        ]
    },
    "orderable": {
        "price": 19.99,
        "ShippingWeight": 1.5
    }
}'
Loading response...
PATCH/channels/walmart/listings/{listing}/price

Update a Walmart listing price and MSRP

Queues a PRICE_AND_PROMOTION feed for an existing listing on a connected United States Walmart channel. Requires ListingsUpdate permission and the listing must belong to the current merchant and service provider context. The listing SKU is supplied automatically; no GTIN, catalogue link or product type is required. Supply a price and optionally msrp. Uses Walmart pricing specification 2.0.20240126-12_25_52-api with MPItem[].Promo&Discount. A 202 response means queued, not applied: monitor GET /channels/walmart/feeds/{walmart_feed} for submission and item-level ingestion errors. Filter channel feeds with feed_type=PRICE_AND_PROMOTION. The local listing status and content are unchanged. Promotion creation and deletion are not supported by this endpoint. Walmart reference: https://developer.walmart.com/us-marketplace/docs/update-bulk-prices.

Required attributes

  • Name
    listing
    Type
    integer
    Description
    The ID of a listing on a Walmart channel 1
  • Name
    price
    Type
    number
    Description
    Selling price in USD, greater than zero, with at most two decimal places. Numeric strings are accepted and sent to Walmart as numbers. 19.99

Optional attributes

  • Name
    msrp
    Type
    number
    Description
    Optional MSRP in USD, non-negative, with at most two decimal places. Omit to leave it unchanged; null is not accepted. Numeric strings are accepted and sent to Walmart as numbers. 24.99

Request

PATCH/channels/walmart/listings/{listing}/price
curl -X PATCH https://YOUR_DOMAIN/api/channels/walmart/listings/{listing}/price \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "price": "19.99",
    "msrp": "24.99"
}'
Loading response...
GET/channels/walmart/listings/{listing}/content-requirements

Show the content requirements of a Walmart listing

The content (`Visible`) attributes Walmart's item spec defines for the product type Walmart lists the item under, for building a content form. `required` is every attribute a content change must carry: the spec's unconditional `required` list (`spec_required`) united with Walmart's content standards (`content_standards`: `productName`, `shortDescription`, `mainImageUrl`, `keyFeatures`, kept only where the product type has them). The live `MP_MAINTENANCE` spec marks none of the content standards required (for many product types it has no unconditional `required` list at all), yet Walmart's ingestion refuses a content change without them (`EXT_DATA_ERROR_05045574625354`; https://public.walmart.com/content/ContentStandards/en_us/importance-of-content-standards.html), so they come from that ingestion evidence rather than the spec. `conditional` lists the spec's `allOf` `if`/`then` rules as the attribute that triggers them (`when`) and the attributes they then require (`then`); it is listed as Walmart gives it and not evaluated here, and the value that triggers a rule (e.g. which `has_written_warranty` answer calls for `warrantyText` rather than `warrantyURL`) is not included. A content change on `PATCH /channels/walmart/listings/{listing}` that misses a `required` attribute, misses one a `conditional` rule requires for the value sent, or has a value breaking its spec rules is refused with 422 before any feed is sent. Walmart may still refuse a content change on rules this check leaves to Walmart (such as value formats, or rules outside the spec); those come back as the feed's ingestion errors. Read from Walmart's `POST /v3/items/spec` (https://developer.walmart.com/us-marketplace/reference/getspec) for the `MP_MAINTENANCE` feed type at the version our maintenance feed is sent with, and cached for 24 hours per marketplace, feed type and product type.

Required attributes

  • Name
    listing
    Type
    integer
    Description
    The ID of a listing on a Walmart channel 1

Request

GET/channels/walmart/listings/{listing}/content-requirements
curl -G https://YOUR_DOMAIN/api/channels/walmart/listings/{listing}/content-requirements \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"
Loading response...
GET/channels/walmart/listings/{listing}/content

Get current Walmart listing content

Fetches fresh content directly from Walmart for a listing on a connected Walmart channel. Resolves the exact seller SKU with GET /v3/items/{sku}, then searches GET /v3/items/walmart/search using the live item ID, or its normalized GTIN/UPC when Walmart omits the item ID. Returns only an unambiguous matching catalog item, with a matching condition when both responses include one. No local catalog link is required. Requires ListingsView permission and the listing must belong to the current merchant and service provider context. This is a partial read of Walmart's published catalog, not a complete maintenance feed or saved draft. Unpublished items may not appear in catalog search. Missing text fields are null and missing images are an empty array; never use those missing values to overwrite a draft. Key features and category-specific attributes are not exposed by this endpoint, so use GET /channels/walmart/listings/{listing}/content-requirements to determine what else an update needs. For PATCH /channels/walmart/listings/{listing}, map title to visible.productName, description to visible.shortDescription and brand to visible.brand; image URLs can prefill visible.mainImageUrl and visible.productSecondaryImageURL after review. The response is not guaranteed to satisfy Walmart's maintenance requirements. Text and HTML are preserved as Walmart returns them. Walmart API reference: https://developer.walmart.com/us-marketplace/reference/getsearchresult.

Required attributes

  • Name
    listing
    Type
    integer
    Description
    The ID of a listing on a Walmart channel

Request

GET/channels/walmart/listings/{listing}/content
curl -G https://YOUR_DOMAIN/api/channels/walmart/listings/{listing}/content \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"
Loading response...
GET/channels/walmart/listings/{listing}/wfs-conversion-requirements

Show WFS conversion requirements

Resolves the listing live by SKU on its connected US Walmart channel and returns the OMNI_WFS conversion JSON schemas at 5.0.20260803-17_50_56-api, also used by conversion validation and feed generation. No local catalog link is needed. Each schema retains Walmart properties, required, additionalProperties, types, bounds, enums and full if/then/else conditions; clients must evaluate value conditions rather than treating every then field as unconditionally required. visible_schema applies inside Visible[product_type], orderable_schema to Orderable and trade_item_schema to TradeItem. feed_schema is the complete envelope restricted to the live product type. See the conversion endpoint for snake_case input mappings. These are conversion requirements, distinct from content-requirements (MP_MAINTENANCE). Requirements are cached for 24 hours by marketplace, OMNI_WFS, exact version and product type.

Required attributes

  • Name
    listing
    Type
    integer
    Description
    The ID of a listing on a Walmart channel 1

Request

GET/channels/walmart/listings/{listing}/wfs-conversion-requirements
curl -G https://YOUR_DOMAIN/api/channels/walmart/listings/{listing}/wfs-conversion-requirements \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"
Loading response...
POST/channels/walmart/listings/{listing}/convert-to-wfs

Convert a Walmart listing to WFS

Requests conversion of an existing United States Walmart Marketplace listing through an OMNI_WFS feed at specification 5.0.20260803-17_50_56-api. The live SKU lookup supplies the product type and GTIN/UPC; a local catalog link is not required. GET /channels/walmart/listings/{listing}/wfs-conversion-requirements returns the exact conversion schemas, including field placement, types, enums and value-dependent requirements. The content-requirements endpoint describes MP_MAINTENANCE and is not a conversion schema. The generated feed is validated before submission. A 202 means queued for asynchronous processing, not converted; monitor the returned feed for ingestion errors.

Required attributes

  • Name
    listing
    Type
    integer
    Description
    The ID of a listing on a Walmart channel 1
  • Name
    price
    Type
    number
    Description
    The item price in the Walmart channel's marketplace currency 19.99
  • Name
    country_of_origin_assembly
    Type
    array<string>
    Description
  • Name
    battery_technology_type
    Type
    string
    Description
    Does Not Contain a Battery
  • Name
    electronics_indicator
    Type
    boolean
    Description
    false
  • Name
    each
    Type
    object
    Description
  • Name
    each.width_in
    Type
    number
    Description
  • Name
    each.height_in
    Type
    number
    Description
  • Name
    each.depth_in
    Type
    number
    Description
  • Name
    each.weight_lb
    Type
    number
    Description
  • Name
    visible
    Type
    object
    Description
    Attributes placed exactly in SupplierItem[0].Visible[live product type]. Must meet visible_schema from the WFS requirements endpoint. No maintenance content standards are added. Unknown fields are rejected, never stripped. For Battle Ropes this release requires productName, brand, isProp65WarningRequired, mainImageUrl, netContent and condition (New). isProp65WarningRequired=Yes requires prop65WarningText. {"productName":"Tapout 40ft Battle Rope","brand":"Tapout","mainImageUrl":"https://example.com/rope.jpg","condition":"New","isProp65WarningRequired":"No","netContent":{"productNetContentMeasure":1,"productNetContentUnit":"Each"}}
  • Name
    end_date
    Type
    string
    Description
    Future UTC date, mapped to Orderable.endDate at midnight. 2027-01-01

Optional attributes

  • Name
    product_type
    Type
    string
    Description
    The Walmart product type used as the key in the feed's Visible block. Defaults to the product type Walmart lists the item under; when supplied it must equal that product type. Battle Ropes
  • Name
    chemical_aerosol_pesticide
    Type
    boolean
    Description
    Legacy compatibility: false supplies No for any omitted is_chemical/is_aerosol/is_pesticide flags. True is rejected because it cannot identify which hazard applies; supply the three explicit flags.
  • Name
    state_restrictions_text
    Type
    string
    Description
    Walmart's state restriction value. Defaults to `None`. None
  • Name
    inner_pack
    Type
    null
    Description
    Only null or omission is accepted. This conversion version does not support TradeItem.innerPack.
  • Name
    is_chemical
    Type
    boolean
    Description
    Maps to Orderable.isChemical as Yes/No. Yes triggers the conditional compliance requirements in orderable_schema. false
  • Name
    is_aerosol
    Type
    boolean
    Description
    Maps to Orderable.isAerosol as Yes/No. Yes triggers the conditional compliance requirements in orderable_schema. false
  • Name
    is_pesticide
    Type
    boolean
    Description
    Maps to Orderable.isPesticide as Yes/No. Yes triggers the conditional compliance requirements in orderable_schema. false
  • Name
    orderable
    Type
    object
    Description
    Additional attributes placed in SupplierItem[0].Orderable, preserving Walmart field names and JSON types. Must meet orderable_schema, including conditional requirements for hazards and batteries: labelImage, safetyDataSheet, numberOfHazardousComponents, hasBatteries, batterySize, lithiumIonBatteries, lithiumMetalBatteries, required_storage_condition and pesticide_type when applicable. sku, productIdentifiers, price, stateRestrictions, electronicsIndicator, batteryTechnologyType, isChemical, isAerosol, isPesticide and endDate are managed by the listing or top-level request fields and cannot be supplied here. Unsupported attributes are rejected.

Request

POST/channels/walmart/listings/{listing}/convert-to-wfs
curl -X POST https://YOUR_DOMAIN/api/channels/walmart/listings/{listing}/convert-to-wfs \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "product_type": "Battle Ropes",
    "price": 19.99,
    "country_of_origin_assembly": [
        "US"
    ],
    "battery_technology_type": "Does Not Contain a Battery",
    "electronics_indicator": false,
    "chemical_aerosol_pesticide": true,
    "state_restrictions_text": "None",
    "each": {
        "width_in": 1,
        "height_in": 1,
        "depth_in": 1,
        "weight_lb": 1
    },
    "visible": {
        "productName": "Tapout 40ft Battle Rope",
        "brand": "Tapout",
        "mainImageUrl": "https://example.com/rope.jpg",
        "condition": "New",
        "isProp65WarningRequired": "No",
        "netContent": {
            "productNetContentMeasure": 1,
            "productNetContentUnit": "Each"
        }
    },
    "end_date": "2027-01-01",
    "is_chemical": false,
    "is_aerosol": false,
    "is_pesticide": false
}'
Loading response...
GET/channels/walmart/{channel}/wfs/inbound-orders

Index a Walmart channel's WFS inbound orders

The channel's Walmart Fulfillment Services inbound orders, newest first.

Required attributes

  • Name
    channel
    Type
    integer
    Description
    The ID of the Walmart channel 1

Optional attributes

  • Name
    status
    Type
    string
    Description
    Only orders with this status
  • Name
    search
    Type
    string
    Description
    Only orders whose `inbound_order_id` contains this text, case-insensitively
  • Name
    page
    Type
    integer
    Description
    The page number to retrieve (1-indexed) 1
  • Name
    per_page
    Type
    integer
    Description
    The number of items per page. Defaults to 10. 10

Request

GET/channels/walmart/{channel}/wfs/inbound-orders
curl -G https://YOUR_DOMAIN/api/channels/walmart/{channel}/wfs/inbound-orders \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"
Loading response...
POST/channels/walmart/{channel}/wfs/inbound-orders

Draft a WFS inbound order

Create a draft inbound order on a Walmart channel with its return address and items. Nothing is sent to Walmart until the order is submitted.

Required attributes

  • Name
    channel
    Type
    integer
    Description
    The ID of the Walmart channel 1
  • Name
    inbound_order_id
    Type
    string
    Description
    Your id for the order. Must be unique on the channel. PO-2026-0042
  • Name
    return_address
    Type
    object
    Description
    Where Walmart returns inventory it cannot receive
  • Name
    return_address.address_line_1
    Type
    string
    Description
    100 Main St
  • Name
    return_address.city
    Type
    string
    Description
    Bentonville
  • Name
    return_address.state_code
    Type
    string
    Description
    AR
  • Name
    return_address.country_code
    Type
    string
    Description
    ISO 3166-1 alpha-2 country code, exactly 2 characters US
  • Name
    return_address.postal_code
    Type
    string
    Description
    72712
  • Name
    items
    Type
    array<Item>
    Description
    The SKUs to send, each at most once
  • Name
    items.*.sku
    Type
    string
    Description
    Must be unique within the order (compared case-sensitively) SKU-1
  • Name
    items.*.gtin
    Type
    string
    Description
    The item's GTIN, UPC or EAN: 8, 12, 13 or 14 digits; the check digit is not validated 00012345678905
  • Name
    items.*.item_description
    Type
    string
    Description
    Widget
  • Name
    items.*.item_qty
    Type
    integer
    Description
    The total units of the SKU. With case packs it must equal `vendor_pack_qty` times `inner_pack_qty`. 120
  • Name
    items.*.expected_delivery_date
    Type
    string
    Description
    When the item is expected at Walmart, as `YYYY-MM-DD` 2026-10-15

Optional attributes

  • Name
    return_address.address_line_2
    Type
    string
    Description
  • Name
    inventory_transfer_service
    Type
    boolean
    Description
    Use Walmart's Inventory Transfer Service, sent as `inboundServices.inventoryTransferService: Y`. Omitted or false is self-distribution, Walmart's default, and nothing is sent. false
  • Name
    items.*.vendor_pack_qty
    Type
    integer
    Description
    The number of cases. Send together with `inner_pack_qty` for case-packed items; omit both for loose units. 12
  • Name
    items.*.inner_pack_qty
    Type
    integer
    Description
    The units per case. Send together with `vendor_pack_qty`. 10
  • Name
    items.*.item_labeling
    Type
    boolean
    Description
    Ask WFS to label the units (the Item Labeling prep service). Defaults to false. false

Request

POST/channels/walmart/{channel}/wfs/inbound-orders
curl -X POST https://YOUR_DOMAIN/api/channels/walmart/{channel}/wfs/inbound-orders \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "inbound_order_id": "PO-2026-0042",
    "return_address": {
        "address_line_1": "100 Main St",
        "address_line_2": null,
        "city": "Bentonville",
        "state_code": "AR",
        "country_code": "US",
        "postal_code": "72712"
    },
    "inventory_transfer_service": false,
    "items": [
        {
            "sku": "SKU-1",
            "gtin": "00012345678905",
            "item_description": "Widget",
            "item_qty": 120,
            "vendor_pack_qty": 12,
            "inner_pack_qty": 10,
            "expected_delivery_date": "2026-10-15",
            "item_labeling": false
        }
    ]
}'
Loading response...
GET/channels/walmart/{channel}/wfs/holds

Search a GTIN's WFS hazmat compliance holds

Asks Walmart whether an item is on a WFS hazmat compliance hold. `in_review` clears within about 72 business hours; `action_needed` means the item data must be fixed and converted to WFS again; `prohibited` means the item cannot be sold through WFS. An item with several errors is one row per error. Nothing is stored. Walmart: https://developer.walmart.com/us-marketplace/reference/wercsfeedback

Required attributes

  • Name
    channel
    Type
    integer
    Description
    The ID of the Walmart channel 1
  • Name
    gtin
    Type
    string
    Description
    The item's GTIN, UPC or EAN: 8, 12, 13 or 14 digits 00704551260905

Request

GET/channels/walmart/{channel}/wfs/holds
curl -G https://YOUR_DOMAIN/api/channels/walmart/{channel}/wfs/holds \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"
Loading response...
GET/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}

Show a WFS inbound order

One inbound order with its items, its shipments (with their items and carrier bookings) and its timeline.

Required attributes

  • Name
    wfs_inbound_order
    Type
    string
    Description
    The inbound order's uuid 019b2c41-7b1c-80ee-9a51-4d2e8f6b1a90

Request

GET/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}
curl -G https://YOUR_DOMAIN/api/channels/walmart/wfs/inbound-orders/{wfs-inbound-order} \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"
Loading response...
PUT/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}/items

Replace the items of a WFS inbound order

Replace the item set of a draft or rejected inbound order before it is submitted again. A rejected order keeps its `inbound_order_id`: Walmart expects the corrected order to be resubmitted under the same id. Nothing is sent to Walmart until the order is submitted.

Required attributes

  • Name
    wfs_inbound_order
    Type
    string
    Description
    The inbound order's uuid 019b2c41-7b1c-80ee-9a51-4d2e8f6b1a90
  • Name
    items
    Type
    array<Item>
    Description
    The order's complete item set, each SKU at most once. SKUs on the order but not in the list are removed, new SKUs are added, and a SKU whose fields changed is replaced; an unchanged SKU records nothing.
  • Name
    items.*.sku
    Type
    string
    Description
    Must be unique within the order (compared case-sensitively) SKU-1
  • Name
    items.*.gtin
    Type
    string
    Description
    The item's GTIN, UPC or EAN: 8, 12, 13 or 14 digits; the check digit is not validated 00012345678905
  • Name
    items.*.item_description
    Type
    string
    Description
    Widget
  • Name
    items.*.item_qty
    Type
    integer
    Description
    The total units of the SKU. With case packs it must equal `vendor_pack_qty` times `inner_pack_qty`. 120
  • Name
    items.*.expected_delivery_date
    Type
    string
    Description
    When the item is expected at Walmart, as `YYYY-MM-DD` 2026-10-15

Optional attributes

  • Name
    items.*.vendor_pack_qty
    Type
    integer
    Description
    The number of cases. Send together with `inner_pack_qty` for case-packed items; omit both for loose units. 12
  • Name
    items.*.inner_pack_qty
    Type
    integer
    Description
    The units per case. Send together with `vendor_pack_qty`. 10
  • Name
    items.*.item_labeling
    Type
    boolean
    Description
    Ask WFS to label the units (the Item Labeling prep service). Omit to keep the saved choice of an item already on the order; a new item defaults to false. false
  • Name
    inventory_transfer_service
    Type
    boolean
    Description
    Use Walmart's Inventory Transfer Service, sent as `inboundServices.inventoryTransferService: Y`. Omitted or false is self-distribution, Walmart's default, and nothing is sent. Omitted leaves the order's choice unchanged. false

Request

PUT/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}/items
curl -X PUT https://YOUR_DOMAIN/api/channels/walmart/wfs/inbound-orders/{wfs-inbound-order}/items \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "items": [
        {
            "sku": "SKU-1",
            "gtin": "00012345678905",
            "item_description": "Widget",
            "item_qty": 120,
            "vendor_pack_qty": 12,
            "inner_pack_qty": 10,
            "expected_delivery_date": "2026-10-15",
            "item_labeling": false
        }
    ],
    "inventory_transfer_service": false
}'
Loading response...
POST/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}/preview

Preview the destinations and ITS fees of a WFS inbound order

Asks Walmart where the order's units would go, both with Inventory Transfer Service (ITS) and with self-distribution, and what ITS would cost. Walmart's figures are estimates: routing and fees are fixed when the order is submitted. Only Draft and Rejected orders can be previewed. Nothing is stored except a `preview_fetched` timeline entry. Walmart: https://developer.walmart.com/us-marketplace/reference/inboundpreview

Required attributes

  • Name
    wfs_inbound_order
    Type
    string
    Description
    The inbound order's uuid 019b2c41-7b1c-80ee-9a51-4d2e8f6b1a90

Optional attributes

  • Name
    item_labeling_skus
    Type
    array<string>
    Description
    The SKUs to preview with the Item Labeling prep service, replacing the items' own choice for this preview only. Omit to use the items' own choice.

Request

POST/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}/preview
curl -X POST https://YOUR_DOMAIN/api/channels/walmart/wfs/inbound-orders/{wfs-inbound-order}/preview \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "item_labeling_skus": [
        "SKU-1"
    ]
}'
Loading response...
POST/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}/submit

Submit a WFS inbound order to Walmart

Queue a draft or rejected inbound order for submission to Walmart. Submission happens in the background, so the returned order is still in its previous status (`draft` or `rejected`); poll the order to see it become `submitted` (with its shipments) or `rejected` (with `errors`). Submitting again while a submission is queued queues nothing more.

Required attributes

  • Name
    wfs_inbound_order
    Type
    string
    Description
    The inbound order's uuid 019b2c41-7b1c-80ee-9a51-4d2e8f6b1a90

Request

POST/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}/submit
curl -X POST https://YOUR_DOMAIN/api/channels/walmart/wfs/inbound-orders/{wfs-inbound-order}/submit \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"
Loading response...
POST/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}/cancellation-request

Request cancellation of a WFS inbound order

Ask Walmart to cancel a submitted inbound order. Walmart's answer is recorded on the order rather than returned as an error: `timeline[0].event_type` is `cancellation_requested` when Walmart accepted (and `cancellation_requested_at` is set), `cancellation_rejected` when it refused, or `api_error_occurred` when the call failed (see `errors`). The order becomes `cancelled` once Walmart reports it cancelled.

Required attributes

  • Name
    wfs_inbound_order
    Type
    string
    Description
    The inbound order's uuid 019b2c41-7b1c-80ee-9a51-4d2e8f6b1a90

Request

POST/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}/cancellation-request
curl -X POST https://YOUR_DOMAIN/api/channels/walmart/wfs/inbound-orders/{wfs-inbound-order}/cancellation-request \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"
Loading response...
PUT/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}/shipments/{shipment}/quantities

Update a WFS shipment's quantities

Change how many units of each SKU a shipment will carry. Walmart allows an increase of at most six units per SKU after submission, and a SKU is removed by setting it to 0, but not every SKU on the shipment (that would cancel the whole inbound order); a request outside those rules is refused with 422 before Walmart is called (Walmart remains the authority and may still refuse). The outcome is recorded on the order: `timeline[0].event_type` is `shipment_quantities_updated` when Walmart accepted, `shipment_quantities_rejected` when it refused (also answered 422), or `shipment_quantities_update_unconfirmed` when the call failed (answered 200; the outcome will be learned when the shipment is next refreshed).

Required attributes

  • Name
    wfs_inbound_order
    Type
    string
    Description
    The inbound order's uuid 019b2c41-7b1c-80ee-9a51-4d2e8f6b1a90
  • Name
    shipment
    Type
    string
    Description
    Walmart's id for a shipment on the order SHP-8812
  • Name
    quantities
    Type
    object
    Description
    The new unit quantity for each SKU to change, keyed by SKU. Every SKU must already be on the shipment. Each quantity is 0 (removes the SKU) or between 1 and the SKU's current `requested_qty` plus 6. At least one SKU on the shipment must stay above 0. {"SKU-1":96}

Request

PUT/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}/shipments/{shipment}/quantities
curl -X PUT https://YOUR_DOMAIN/api/channels/walmart/wfs/inbound-orders/{wfs-inbound-order}/shipments/{shipment}/quantities \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "quantities": {
        "SKU-1": 96
    }
}'
Loading response...
POST/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}/shipments/{shipment}/tracking

Submit tracking for a WFS shipment

Tell Walmart which carrier and tracking numbers a shipment is travelling with. The outcome is recorded on the order: `timeline[0].event_type` is `tracking_submitted` when Walmart accepted (and the shipment shows the carrier and tracking numbers), `tracking_rejected` when it refused, or `api_error_occurred` when the call failed. A Walmart refusal answers 422 and a call Walmart did not answer answers 502.

Required attributes

  • Name
    wfs_inbound_order
    Type
    string
    Description
    The inbound order's uuid 019b2c41-7b1c-80ee-9a51-4d2e8f6b1a90
  • Name
    shipment
    Type
    string
    Description
    Walmart's id for a shipment on the order SHP-8812
  • Name
    carrier_name
    Type
    string
    Description
    UPS
  • Name
    tracking_numbers
    Type
    array<string>
    Description
    Each number at most once ["1Z999AA10123456784","1Z999AA10123456785"]

Request

POST/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}/shipments/{shipment}/tracking
curl -X POST https://YOUR_DOMAIN/api/channels/walmart/wfs/inbound-orders/{wfs-inbound-order}/shipments/{shipment}/tracking \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "carrier_name": "UPS",
    "tracking_numbers": [
        "1Z999AA10123456784",
        "1Z999AA10123456785"
    ]
}'
Loading response...
POST/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}/shipments/{shipment}/box-label

Create a WFS shipment box label

Have Walmart create the box labels for a shipment and download them. The file is returned as Walmart produced it and is not stored.

Required attributes

  • Name
    wfs_inbound_order
    Type
    string
    Description
    The inbound order's uuid 019b2c41-7b1c-80ee-9a51-4d2e8f6b1a90
  • Name
    shipment
    Type
    string
    Description
    Walmart's id for a shipment on the order SHP-8812

Optional attributes

  • Name
    label_size
    Type
    string
    Description
    The label size. Walmart's default when omitted. X4_6
  • Name
    label_format
    Type
    string
    Description
    The file format. Walmart's default when omitted. PDF
  • Name
    load_types
    Type
    array
    Description
    How many labels to create for each kind of load

Request

POST/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}/shipments/{shipment}/box-label
curl -X POST https://YOUR_DOMAIN/api/channels/walmart/wfs/inbound-orders/{wfs-inbound-order}/shipments/{shipment}/box-label \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "label_size": "X4_6",
    "label_format": "PDF",
    "load_types": [
        {
            "count": 3,
            "load_type": "SINGLE SKU"
        }
    ]
}'
Loading response...
GET/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}/shipments/{shipment}/rate-quotes

List the rate quotes of a WFS shipment

The Walmart preferred-carrier quotes requested for a shipment, newest first, at most 200.

Required attributes

  • Name
    wfs_inbound_order
    Type
    string
    Description
    The inbound order's uuid 019b2c41-7b1c-80ee-9a51-4d2e8f6b1a90
  • Name
    shipment
    Type
    string
    Description
    Walmart's id for a shipment on the order SHP-8812

Request

GET/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}/shipments/{shipment}/rate-quotes
curl -G https://YOUR_DOMAIN/api/channels/walmart/wfs/inbound-orders/{wfs-inbound-order}/shipments/{shipment}/rate-quotes \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"
Loading response...
POST/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}/shipments/{shipment}/rate-quotes

Request rate quotes for a WFS shipment

Ask Walmart's preferred-carrier programme for quotes. The fields besides `quote_type` and `ship_from` depend on the quote type. The returned quotes are kept and can be booked with the carrier booking endpoint.

Required attributes

  • Name
    wfs_inbound_order
    Type
    string
    Description
    The inbound order's uuid 019b2c41-7b1c-80ee-9a51-4d2e8f6b1a90
  • Name
    shipment
    Type
    string
    Description
    Walmart's id for a shipment on the order SHP-8812
  • Name
    quote_type
    Type
    string
    Description
    Parcel
  • Name
    ship_from
    Type
    object
    Description
    The address the carrier collects from
  • Name
    ship_from.address_line_1
    Type
    string
    Description
    1 Warehouse Way
  • Name
    ship_from.city
    Type
    string
    Description
    Sunnyvale
  • Name
    ship_from.state_code
    Type
    string
    Description
    CA
  • Name
    ship_from.country_code
    Type
    string
    Description
    US
  • Name
    ship_from.postal_code
    Type
    string
    Description
    95126

Optional attributes

  • Name
    ship_from.address_line_2
    Type
    string
    Description
  • Name
    ship_from.phone
    Type
    string
    Description
    5550100
  • Name
    ship_from.location_name
    Type
    string
    Description
    Main warehouse
  • Name
    packages
    Type
    array
    Description
    The boxes to ship. Required for `Parcel`.
  • Name
    pickup_from
    Type
    string
    Description
    Earliest pickup. Required for `LTL` and `FTL`. An ISO 8601 timestamp in UTC or with an offset, e.g. `2026-10-06T08:00:00Z` 2026-10-06T08:00:00Z
  • Name
    pickup_to
    Type
    string
    Description
    Latest pickup, after `pickup_from`. Required for `LTL` and `FTL`. 2026-10-07T17:00:00Z
  • Name
    freight
    Type
    object
    Description
    Freight details. Required for `LTL` and `FTL`.
  • Name
    pallets
    Type
    array
    Description
    The pallets to ship. Required for `LTL` and `FTL`.
  • Name
    equipment
    Type
    array
    Description
    The truck equipment. Required for `FTL`.
  • Name
    mode
    Type
    string
    Description
    Required for `FTL` FTL
  • Name
    service_level
    Type
    string
    Description
    Required for `FTL` WFS

Request

POST/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}/shipments/{shipment}/rate-quotes
curl -X POST https://YOUR_DOMAIN/api/channels/walmart/wfs/inbound-orders/{wfs-inbound-order}/shipments/{shipment}/rate-quotes \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "quote_type": "Parcel",
    "ship_from": {
        "address_line_1": "1 Warehouse Way",
        "address_line_2": "string",
        "city": "Sunnyvale",
        "state_code": "CA",
        "country_code": "US",
        "postal_code": "95126",
        "phone": "5550100",
        "location_name": "Main warehouse"
    },
    "packages": [
        {
            "sequence_number": 1,
            "weight_lb": 12.5,
            "length_in": 16,
            "width_in": 12,
            "height_in": 10,
            "package_type": "MIXED SKUS",
            "is_stackable": true,
            "package_count": 1
        }
    ],
    "pickup_from": "2026-10-06T08:00:00Z",
    "pickup_to": "2026-10-07T17:00:00Z",
    "freight": {
        "freight_class": 70,
        "declared_value": 1,
        "single_sku_boxes": 0,
        "mixed_sku_boxes": 12,
        "total_pallet_count": 1
    },
    "pallets": [
        {
            "sequence_number": 1,
            "weight_lb": 12.5,
            "length_in": 16,
            "width_in": 12,
            "height_in": 10,
            "package_type": "MIXED SKUS",
            "is_stackable": true,
            "package_count": 1
        }
    ],
    "equipment": [
        {
            "length_ft": 53,
            "protection_level": "Dry",
            "type": "VAN53"
        }
    ],
    "mode": "FTL",
    "service_level": "WFS"
}'
Loading response...
POST/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}/shipments/{shipment}/carrier-booking

Book a carrier for a WFS shipment

Book one of the shipment's rate quotes. The quote's type decides which fields are required. Walmart's answer is recorded on the order: `timeline[0].event_type` is `carrier_booked`, `carrier_booking_rejected`, `carrier_booking_unconfirmed` or `api_error_occurred`. A Walmart refusal answers 422 and a call Walmart did not answer answers 502; an unconfirmed booking answers 200 with `carrier_booking.state` `unconfirmed`.

Required attributes

  • Name
    wfs_inbound_order
    Type
    string
    Description
    The inbound order's uuid 019b2c41-7b1c-80ee-9a51-4d2e8f6b1a90
  • Name
    shipment
    Type
    string
    Description
    Walmart's id for a shipment on the order SHP-8812
  • Name
    rate_quote_uuid
    Type
    string
    Description
    A quote of this shipment 019b2c52-3f10-7c4e-8a1d-2b3c4d5e6f70
  • Name
    single_sku_boxes
    Type
    integer
    Description
    2
  • Name
    mixed_sku_boxes
    Type
    integer
    Description
    0

Optional attributes

  • Name
    business_location_name
    Type
    string
    Description
    Required for `LTL` and `FTL` Main warehouse
  • Name
    pickup_instruction
    Type
    string
    Description
  • Name
    pickup_dates
    Type
    array
    Description
    Preferred pickup dates. Required for `LTL`.
  • Name
    shipper
    Type
    object
    Description
    Who the carrier contacts at pickup. Required for `LTL` and `FTL`.
  • Name
    ship_from
    Type
    object
    Description
    The address the carrier collects from. Required for `LTL` and `FTL`.
  • Name
    operation_hours
    Type
    array
    Description
    The pickup location's opening hours by weekday. Walmart requires them for LTL and FTL bookings: at least three days, including every preferred pickup date (`pickup_dates`; for FTL, every day from `schedule.min_pickup_at` to `schedule.max_pickup_at`); a booking without them is refused with 'At least 3 days of operation hours must be provided, including the preferred pickup date.' Times as `HH:MM:SS`.
  • Name
    declared_value
    Type
    number
    Description
  • Name
    total_pallet_count
    Type
    integer
    Description
    Required for `LTL` 1
  • Name
    pallets
    Type
    array
    Description
    The pallets. Required for `LTL` and `FTL`.
  • Name
    pickup_window
    Type
    string
    Description
    Required for `FTL` 08:00-17:00
  • Name
    schedule
    Type
    object
    Description
    The FTL pickup and delivery window. Required for `FTL`.
  • Name
    equipment_code
    Type
    string
    Description
    Required for `FTL` VAN53
  • Name
    equipment_type
    Type
    string
    Description
    Required for `FTL` Dry
  • Name
    equipment_length_ft
    Type
    number
    Description
    Required for `FTL` 53
  • Name
    protection_level
    Type
    string
    Description
    Required for `FTL` Dry

Request

POST/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}/shipments/{shipment}/carrier-booking
curl -X POST https://YOUR_DOMAIN/api/channels/walmart/wfs/inbound-orders/{wfs-inbound-order}/shipments/{shipment}/carrier-booking \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "rate_quote_uuid": "019b2c52-3f10-7c4e-8a1d-2b3c4d5e6f70",
    "single_sku_boxes": 2,
    "mixed_sku_boxes": 0,
    "business_location_name": "Main warehouse",
    "pickup_instruction": "string",
    "pickup_dates": [
        {
            "date": "2026-10-06",
            "ready_time": "08:00:00",
            "close_time": "17:00:00",
            "priority": 1
        }
    ],
    "shipper": {
        "name": "Ada Lovelace",
        "first_name": "Ada",
        "last_name": "Lovelace",
        "phone": "5550100",
        "email": "ada@example.com"
    },
    "ship_from": {
        "address_line_1": "1 Warehouse Way",
        "address_line_2": "string",
        "city": "Sunnyvale",
        "state_code": "CA",
        "country_code": "US",
        "postal_code": "95126",
        "phone": "5550100",
        "location_name": "Main warehouse"
    },
    "operation_hours": [
        {
            "day_of_week_code": 1,
            "open_time": "09:00:00",
            "close_time": "17:00:00"
        }
    ],
    "declared_value": 1,
    "total_pallet_count": 1,
    "pallets": [
        {
            "sequence_number": 1,
            "weight_lb": 12.5,
            "length_in": 16,
            "width_in": 12,
            "height_in": 10,
            "package_type": "MIXED SKUS",
            "is_stackable": true,
            "package_count": 1
        }
    ],
    "pickup_window": "08:00-17:00",
    "schedule": {
        "min_pickup_at": "2026-10-06T08:00:00Z",
        "max_pickup_at": "2026-10-06T17:00:00Z",
        "min_due_at": "2026-10-08T08:00:00Z",
        "max_due_at": "2026-10-09T17:00:00Z"
    },
    "equipment_code": "VAN53",
    "equipment_type": "Dry",
    "equipment_length_ft": 53,
    "protection_level": "Dry"
}'
Loading response...
DELETE/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}/shipments/{shipment}/carrier-booking

Cancel the carrier booking of a WFS shipment

Cancel the shipment's live booking. Walmart's answer is recorded on the order: `timeline[0].event_type` is `carrier_booking_cancelled`, `carrier_booking_cancellation_rejected` or `api_error_occurred`. A Walmart refusal answers 422 and a call Walmart did not answer answers 502.

Required attributes

  • Name
    wfs_inbound_order
    Type
    string
    Description
    The inbound order's uuid 019b2c41-7b1c-80ee-9a51-4d2e8f6b1a90
  • Name
    shipment
    Type
    string
    Description
    Walmart's id for a shipment on the order SHP-8812

Request

DELETE/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}/shipments/{shipment}/carrier-booking
curl -X DELETE https://YOUR_DOMAIN/api/channels/walmart/wfs/inbound-orders/{wfs-inbound-order}/shipments/{shipment}/carrier-booking \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"
Loading response...
GET/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}/shipments/{shipment}/carrier-label

Download the carrier label of a WFS shipment

Download the carrier label of the shipment's live Parcel booking. The file is returned as Walmart produced it and is not stored.

Required attributes

  • Name
    wfs_inbound_order
    Type
    string
    Description
    The inbound order's uuid 019b2c41-7b1c-80ee-9a51-4d2e8f6b1a90
  • Name
    shipment
    Type
    string
    Description
    Walmart's id for a shipment on the order SHP-8812

Optional attributes

  • Name
    label_size
    Type
    string
    Description
    X4_6

Request

GET/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}/shipments/{shipment}/carrier-label
curl -G https://YOUR_DOMAIN/api/channels/walmart/wfs/inbound-orders/{wfs-inbound-order}/shipments/{shipment}/carrier-label \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"
Loading response...
POST/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}/shipments/{shipment}/carrier-label

Generate the carrier label of a WFS shipment

Ask Walmart to generate the carrier label for a Parcel booking. Walmart generates it asynchronously; fetch it with `GET` on the same path. The outcome is recorded on the order: `timeline[0].event_type` is `carrier_label_generated`, `carrier_label_rejected` or `api_error_occurred`. A Walmart refusal answers 422 and a call Walmart did not answer answers 502.

Required attributes

  • Name
    wfs_inbound_order
    Type
    string
    Description
    The inbound order's uuid 019b2c41-7b1c-80ee-9a51-4d2e8f6b1a90
  • Name
    shipment
    Type
    string
    Description
    Walmart's id for a shipment on the order SHP-8812

Optional attributes

  • Name
    ship_date
    Type
    string
    Description
    When the parcels ship, as `YYYY-MM-DD` or an ISO 8601 timestamp 2026-10-06

Request

POST/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}/shipments/{shipment}/carrier-label
curl -X POST https://YOUR_DOMAIN/api/channels/walmart/wfs/inbound-orders/{wfs-inbound-order}/shipments/{shipment}/carrier-label \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "ship_date": "2026-10-06"
}'
Loading response...
GET/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}/shipments/{shipment}/bill-of-lading

Print the bill of lading of a WFS shipment

Download the bill of lading of the shipment's live LTL booking. The file is returned as Walmart produced it and is not stored.

Required attributes

  • Name
    wfs_inbound_order
    Type
    string
    Description
    The inbound order's uuid 019b2c41-7b1c-80ee-9a51-4d2e8f6b1a90
  • Name
    shipment
    Type
    string
    Description
    Walmart's id for a shipment on the order SHP-8812

Request

GET/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}/shipments/{shipment}/bill-of-lading
curl -G https://YOUR_DOMAIN/api/channels/walmart/wfs/inbound-orders/{wfs-inbound-order}/shipments/{shipment}/bill-of-lading \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"
Loading response...
GET/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}/shipments/{shipment}/carrier-tracking

Read the carrier tracking of a WFS shipment

Walmart's carrier tracking for the shipment's live booking, read in the booking's mode. Nothing is stored.

Required attributes

  • Name
    wfs_inbound_order
    Type
    string
    Description
    The inbound order's uuid 019b2c41-7b1c-80ee-9a51-4d2e8f6b1a90
  • Name
    shipment
    Type
    string
    Description
    Walmart's id for a shipment on the order SHP-8812

Request

GET/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}/shipments/{shipment}/carrier-tracking
curl -G https://YOUR_DOMAIN/api/channels/walmart/wfs/inbound-orders/{wfs-inbound-order}/shipments/{shipment}/carrier-tracking \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"
Loading response...
PUT/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}/shipments/{shipment}/pickup

Reschedule the pickup of a WFS shipment

Ask Walmart to move the pickup of the shipment's live LTL booking. The booked quote is used. The outcome is recorded on the order: `timeline[0].event_type` is `pickup_rescheduled`, `pickup_reschedule_rejected` or `api_error_occurred`. A Walmart refusal answers 422 and a call Walmart did not answer answers 502.

Required attributes

  • Name
    wfs_inbound_order
    Type
    string
    Description
    The inbound order's uuid 019b2c41-7b1c-80ee-9a51-4d2e8f6b1a90
  • Name
    shipment
    Type
    string
    Description
    Walmart's id for a shipment on the order SHP-8812
  • Name
    pickup_dates
    Type
    array<PickupDate>
    Description
    The requested pickup dates, in order of preference
  • Name
    pickup_dates.*.date
    Type
    string
    Description
    `YYYY-MM-DD` 2026-10-06
  • Name
    pickup_dates.*.ready_time
    Type
    string
    Description
    `HH:MM:SS` 08:00:00
  • Name
    pickup_dates.*.close_time
    Type
    string
    Description
    `HH:MM:SS` 17:00:00
  • Name
    contact
    Type
    object
    Description
    Who the carrier contacts at pickup
  • Name
    contact.first_name
    Type
    string
    Description
    Ada
  • Name
    contact.last_name
    Type
    string
    Description
    Lovelace
  • Name
    contact.email
    Type
    string
    Description
    ada@example.com
  • Name
    contact.number
    Type
    string
    Description
    0100

Optional attributes

  • Name
    pickup_dates.*.priority
    Type
    integer
    Description
    Defaults to the date's position in the list, starting at 1 1
  • Name
    contact.secondary_email
    Type
    string
    Description
  • Name
    contact.area_code
    Type
    string
    Description
    555
  • Name
    contact.extension
    Type
    string
    Description
  • Name
    ship_from
    Type
    object
    Description
    A new pickup address, if it changed
  • Name
    carrier
    Type
    string
    Description
    ODFL

Request

PUT/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}/shipments/{shipment}/pickup
curl -X PUT https://YOUR_DOMAIN/api/channels/walmart/wfs/inbound-orders/{wfs-inbound-order}/shipments/{shipment}/pickup \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "pickup_dates": [
        {
            "date": "2026-10-06",
            "ready_time": "08:00:00",
            "close_time": "17:00:00",
            "priority": 1
        }
    ],
    "contact": {
        "first_name": "Ada",
        "last_name": "Lovelace",
        "email": "ada@example.com",
        "secondary_email": "string",
        "area_code": "555",
        "number": "0100",
        "extension": "string"
    },
    "ship_from": {
        "address_line_1": "1 Warehouse Way",
        "address_line_2": "string",
        "city": "Sunnyvale",
        "state_code": "CA",
        "country_code": "US",
        "postal_code": "95126",
        "phone": "5550100",
        "location_name": "Main warehouse"
    },
    "carrier": "ODFL"
}'
Loading response...
POST/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}/shipments/{shipment}/pickup/refresh

Refresh the pickup of a WFS shipment

Read the pickup Walmart scheduled for the shipment's live LTL booking and record it on the order when it changed.

Required attributes

  • Name
    wfs_inbound_order
    Type
    string
    Description
    The inbound order's uuid 019b2c41-7b1c-80ee-9a51-4d2e8f6b1a90
  • Name
    shipment
    Type
    string
    Description
    Walmart's id for a shipment on the order SHP-8812

Request

POST/channels/walmart/wfs/inbound-orders/{wfs_inbound_order}/shipments/{shipment}/pickup/refresh
curl -X POST https://YOUR_DOMAIN/api/channels/walmart/wfs/inbound-orders/{wfs-inbound-order}/shipments/{shipment}/pickup/refresh \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"
Loading response...