Menu Home / Storefront API Storefront APIs
Build a storefront on Vondera Public REST APIs for catalog, cart, checkout, customers, funnels, and content β 74 endpoints documented from production routes.
This page documents Storefront APIs only (building / customizing shopfronts). For Plugin apps, OAuth, and scopes, use the Developers Portal.
Developers Portal Overview These routes power Vondera storefronts. The same router is mounted twice: authenticate with your merchant API key on /api/public, or let live shop domains resolve the store via host headers on /api/ecommerce.
Base URL https://production.api.vondera.appCopy
Public key mount https://production.api.vondera.app/api/publicCopy
Host-resolved mount https://production.api.vondera.app/api/ecommerceCopy
Response envelope Most JSON endpoints return:
Copy {
"status": 200,
"message": "Success",
"data": {}
}74 endpoints across 12 resources.
Authentication Merchant API key (x-api-key) Open the Merchant Dashboard β Developers / API Key. Copy your public API key (requires a plan with apiAccess). Send it as the x-api-key header on every /api/public request. Never embed the key in public browser bundles β call from your backend or a trusted server. Dashboard path: https://dashboard.vondera.app/dashboard/api
Open API key settings Customer JWT Account routes under /customer require Authorization: Bearer <token> from signup or login. Cart and checkout use userid / sessionId headers for guest sessions.
Useful headers Header Description x-api-keyStore API key β required on /api/public language / localeLocale (default en) sessionIdAnonymous session for cart & analytics useridCart identity (defaults to sessionId) AuthorizationBearer <customer JWT> for account routes x-store-domain / HostStore host β used by /api/ecommerce (checkUrl)
Enums String values accepted by checkout, cart, and theme payloads.
paymentMethod / gatewayType CASHCash on delivery GATEWAYOnline card / payment gateway DEPOSITPartial deposit then remainder COD MANUALMerchant-configured manual payment (requires manualPaymentMethodId) pickupMethod SHIPPINGDeliver to customer address (default) PICKUPCustomer picks up at a store location EMAILDigital / email fulfillment (when enabled) Cart line type PRODUCTStandard product line (default) BUNDLEProduct offer bundle β send bundleId + variants[] GROUP_BUNDLEKit of components β send componentSelections[] Order payment.paymentStatus PENDINGAwaiting payment / COD PAIDFully paid PARTIALDeposit paid, remainder outstanding
Store 12 Bootstrap, shipping geography, builder settings, feeds, and attribution.
Store bootstrap Storefront settings, theme, SEO, features, currency, and checkout flags.
Query Name Type Required Description versionIdstringNo Optional website version preview id
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/store' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'Errors 404 Store not found 400/404 invalid versionId GET /store/shipping-countriesShipping countries List shipping countries for the current storefront market (global market stores).
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/store/shipping-countries' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'Cities / zones City/zone list used for checkout shipping.
Query Name Type Required Description countrystringNo Override market country code
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/store/zones' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'Errors GET /store/shipping-optionsShipping options Available shipping options for a market/country.
Query Name Type Required Description countrystringNo Market country code
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/store/shipping-options' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'GET /store/pickup-locationsPickup locations Active pickup locations for PICKUP checkout.
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/store/pickup-locations' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'Courier sub-zones Courier sub-zones for a city when showCourierZonesInCheckout is enabled.
Query Name Type Required Description cityIdstringYes City / zone id
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/store/subzones' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'Errors 400 when courier zones disabled or invalid city GET /store/builder/settingsBuilder settings Published (or draft) home-builder page sections for the storefront.
Query Name Type Required Description withDraftbooleanNo Include draft when true versionIdstringNo Website version preview id
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/store/builder/settings' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'GET /store/sitemaptext/xml XML sitemap XML sitemap of products and pages for SEO.
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/store/sitemap' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'JSON catalog feed JSON product catalog feed.
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/store/catalog' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'GET /store/catalog.csvtext/csv CSV catalog feed CSV product catalog feed (legacy path).
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/store/catalog.csv' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'Record referral / UTM Record referral / UTM attribution for the browser session.
Headers Name Type Required Description sessionIdstringNo Anonymous session id (also accepted as sessionid)
Body fields Name Type Required Description referrerstringNo β sourcestringNo β mediumstringNo β campaignstringNo β contentstringNo β termstringNo β landingstringNo β
cURL Request body Success response
Copy curl --request POST 'https://production.api.vondera.app/api/public/store/referral' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"referrer":"https://google.com","source":"google","medium":"cpc","campaign":"spring"}'Record storefront visit Analytics visit ping for the storefront session.
Headers Name Type Required Description sessionIdstringNo Anonymous session id
cURL Request body Success response
Copy curl --request POST 'https://production.api.vondera.app/api/public/store/visit' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{}'
Products 12 Catalog listing, PDP lookup, reviews, Q&A, and view tracking.
List products Paginated visible products. Supports search/filters passed through to the catalog DAO / Typesense.
Query Name Type Required Description limitnumberYes Page size pageNonumber|stringNo Page number or cursor token pagenumber|stringNo Alias of pageNo fullDatabooleanNo true for full ProductMapper.toEcommerce cursorModestringNo Cursor pagination mode when enabled categoryIdstringNo β subCategoryIdstringNo β qstringNo Search query (alias: search) sortBystringNo β
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/products' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'Errors 400 validation (missing limit) List products (cursor v2) Cursor-based product list using pageKey.
Query Name Type Required Description limitnumberYes β pageKeystringNo β fullDatabooleanNo β
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/products/v2/' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'Featured products Featured products for home rails.
Query Name Type Required Description fullDatabooleanNo β
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/products/featured' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'GET /products/single/slug/:slugProduct by slug Full product detail by URL slug.
Query Name Type Required Description variantIdstringNo β
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/products/single/slug/{slug}' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'Errors GET /products/single/resolve/:paramResolve product Resolve a product by id or slug in one path param.
Query Name Type Required Description variantIdstringNo β
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/products/single/resolve/{param}' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'Errors Product by id Full product detail by id.
Query Name Type Required Description variantIdstringNo β
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/products/single/{id}' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'Errors Products by ids Batch fetch products by ids (order preserved; missing β null).
Body fields Name Type Required Description idsstring[]Yes β fullDatabooleanNo β
cURL Request body Success response
Copy curl --request POST 'https://production.api.vondera.app/api/public/products/by-ids' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"ids":["Product_abc","Product_def"],"fullData":false}'Errors POST /products/:productId/viewRecord product view Record a product view analytics event.
Headers Name Type Required Description x-event-idstringNo Client event idempotency key
cURL Request body Success response
Copy curl --request POST 'https://production.api.vondera.app/api/public/products/{productId}/view' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{}'Errors POST /products/:productId/reviewSubmit review Submit a product review (images optional as base64).
Body fields Name Type Required Description ratingnumberYes β namestringYes β emailstringYes β reviewstringNo β imagesBase64string[]No β
cURL Request body Success response
Copy curl --request POST 'https://production.api.vondera.app/api/public/products/{productId}/review' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"rating":5,"name":"Sara","email":"sara@example.com","review":"Great quality"}'Errors 400 validation 404 product GET /products/:productId/reviewList reviews Paginated product reviews.
Query Name Type Required Description pageNonumberYes β limitnumberYes β sortstringNo β
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/products/{productId}/review' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'POST /products/:productId/qaAsk a question Submit a product Q&A question.
Body fields Name Type Required Description questionstringYes β namestringYes β emailstringNo β
cURL Request body Success response
Copy curl --request POST 'https://production.api.vondera.app/api/public/products/{productId}/qa' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"question":"Is this waterproof?","name":"Omar","email":"omar@example.com"}'GET /products/:productId/qaList Q&A Paginated product questions & answers.
Query Name Type Required Description pageNonumberYes β limitnumberYes β
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/products/{productId}/qa' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
Categories 2 Visible category tree for storefront navigation.
List categories All visible categories (localized) with subcategories.
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/category' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'Category by id Single category by id.
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/category/single/{id}' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'Errors
Cart 9 Session cart keyed by userid / sessionId headers.
Get cart Current session cart. Empty cart if no userId.
Headers Name Type Required Description useridstringNo Cart identity (defaults to sessionId) sessionIdstringNo β
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/cart' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'Cart count Cart line-item count.
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/cart/count' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'Cart suggestions Cross-sell / cart suggestions for the current cart.
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/cart/suggestions' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'Add to cart Add a PRODUCT, BUNDLE, or GROUP_BUNDLE line.
Body fields Name Type Required Description productIdstringYes β quantitynumberNo Required for PRODUCT (> 0) variantIdstringNo β typePRODUCT|BUNDLE|GROUP_BUNDLENo Default PRODUCT bundleIdstringNo Required for BUNDLE variantsstring[]No Variant ids for BUNDLE lines componentSelectionsobject[]No [{ componentId, variantId }] for GROUP_BUNDLE customizationResponsesobject[]No β
cURL Request body Success response
Copy curl --request POST 'https://production.api.vondera.app/api/public/cart' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"productId":"Product_abc","quantity":1,"variantId":"var_1","type":"PRODUCT"}'Errors 400 invalid productId / quantity / bundle mismatch 404 Product/Bundle not found Update cart line Update quantity / selection for an existing cart line.
Body fields Name Type Required Description productIdstringYes β quantitynumberYes β variantIdstringNo β typePRODUCT|BUNDLE|GROUP_BUNDLENo β variantsstring[]No β bundleIdstringNo β customizationResponsesobject[]No β
cURL Request body Success response
Copy curl --request PUT 'https://production.api.vondera.app/api/public/cart' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"productId":"Product_abc","quantity":2,"variantId":"var_1","type":"PRODUCT"}'Errors Remove cart line Remove one cart line.
Body fields Name Type Required Description productIdstringYes β variantIdstringNo β typePRODUCT|BUNDLE|GROUP_BUNDLENo β variantsstring[]No β bundleIdstringNo β customizationResponsesobject[]No β
cURL Request body Success response
Copy curl --request DELETE 'https://production.api.vondera.app/api/public/cart/item' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"productId":"Product_abc","variantId":"var_1","type":"PRODUCT"}'Clear cart Clear the entire cart for the session user.
cURL Success response
Copy curl --request DELETE 'https://production.api.vondera.app/api/public/cart' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'Record cart view Analytics event when the cart UI is opened.
Headers Name Type Required Description x-event-idstringNo β
Body fields Name Type Required Description eventIdstringNo β
cURL Request body Success response
Copy curl --request POST 'https://production.api.vondera.app/api/public/cart/view' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{}'Funnel abandon cart Record an abandoned funnel checkout cart for recovery.
Body fields Name Type Required Description productIdstringYes β quantitynumberNo β variantIdstringNo β typePRODUCT|BUNDLE|GROUP_BUNDLENo β variantsstring[]No β bundleIdstringNo β componentSelectionsobject[]No β customizationResponsesobject[]No β funnelIdstringNo β funnelLinkIdstringNo β funnelNamestringNo β schemaVersionnumberNo β isVersion2booleanNo β
cURL Request body Success response
Copy curl --request POST 'https://production.api.vondera.app/api/public/cart/funnel-abandon' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"productId":"Product_abc","quantity":1,"funnelLinkId":"summer-offer","funnelId":"fun_1"}'
Orders & Checkout 6 Payment methods, pricing, discount validation, and order creation.
GET /orders/payment-methodsPayment methods Active payment methods for the checkout country.
Query Name Type Required Description shippingCountrystringNo β
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/orders/payment-methods' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'Errors 400 unsupported shipping country POST /orders/discount/validateValidate discount Validate a promo code against cart products.
Body fields Name Type Required Description codestringYes β productsobject[]No Cart lines with id, quantity, β¦ cityIdstringNo β pickupMethodSHIPPING|PICKUPNo β shippingCountrystringNo β shippingOptionIdstringNo β subZoneIdstringNo β gatewayTypeCASH|GATEWAY|DEPOSIT|MANUALNo β gatewayIdstringNo β
cURL Request body Success response
Copy curl --request POST 'https://production.api.vondera.app/api/public/orders/discount/validate' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"code":"SAVE10","products":[{"id":"Product_abc","quantity":1,"variantId":"var_1"}],"gatewayType":"CASH","pickupMethod":"SHIPPING"}'Calculate price Calculate items, shipping, taxes, gateway fees, and discounts.
Body fields Name Type Required Description productsarrayYes β discountCodestringYes May be empty string cityIdstringNo β pickupMethodSHIPPING|PICKUPNo β gatewayTypeCASH|GATEWAY|DEPOSIT|MANUALNo β gatewayIdstringNo β shippingOptionIdstringNo β shippingCountrystringNo β subZoneIdstringNo β skipAutoApplybooleanNo β funnelIdstringNo β funnelLinkIdstringNo β
cURL Request body Success response
Copy curl --request POST 'https://production.api.vondera.app/api/public/orders/price' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"products":[{"id":"Product_abc","quantity":1,"variantId":"var_1","type":"PRODUCT"}],"discountCode":"","cityId":"cairo","pickupMethod":"SHIPPING","gatewayType":"CASH"}'Errors 400 Invalid city / shipping country POST /orders/init-checkoutInit checkout Fire checkout-initiated analytics. Body shape matches /orders/price.
cURL Request body Success response
Copy curl --request POST 'https://production.api.vondera.app/api/public/orders/init-checkout' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"products":[{"id":"Product_abc","quantity":1}],"discountCode":"","pickupMethod":"SHIPPING","gatewayType":"CASH"}'Errors 400 Invalid city / shipping country Create order Create a checkout order. Rate-limited per IP. Captcha may be required for CASH/MANUAL.
Body fields Name Type Required Description namestringYes β phonestringYes β emailstringYes β notesstringYes May be empty string paymentMethodCASH|GATEWAY|DEPOSIT|MANUALYes β discountCodestringYes May be empty string productsarrayYes β otherPhonestringNo β addressstringNo β citystringNo β cityIdstringNo β countryCodestringNo β pickupMethodSHIPPING|PICKUP|EMAILNo β courierSubZoneIdstringNo β subZoneIdstringNo β subZoneNamestringNo β shippingOptionIdstringNo β pickupLocationIdstringNo β shippingCountrystringNo β manualPaymentMethodIdstringNo β receiptImagestringNo β turnstileTokenstringNo Required when store.requireCheckoutCaptcha cloudFlareTokenstringNo Alias of turnstileToken skipAutoApplybooleanNo β funnelIdstringNo β funnelLinkIdstringNo β funnelNamestringNo β templateIdstringNo β
cURL Request body Success response
Copy curl --request POST 'https://production.api.vondera.app/api/public/orders' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"name":"Ahmed Hassan","phone":"01012345678","email":"ahmed@example.com","notes":"","paymentMethod":"CASH","discountCode":"","products":[{"id":"Product_abc","quantity":1,"variantId":"var_1","type":"PRODUCT"}],"address":"12 Nile St","cityId":"cairo","countryCode":"+20","pickupMethod":"SHIPPING"}'Errors 400 validation / captcha / stock / payment method 429 rate limit Get order Fetch an order by id (host-market scoped). Customer PII may be masked.
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/orders/single/{id}' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'Errors
Customer Account 13 Storefront customer auth, profile, orders history, and wishlist. JWT routes need Authorization: Bearer.
Sign up Register a storefront customer. Turnstile may be required.
Body fields Name Type Required Description namestringYes β emailstringYes β passwordstringYes Min 6 characters phonestringYes β addressstringNo β govstringNo β countryCodestringNo β newsLetterEnabledbooleanNo β cloudFlareTokenstringNo β
cURL Request body Success response
Copy curl --request POST 'https://production.api.vondera.app/api/public/customer/signup' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"name":"Sara Ali","email":"sara@example.com","password":"secret12","phone":"01098765432","newsLetterEnabled":true}'Errors 400 invalid email/phone/name/password 400 email/phone already exists 400 captcha failure Log in Customer login. Migrates guest cart into the customer id.
Body fields Name Type Required Description emailstringYes β passwordstringYes β
cURL Request body Success response
Copy curl --request POST 'https://production.api.vondera.app/api/public/customer/login' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"email":"sara@example.com","password":"secret12"}'Errors 401 Invalid Email or Password Current customer Profile for the authenticated customer (password never returned).
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/customer' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'Authorization: Bearer CUSTOMER_JWT' \
--header 'language: en'Errors PUT /customer/updateCustomer JWT Update profile Update profile fields.
Body fields Name Type Required Description namestringNo β emailstringNo β phonestringNo β addressstringNo β govstringNo β countryCodestringNo β
cURL Request body Success response
Copy curl --request PUT 'https://production.api.vondera.app/api/public/customer/update' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'Authorization: Bearer CUSTOMER_JWT' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"name":"Sara Ali","phone":"01098765432","address":"15 Corniche"}'Errors PUT /customer/change-passwordCustomer JWT Change password Change password with current password verification.
Body fields Name Type Required Description currentPasswordstringYes β newPasswordstringYes β
cURL Request body Success response
Copy curl --request PUT 'https://production.api.vondera.app/api/public/customer/change-password' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'Authorization: Bearer CUSTOMER_JWT' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"currentPassword":"secret12","newPassword":"newSecret99"}'Errors 400 wrong current password Forgot password Request password-reset email (always 200 to avoid enumeration).
Body fields Name Type Required Description emailstringYes β
cURL Request body Success response
Copy curl --request POST 'https://production.api.vondera.app/api/public/customer/forget' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"email":"sara@example.com"}'POST /customer/reset-passwordReset password Reset password with the email token.
Body fields Name Type Required Description tokenstringYes β newPasswordstringYes β
cURL Request body Success response
Copy curl --request POST 'https://production.api.vondera.app/api/public/customer/reset-password' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"token":"reset_token","newPassword":"newSecret99"}'Errors 400 invalid/expired token DELETE /customerCustomer JWT Delete account Soft-delete account credentials (clears email/password).
cURL Success response
Copy curl --request DELETE 'https://production.api.vondera.app/api/public/customer' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'Authorization: Bearer CUSTOMER_JWT' \
--header 'language: en'GET /customer/ordersCustomer JWT Customer orders Logged-in customer order history.
Query Name Type Required Description pageNonumberNo β limitnumberNo β
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/customer/orders' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'Authorization: Bearer CUSTOMER_JWT' \
--header 'language: en'GET /customer/wishlistCustomer JWT Wishlist Wishlist products.
Query Name Type Required Description pagenumberNo β limitnumberNo β
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/customer/wishlist' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'Authorization: Bearer CUSTOMER_JWT' \
--header 'language: en'POST /customer/wishlistCustomer JWT Add to wishlist Add a product to the wishlist.
Body fields Name Type Required Description productIdstringYes β
cURL Request body Success response
Copy curl --request POST 'https://production.api.vondera.app/api/public/customer/wishlist' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'Authorization: Bearer CUSTOMER_JWT' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"productId":"Product_abc"}'Errors DELETE /customer/wishlistCustomer JWT Remove from wishlist Remove a product from the wishlist.
Body fields Name Type Required Description productIdstringYes β
cURL Request body Success response
Copy curl --request DELETE 'https://production.api.vondera.app/api/public/customer/wishlist' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'Authorization: Bearer CUSTOMER_JWT' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"productId":"Product_abc"}'Marketing unsubscribe (token) Unsubscribe from marketing using an email token (no session auth).
Body fields Name Type Required Description unSubscribeTokenstringYes β
cURL Request body Success response
Copy curl --request PUT 'https://production.api.vondera.app/api/public/customer/unsubscribe' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"unSubscribeToken":"token_β¦"}'Errors
Custom Pages 2 CMS pages such as policies and about (plan customPagesAccess).
List custom pages List custom CMS pages (localized).
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/custompages' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'GET /custompages/single/:idCustom page by id/slug Single custom page by id or link slug.
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/custompages/single/{id}' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'Errors
Blogs 3 Store blog index and live posts (plan blogs access).
List blogs Ensure default blog and return blogs metadata.
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/blogs' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'List posts Live blog posts (paginated via limit/offset).
Query Name Type Required Description limitnumberNo 1β50, default 20 offsetnumberNo Default 0
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/blogs/posts' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'Post by slug Single live blog post with SEO payload.
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/blogs/posts/{slug}' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'Errors
Funnels 4 Sales funnel pages (plan funnelsAccess). 410 when the plan does not support funnels.
Funnel by link Classic funnel payload by public link id.
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/funnels/{linkId}' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'Errors 410 plan does not support funnels 404 Funnel v2 Funnel v2 payload.
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/funnels/{linkId}/v2' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'Errors Funnel page Rendered funnel page document for storefront hosting.
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/funnels/{linkId}/page' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'Errors GET /funnels/:linkId/bootstrapFunnel bootstrap Checkout bootstrap for a funnel β product, payments, and settings.
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/funnels/{linkId}/bootstrap' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'Errors
Marketing 6 Newsletter subscribe, popup leads, and checkout contact capture.
Subscribe Subscribe an email to the store marketing list (consent required).
Body fields Name Type Required Description emailstringYes β consentbooleanYes β sourcestringNo Default footer phonestringNo β
cURL Request body Success response
Copy curl --request POST 'https://production.api.vondera.app/api/public/marketing/subscribe' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"email":"fan@example.com","consent":true,"source":"footer"}'Errors 400 Invalid email 400 Consent is required PUT /marketing/unsubscribeUnsubscribe Unsubscribe via token (preferred) or email.
Body fields Name Type Required Description emailstringNo β tokenstringNo β
cURL Request body Success response
Copy curl --request PUT 'https://production.api.vondera.app/api/public/marketing/unsubscribe' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"token":"unsub_token"}'GET /marketing/unsubscribe-linktext/html One-click unsubscribe (HTML) Browser / List-Unsubscribe link. Returns HTML, not the JSON envelope.
Query Name Type Required Description tokenstringYes β
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/marketing/unsubscribe-link' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'POST /marketing/unsubscribe-linkOne-click unsubscribe (POST) RFC 8058 one-click List-Unsubscribe POST.
Query Name Type Required Description tokenstringNo β
Body fields Name Type Required Description tokenstringNo β
cURL Request body Success response
Copy curl --request POST 'https://production.api.vondera.app/api/public/marketing/unsubscribe-link' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"token":"unsub_token"}'POST /marketing/checkout-contactCheckout contact Progressive checkout contact capture (blur/debounce β does not create an order).
Body fields Name Type Required Description emailstringNo β phonestringNo β consentbooleanNo β funnelIdstringNo β funnelLinkIdstringNo β funnelNamestringNo β schemaVersionnumberNo β isVersion2booleanNo β
cURL Request body Success response
Copy curl --request POST 'https://production.api.vondera.app/api/public/marketing/checkout-contact' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"email":"shopper@example.com","phone":"01012345678","consent":true}'
Catalog Feeds 3 CSV feeds for Meta, TikTok, and Google Merchant Center.
GET /catalogs/meta-catalog.csvtext/csv Meta catalog CSV Meta / Facebook product catalog CSV feed.
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/catalogs/meta-catalog.csv' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'GET /catalogs/tiktok-catalog.csvtext/csv TikTok catalog CSV TikTok product catalog CSV feed.
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/catalogs/tiktok-catalog.csv' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'GET /catalogs/google-catalog.csvtext/csv Google catalog CSV Google Merchant Center CSV feed.
cURL Success response
Copy curl --request GET 'https://production.api.vondera.app/api/public/catalogs/google-catalog.csv' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
Password Unlock 2 Host-scoped unlock when the storefront has password protection enabled. Mounted at /storefront/*.
Unlock storefront Verify password and set unlock cookie / return token.
Body fields Name Type Required Description passwordstringYes β
cURL Request body Success response
Copy curl --request POST 'https://production.api.vondera.app/api/public/storefront/unlock' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"password":"store-password"}'Errors 400 Password protection is not enabled 401 Incorrect password POST /storefront/unlock/verifyVerify unlock token Verify an unlock token when the storefront host cannot verify HMAC locally.
Body fields Name Type Required Description tokenstringYes β
cURL Request body Success response
Copy curl --request POST 'https://production.api.vondera.app/api/public/storefront/unlock/verify' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"token":"β¦"}'