Skip to content
merran
GitHubInstall

Merran documentation API & integrations

Buy this at Walmart for a thing on the list

PUT
/api/stores/walmart/products/{itemId}
curl --request PUT \
--url http://localhost:3000/api/stores/walmart/products/0199e8b0-5a10-7a01-8b00-00000000001d \
--header 'Content-Type: application/json' \
--cookie merran.session_token=<merran.session_token> \
--data '{ "product": { "id": "10450114", "upc": null, "name": "Great Value 2% Reduced Fat Milk, Gallon, 128 fl oz", "brand": "Great Value", "size": "128 fl oz", "image": "https://i5.walmartimages.com/seo/milk.jpeg", "price": 327, "salePrice": null, "saleEnds": null, "currency": "USD", "aisle": null, "inStock": true, "url": "https://www.walmart.com/ip/10450114" } }'

A product someone picked from Walmart, as the extension read it: kept for the thing’s food from now on, and never replaced by Merran’s picks. With an API key, it needs the list: write permission.

itemId
required
string

Example

0199e8b0-5a10-7a01-8b00-00000000001d
Media typeapplication/json
object
product
required
object
id
required
string
/^[0-9A-Za-z]{1,64}$/
upc
required
string | null
<= 20 characters
name
required
string
>= 1 characters <= 300 characters
brand
required
string | null
<= 120 characters
size
required
string | null
<= 60 characters
image
required
string | null
<= 1000 characters /^https:\/\//
price
required
integer | null
<= 10000000
salePrice
required
integer | null
<= 10000000
saleEnds
required

Walmart’s pages don’t say, so the extension sends null.

string | null format: date
currency
required
string
Allowed values: USD
aisle
required
string | null
<= 60 characters
inStock
required
boolean
url
required
string | null
<= 1000 characters /^https:\/\/www\.walmart\.com\//

Example

{
"id": "10450114",
"upc": null,
"name": "Great Value 2% Reduced Fat Milk, Gallon, 128 fl oz",
"brand": "Great Value",
"size": "128 fl oz",
"image": "https://i5.walmartimages.com/seo/milk.jpeg",
"price": 327,
"salePrice": null,
"saleEnds": null,
"currency": "USD",
"aisle": null,
"inStock": true,
"url": "https://www.walmart.com/ip/10450114"
}

Example

{
"product": {
"id": "10450114",
"upc": null,
"name": "Great Value 2% Reduced Fat Milk, Gallon, 128 fl oz",
"brand": "Great Value",
"size": "128 fl oz",
"image": "https://i5.walmartimages.com/seo/milk.jpeg",
"price": 327,
"salePrice": null,
"saleEnds": null,
"currency": "USD",
"aisle": null,
"inStock": true,
"url": "https://www.walmart.com/ip/10450114"
}
}

Kept, and the line as it is.

Media typeapplication/json
object
itemId
required
string
name
required
string
amount
required
string
product
required
Any of:
object
id
required
string
upc
required
string | null
name
required
string
brand
required
string | null
size
required
string | null
image
required
string | null
price
required

In the currency’s smallest unit: cents.

integer | null
salePrice
required
integer | null
saleEnds
required

The sale’s last day.

string | null
currency
required
string
aisle
required
string | null
inStock
required
boolean
url
required
string | null
suggested
required

Merran’s pick, not one the household chose.

boolean
packages
required
integer
sure
required

How many is worked out from the product’s size, not a guess.

boolean
sent
required

Sent to the cart last time.

boolean
sale
required

Its sale today, if it’s on one.

object
verdict
required

How good a sale is, against what the product usually costs: the lowest in a while, a normal sale, or barely off (under a tenth).

string
Allowed values: lowest sale small
usual
required

What it usually costs, in cents: its most common price over 90 days, else its regular price.

integer | null

Example

{
"itemId": "0199e8b0-5a10-7a01-8b00-00000000001d",
"name": "milk",
"amount": "1 gallon",
"product": {
"id": "0001111041700",
"upc": "0001111041700",
"name": "Kroger 2% Reduced Fat Milk",
"brand": "Kroger",
"size": "1 gal",
"image": "https://www.kroger.com/product/images/medium/front/0001111041700",
"price": 349,
"salePrice": 299,
"saleEnds": "2026-10-21",
"currency": "USD",
"aisle": "Dairy",
"inStock": true,
"url": "https://www.frysfood.com/p/milk/0001111041700"
},
"suggested": true,
"packages": 1,
"sure": true,
"sent": false,
"sale": {
"verdict": "sale",
"usual": 349
}
}

Not signed in.

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
fields
object
key
additional properties
string

Example

{
"error": {
"code": "not_found",
"message": "There's nothing here.",
"fields": {
"name": "Give it a name."
}
}
}

Not allowed.

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
fields
object
key
additional properties
string

Example

{
"error": {
"code": "not_found",
"message": "There's nothing here.",
"fields": {
"name": "Give it a name."
}
}
}

Not on the list.

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
fields
object
key
additional properties
string

Example

{
"error": {
"code": "not_found",
"message": "There's nothing here.",
"fields": {
"name": "Give it a name."
}
}
}

Walmart isn’t turned on on this server.

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
fields
object
key
additional properties
string

Example

{
"error": {
"code": "not_found",
"message": "There's nothing here.",
"fields": {
"name": "Give it a name."
}
}
}

© 2026 Kyle Johnson. Documentation: CC BY 4.0. Merran: AGPL-3.0-or-later.