Store API
Read your store's offer and analytics data over plain HTTPS. Use it to feed a dashboard, a spreadsheet, a warehouse job, or any integration that is not an AI client.
Everything the MCP server can read is here too — the same eleven capabilities, one endpoint each, the same payloads.
The API is included in every plan, including Free.
Base URL
https://aov-post-purchase.firebaseapp.com/public-api/v1Read resources live under /data.
Four things to know before you write a client
One token, one store. You send an access token as an HTTP Bearer credential. The token both authenticates the caller and selects the store, so no shop id ever appears on a path. A leaked token exposes exactly one store, and only for reading. See Authentication.
Read-only, and that is structural. Every endpoint is a GET. There is no write surface to guard, no idempotency key to manage, and nothing a caller can do to your store's data.
One envelope, always. Success and failure share a shape, so a client parses one thing. See Errors.
Date ranges are capped at 90 days. Ask for more and the call is refused, not silently trimmed. Omit the dates and you get the last 30 days. See Date ranges.
Response envelope
{ "success": true, "data": { "...": "..." } }{ "success": false, "data": null, "error": "Date range cannot exceed 90 days" }The eleven endpoints
All paths are relative to the base URL.
Offers
| Method | Path | Returns |
|---|---|---|
GET | /data/offers | List offers |
GET | /data/offers/by-priority | Offers in display order |
GET | /data/offers/count | Counts per placement and status |
GET | /data/offer/{id} | One offer's setup |
GET | /data/offer/{id}/stages | What that offer sells |
Analytics
| Method | Path | Returns |
|---|---|---|
GET | /data/analytics/summary | Shop-wide roll-up for a range |
GET | /data/analytics/stats | Per-placement rows for a range |
GET | /data/analytics/top | Offers ranked by revenue |
GET | /data/analytics/coverage | Which placements have an active offer |
GET | /data/analytics/lifetime | All-time totals |
Products
| Method | Path | Returns |
|---|---|---|
GET | /data/products/recommendations | Upsell suggestions |
First call
curl -H "Authorization: Bearer $AOV_TOKEN" \
https://aov-post-purchase.firebaseapp.com/public-api/v1/data/offers{
"success": true,
"data": {
"offers": [ "..." ],
"total": 12,
"hasMore": false,
"currency": "USD",
"shopDomain": "acme.myshopify.com"
}
}Full walkthrough: Quickstart.
Working safely
Authorization header, from a secret store, on a server you control.If a token is exposed, rotate it in Settings → AOV MCP → Public API access. The old token stops working immediately.
Related
- Authentication
- MCP server — the same data, for an AI client instead of a script