Paste any product link, get a live price. Create a checkout and Harbor builds the real cart at the store, applies the user's limits to the real total, and tells your agent exactly what to do next.
curl https://www.useharbor.io/v1/offers \ -H "Authorization: Bearer $HARBOR_KEY" \ -H "content-type: application/json" \ -d '{"url":"https://allbirds.com/products/womens-dasher-nz-blizzard-deep-navy"}'
{
"merchant_id": "allbirds",
"title": "Women's Dasher NZ - Blizzard/Deep Navy",
"price": { "amount": 14000, "currency": "USD" },
"availability": "in_stock",
"item_ref": "gid://shopify/ProductVariant/41271218896976",
"expires_at": "…15 minutes from now"
}
A real response from a real store. Try it yourself on the home page, no key needed.
Shopify, BigCommerce and Wix stores answer through their own agent checkout, with their real shipping and tax.
Target, Best Buy and The Home Depot run through Harbor for Chrome, in the user's own account.
WooCommerce, Magento and custom stores, coming soon. Same endpoints, same statuses.
When a checkout can't finish on its own, it says why and who has to act, in a field your code can switch on.
confirm: over the user's limit or the price moved. Show them the link.user_input: the store needs an address, or sent a code.redirect_to_merchant: one tap on the store's own checkout page.on_device: the user's browser is preparing the order.{
"status": "requires_user_action",
"requires_user_confirmation": true,
"next_action": {
"type": "confirm",
"url": "https://www.useharbor.io/confirm/chk_…",
"description": "The price changed since the offer; the user must confirm the new total."
}
}
Rules are checked against the store's final number, with shipping and tax.
If the price moved since the offer, the user confirms the new one.
Nothing is placed over what they allowed, per order or per day.
At major retailers, Place order is always the user's.