Developers
Connect Boutora to your existing tools.
A versioned REST API, signed outgoing webhooks and an MCP server for AI assistants. The same tokens, the same business rules and the same per-store isolation.
REST API /api/v1
Read and update products, inventory, orders, customers and webhook endpoints. Integer amounts in the smallest unit, ISO 8601 UTC dates, CORS closed: the API is built for your servers.
Resources
GET/products, /products/{id}catalog:readPOST, PATCH/products, /products/{id}catalog:writePOST/inventory/adjustmentsinventory:writeGET/orders, /orders/{id}orders:readPOST/orders/{id}/transitionsorders:writeGET/customers, /customers/{id}customers:readGET, POST, DELETE/webhooks, /webhooks/{id}webhooks:write
Pagination with ?limit=1..100 and ?cursor=, stable sorting from newest to oldest. Writes run exactly the same business rules as the merchant dashboard: plan quotas, stock never negative, controlled order transitions, audit log.
TOKEN=axi_live_…
BASE=https://16-192-144-250.nip.io/api/v1
curl -s "$BASE/orders?status=NEW,CONFIRMED" \
-H "Authorization: Bearer $TOKEN"
curl -s -X POST "$BASE/products" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"name":"Cold brew 1 L","price":1290}'Every response includes Axi-Api-Version and X-Request-Id.
Bearer token, store inferred
Authorization: Bearer axi_live_… The store comes from the token: no parameter lets you target another one.
Effective scope
Token scopes, intersected with your plan and the creator's role, recomputed on every request.
Idempotency required on POST
Idempotency-Key kept for 24 h: the same request replays the stored response instead of running twice.
RFC 9457 errors
application/problem+json with a stable code, the required scope and a request_id to share with support.
| Plan | REST API | Webhooks |
|---|---|---|
| Starter | Not included | Not included |
| Business | Read-only (GET) | 2 endpoints |
| Scale | Read and write | 10 endpoints |
| Enterprise | Read and write | Unlimited |
Signed outgoing webhooks
Boutora calls your server on every event. Minimal payload, HMAC signature, retries for up to 24 hours, and an anti-SSRF check before every delivery.
Events
- Orders
order.createdorder.updatedorder.status_changedorder.paidorder.refundedorder.cancelled- Catalog
product.createdproduct.updatedproduct.deletedinventory.updated- Customers and after-sales
customer.createdcustomer.updatedreturn.createdreturn.status_changedgiftcard.issued- Service
app.ping
Axi-Event: order.created
Axi-Webhook-Id: evt_3f2a…
Axi-Signature: t=1760184000,v1=5f2b…
v1 = hex(HMAC-SHA256(secret, t + "." + raw_body))- Respond with a 2xx status within 10 seconds and process the event in the background.
- Retries at 1 min, 5 min, 30 min, 2 h, 6 h, 12 h, then 24 h.
- Deduplicate on Axi-Webhook-Id: delivery is guaranteed at least once.
- Secret rotation: two signatures sent for 24 hours.
- HTTPS only; private addresses and internal hostnames are refused.
44 MCP tools to run a store.
Every tool checks the token's permissions and the plan's limits, and only ever sees one store. Every change is written to the audit log.
Store
- Read
get_store_overviewIdentity, plan, currency and key figures: sales today, over 7 and 30 days, average order value, orders to process, best sellers.
- Read
list_webhook_deliveriesOutgoing webhook deliveries: status, attempts, HTTP code, error; filter by endpoint, status, event.
- Read
list_saved_sectionsSaved theme sections: name, type, compatible pages, usage, plan limit.
- Read
get_tax_settingsTax settings: VAT collected or not, tax-inclusive or exclusive, regime, tax identity, rates by country and category, issued invoices.
Catalog
- Read
search_productsSearch by text, status, tag or collection, with pagination.
- Read
get_productFull product record: variants, options, add-ons, stock, collections.
- Write
create_productCreates a product, as a draft by default, within the plan's limit.
- Write
update_productTitle, description, price, sale price, status, tags, collections.
- Write
update_variant_price_stockPrice and stock level of a variant, with history.
- Read
list_collectionsManual and automated collections with their product count.
- Write
add_products_to_collectionAdds products to a manual collection.
- Read
get_catalog_sync_statusWhatsApp / Meta catalog: feed URLs, sync status, items rejected by Meta and why.
- Write
trigger_catalog_syncStarts a full sync of the WhatsApp catalog (at most 6 per hour).
- Write
set_metafieldSets or clears a custom field (defined in Boutora) on a product, variant or collection; value validated by type.
- Read
list_product_filesFiles sold with a digital product: name, size, type, version. Never a storage key or link.
Inventory
- Write
adjust_inventoryStock in or out with a reason, never below zero.
- Read
list_low_stockOut-of-stock and low-stock items, most urgent first.
- Read
list_locationsWarehouses, shops and pickup points: role, pickup availability, number of items held.
- Read
get_inventory_levelsStock per location and total stock for each tracked item, flagging discrepancies and oversells.
- Write
transfer_stockMoves units from one location to another (total stock unchanged); confirmation required above 50 units.
Orders
- Read
list_ordersOrders filtered by status, payment, period or reference.
- Read
get_orderDetails, payment, history and possible next statuses.
- Write
update_order_statusMoves an order forward through the Boutora lifecycle (stock and customer updated).
- Write
add_order_noteInternal note in the history, never visible to the customer.
- Read
list_digital_downloadsDownload access for digital products: downloads used, limit, expiry, last download. Never a link or token.
- Write
create_shipmentCreates a shipment, even a partial one, with an in-house courier or a carrier, plus the handover code to give the shopper.
- Write
update_shipment_statusMoves a shipment forward through the allowed transitions only; a shipment that has left can't be cancelled.
Customers
- Read
list_customersCustomers with their orders, amount spent and last visit.
- Read
get_customerContact details, WhatsApp consent, loyalty and history.
Marketing
- Write
create_discount_codeDated promo code: percentage, fixed amount or free delivery.
- Read
list_discount_codesPromo codes, validity and number of uses.
- Read
list_automatic_discountsAutomatic discounts (bundles, buy 2 get 1 free, tiers), with a one-sentence summary and status.
- Write
create_automatic_discountCreates an automatic discount; confirmation required above 50%, above the average order value or for a half-price bundle.
- Write
set_automatic_discount_activeTurns an automatic discount on or off.
- Read
list_blog_postsBlog posts: status (scheduled and due = published), date, category, tags, public URL.
- Write
create_blog_postCreates a post DRAFT (never published) in limited Markdown, without images; subject to the plan's post quota.
Gift cards
- Read
list_gift_cardsGift cards, balance and status; only the last 4 characters of the code.
- Write
issue_gift_cardIssues a gift card (confirmation always required); the code is never returned to the assistant.
- Write
grant_store_creditAdds store credit to a customer with a reason (confirmation always required, also needs customers:read).
Returns
- Read
list_returnsReturn requests by status, with the shopper's text kept separate.
- Read
get_returnReturn details: items, reason, amounts, history, next statuses.
- Write
update_return_statusApproves, rejects (with a reason), cancels, receives or resolves a return according to its lifecycle.
Analytics
- Read
sales_reportSales by day, week or product, compared with the previous period.
- Read
pos_daily_reportToday's in-store sales: count, revenue, payment methods, expected and counted cash, offline price differences.
Make a request, the assistant carries it out.
The assistant reads your Boutora store data, proposes actions, then carries them out only within the permissions you have granted.
“Which products are out of stock?”
A list of sold-out items, set against this month's sales.
“Create a 10% promo code for this weekend.”
Code created with its time window and usage limit, plus a ready-to-send message.
“Summarize this week's sales.”
Revenue trend, average order value and the orders to prepare first.
“Move order BT-7K3P9Q to “preparing”.”
Transition applied by the state machine; the customer is notified.
Illustrative answers: wording varies from one assistant to another.
Compatible with the assistants you already use.
Server address: 16-192-144-250.nip.io/api/mcp.
Claude.ai
Custom connector, one-click sign-in (OAuth 2.1 + PKCE)
From Business
ChatGPT
Developer mode, MCP connector with OAuth
From Business
Claude Desktop and Claude Code
API token, one command to paste
All plans
Cursor, VS Code, Windsurf
mcp.json file with your token
All plans
Your agents and automations
Any HTTP MCP client: n8n, Make, in-house scripts
All plans
A public storefront that AI can read.
Every published store can open its catalog to assistants: they find products, check availability and delivery, then prepare a cart that the shopper confirms themselves.
get_store_infoOverview, opening hours, WhatsApp contact, delivery, payments and terms.
search_catalogProducts for sale, current prices and availability.
get_productPublic product page: variants, add-ons, photos.
check_availabilityChecks that a cart can be ordered right now.
get_delivery_optionsDelivery zones and fees, pickup time slots.
create_checkout_linkPrepares a cart: the shopper opens the link and confirms the order themselves.
POST /api/mcp/store/{slug}
GET /s/{slug}/llms.txtAccess without authentication, rate-limited by IP address and can be disabled at any time. No customer data, orders or payments are exposed. For more information, see the artificial intelligence page.
An App Store to extend your store.
Merchants install apps from their dashboard with clear permissions. Developers build, test and publish their own apps and make them available to every store.
One-click install
Requested permissions are shown before installation; apps can be uninstalled at any time.
Developer workspace
App creation, OAuth credentials, test installs on your own store and review before publishing.
Embedded apps
Your interface is displayed inside the merchant dashboard, with a session token verified server-side.
Access under your control.
The same rules as for your team: each access is limited to what is necessary.
Per-store API tokens
Shown only once, stored hashed, with expiry, rotation and instant revocation.
OAuth 2.1 for one-click sign-in
PKCE required, one-hour tokens renewed by rotation, a Boutora consent screen.
Strict isolation
Each access is tied to a single store. Your plan and your role limit what it can do.
Logs and quotas
Every call is logged for 30 days; per-minute and per-day quotas protect your store.
AI connector included in every plan
- Starter
- Read and write, 3 tokens
- Business
- Full, OAuth, 10 tokens
- Scale
- Full, unlimited tokens
- Enterprise
- Full, custom quotas
Permissions
- Store information
store:read - Read the catalog
catalog:read - Edit the catalog
catalog:write - Adjust inventory
inventory:write - Read orders
orders:read - Process orders
orders:write - Customer data
customers:read - Sales statistics
analytics:read - Promo codes
marketing:write - Gift cards and store credit
giftcards:write - Content
content:write - Webhooks
webhooks:write - Store theme
theme:write
Frequently asked questions
The full reference (tools, OAuth, examples, error codes) comes with your account.
What is the difference between the REST API and the MCP server?
Which plans include REST API access?
How do I verify a webhook signature?
What is MCP?
Can an assistant place an order on a customer's behalf?
Is my customer data protected?
Test the integration with your own store.
Create a token from the AI Connectors page, or connect Claude.ai in one click from the Business plan.