Storefront API
The buyer-facing API served by the frontend gateway at the store's own domain. Browse, cart, checkout and account endpoints for building a storefront or app — see The layout system and Build a storefront. Browse and layout endpoints are public; account, cart-at-checkout, orders and wishlist need a customer session (Authorization: Bearer <accessToken> from login).
https://<store-domain>Storefront config
Resolve the store the visitor landed on — theme, currency, enabled extensions, logo — and store details. Public.
/api/organizationGet store/organization config
Theme, currency, logo, enabled features, default store. The first call a storefront makes. Public.
{
"name": "Tamimi",
"logo": "https://cdn/.../logo.png",
"currency": {
"name": "Saudi Riyal",
"symbol": "SR"
},
"theme": {
"name": "Fashion",
"slug": "theme-fashion"
},
"defaultStoreId": 7,
"languages": [
"en",
"ar"
],
"config": {
"order": {
"orderTypes": [
"DELIVERY",
"PICKUP"
],
"paymentMethods": [
"CASH",
"ONLINE"
],
"minimumOrderValue": 50
},
"website": {
"primaryColour": "#0a7",
"authProviders": [
"OTP",
"PASSWORD"
],
"isCustomerWishlistEnabled": true
}
}
}/api/storeList enabled stores
/api/serviceable-areaCheck serviceability
| Parameter | Type | Description |
|---|---|---|
address[pincode] | string· query |
/api/slot-availabilityDelivery/pickup slots
Layout & navigation
Merchant-configured page layouts and chrome. Render from each section's value. See The layout system. Public.
/api/layout/homeHomepage layout
/api/layout/categoryCategory page layout
| Parameter | Type | Description |
|---|---|---|
urlrequired | string· query | Category slug. |
/api/layout/productProduct page layout
| Parameter | Type | Description |
|---|---|---|
urlrequired | string· query | Product slug. |
/api/layout/searchSearch results layout
| Parameter | Type | Description |
|---|---|---|
qrequired | string· query |
/api/layout/pageStatic/CMS page layout
| Parameter | Type | Description |
|---|---|---|
urlrequired | string· query |
/api/navHeader navigation
/api/footerLinksFooter links
/api/announcementAnnouncement bar
Catalog browse
Public product discovery. Filter, search, sort and paginate. Price and stock live on storeSpecificData — see the price math.
| Field | Type | Description |
|---|---|---|
id | integerread-only | |
name | stringread-only | |
slug | stringread-only | Use in layout/PDP URLs. |
images | string[]read-only | Image URLs (extra sizes in imagesExtra). |
storeSpecificData | object[]read-only | Per store: mrp (string), discount (% string), stock (int), unlimitedStock. |
variants | object[]read-only | Each carries its own storeSpecificData + images. |
hasVariants | 0 | 1read-only | |
averageRating / totalReviews | numberread-only | |
brand / primaryCategoryId | object / intread-only |
/api/productSearch / list products
| Parameter | Type | Description |
|---|---|---|
q | string· query | Search query. |
category | string· query | Category slug. |
brand | string· query | Brand slug. |
page | integer· query | |
limit | integer· query |
curl "https://<store-domain>/api/product?q=rice&category=staples&limit=20"{
"count": 240,
"limit": 20,
"offset": 0,
"product": [
{
"id": 10231,
"name": "Tata Salt 1kg",
"slug": "tata-salt-1kg",
"images": [
"https://…/p1.jpg"
],
"storeSpecificData": [
{
"storeId": "<store-id>",
"mrp": "28.00",
"discount": "10",
"stock": 240
}
],
"hasVariants": 0,
"averageRating": 4.4
}
]
}/api/categoryCategory tree
/api/brandBrand list
/api/store-product/{id}Products at a store
| Parameter | Type | Description |
|---|---|---|
idrequired | integer· path |
/api/product/{id}/substitutesSubstitute products
| Parameter | Type | Description |
|---|---|---|
idrequired | integer· path |
Cart
A local-first cart synced to the server. Items use id (variant id), q (quantity as string), t (timestamp ms). Set q: "0" to remove. Works for guests.
/api/cartGet cart
Render line items from `items`, the summary from `amounts`, and the headline from `youPay` / `savings`.
{
"items": [
{
"id": "88120",
"q": 2,
"mrp": 28,
"discount": 10,
"product": {
"name": "Tata Salt 1kg"
}
}
],
"youPay": 50.4,
"savings": 5.6,
"amounts": {
"orderAmount": 50.4,
"totalMRP": 56,
"totalDiscount": 5.6,
"shippingAmount": 0,
"totalCouponDiscount": 0
},
"isServiceable": true,
"storeId": "<store-id>",
"orderType": "DELIVERY"
}/api/cartAdd / update items
{
"cart": {
"items": [
{
"id": "88120",
"q": "2",
"t": 1750000000000
}
]
},
"orderType": "DELIVERY",
"storeId": "<store-id>"
}/api/cartClear cart
Checkout & coupons
Calculate totals, slots and payment options, then validate coupons. Guest or authenticated.
/api/checkoutCheckout summary
/api/checkoutCalculate checkout
Returns the recomputed `cart` (with `amounts`), available `slot`s keyed by date, `paymentMethods`, and per-coupon results.
{
"cart": {
"items": [
{
"id": "88120",
"q": "2"
}
],
"orderType": "DELIVERY",
"storeId": "<store-id>"
},
"addressId": "addr-123",
"preferredSlotId": 31,
"paymentMethod": "ONLINE",
"couponCodes": [
"SAVE20"
]
}{
"cart": {
"youPay": 70.4,
"amounts": {
"shippingAmount": 20,
"totalCouponDiscount": 0
}
},
"slot": {
"2026-06-23": [
{
"id": 31,
"text": "9–10 AM",
"available": true,
"charge": 0
}
]
},
"paymentMethods": [
"CASH",
"ONLINE"
],
"couponDiscounts": [
{
"coupon": {
"couponCode": "SAVE20"
},
"applied": false,
"error": "Min order not met"
}
]
}/api/apply-couponValidate a coupon
| Parameter | Type | Description |
|---|---|---|
coderequired | string· query |
/api/couponList claimable coupons
Account & auth
Customer authentication and profile. login/register/customer-verification return an accessToken you send as Authorization: Bearer <accessToken> on authenticated calls.
/api/loginLog in
{
"username": "asha@example.com",
"password": "••••••"
}{
"accessToken": "eyJ…",
"customer": {
"id": 7781,
"email": "asha@example.com"
}
}/api/registerRegister
{
"name": "Asha",
"email": "asha@example.com",
"phone": "9876543210",
"password": "••••••"
}/api/otpSend OTP
{
"phone": "9876543210"
}/api/customer-verificationVerify OTP
{
"phone": "9876543210",
"code": "123456"
}/api/logoutLog out
/api/meGet profile
/api/meUpdate profile
/api/passwordChange password
Addresses
The signed-in customer's saved delivery addresses.
/api/addressList addresses
/api/addressAdd address
{
"address": "12 MG Road",
"city": "Bengaluru",
"pincode": "560001",
"latitude": 12.9758,
"longitude": 77.6096
}/api/address/{id}Update address
| Parameter | Type | Description |
|---|---|---|
idrequired | integer· path |
/api/address/{id}Delete address
| Parameter | Type | Description |
|---|---|---|
idrequired | integer· path |
Orders
Place and track the signed-in customer's own orders.
/api/orderPlace an order
/api/orderOrder history
/api/order/{id}Order details
| Parameter | Type | Description |
|---|---|---|
idrequired | integer· path |
/api/order/{id}Cancel order
| Parameter | Type | Description |
|---|---|---|
idrequired | integer· path |
/api/order/{id}/paymentInitiate / retry payment
| Parameter | Type | Description |
|---|---|---|
idrequired | integer· path |
/api/invoice/{id}Invoice
| Parameter | Type | Description |
|---|---|---|
idrequired | integer· path |
/api/trackTrack delivery
| Parameter | Type | Description |
|---|---|---|
orderIdrequired | string· query |
Wishlist
Saved products for the signed-in customer.
/api/wish-listList wishlists
/api/wish-list/default/productAdd to default wishlist
{
"productId": 10231
}/api/wish-list/default/productRemove from default wishlist
{
"productId": 10231
}