From zero to a paid order in four calls
You own the customer experience. Villa remains the grocer: catalog, branch price, the bill and fulfilment rules come from Villa's own systems.
Get a partner key
Every call carries your key. It maps to your partner id and order source.
X-Partner-KeySign shoppers in
Shoppers create an account with email and a six-digit code. You send their id token.
Authorization: Bearer …Quote with Villa's calculator
Delivery, coupons and discounts are priced exactly as Villa's storefront bills them.
mutation quoteOrder and share the link
The order returns a payment link that shows the whole checkout and takes the payment.
orderCreate → paymentLinkEverything a partner shop needs
Each surface is live on this host today. Statuses are honest: sandbox means orders are recorded but not fulfilled and payment links take no money.
Catalog Live
What Villa sells online, by category and search, refreshed from Villa's product table every 15 minutes.
Branch prices & stock Live
Prices come from each branch's own price feed, not a list price. Stock comes per branch.
Branches Live
All 41 online branches with location, plus nearest-branch lookup from coordinates.
Basket, quote & orders Sandbox
Baskets and orders are scoped to your key and the shopper. Every total is Villa's calculator.
Payment links Sandbox
A signed 24-hour link that opens the whole checkout. The basket is re-priced before payment is accepted.
MCP for AI agents Live
The same operations as tools for assistants and agents, over Streamable HTTP.
Where things live
| Host / path | What it is |
|---|---|
https://developers.villamarket.ai | This site, the guide, and the API itself: /graphql, /mcp/, /v1/products, /schema.graphql, /health |
https://shop.villamarket.ai | Demo shop built only on this API. Payment links open here: /pay/<token> |
/docs | The integration guide: auth, checkout, payment links, errors, sandbox rules |
Four rules every integration follows
- The quote is the bill. Never sum line prices in your app. Show
grandTotal. - No card data here. Orders carry a payment link; card details never touch this API.
- Shoppers are real sign-ins. The owner of a basket or order is the signed-in shopper, never an id you pass.
- Sandbox until go-live. Orders are recorded but not fulfilled; payment links record payments without moving money.
See it working first
Create an account, fill a basket and pay through a payment link in the demo shop.