Reference
Storefront API
The app proxy endpoints your theme can call.
The storefront widgets talk to the app through Shopify's app proxy. Requests leave from your own domain and arrive HMAC-signed, so these endpoints are available to your theme's own JavaScript too.
Base path on your store:
https://<your-store>/apps/wysync/api/...
The proxy is signed by Shopify. There is no API key to manage and no way to authenticate as a specific customer — these endpoints serve catalog and fitment data only, never customer data.
Vehicle cascade#
GET /apps/wysync/api/ymms/years
→ { "years": [2026, 2025, 2024, ...] }
GET /apps/wysync/api/ymms/makes?year=2024
→ { "makes": ["Acura", "Alfa Romeo", "Audi", ...] }
GET /apps/wysync/api/ymms/models?year=2024&make=Ford
→ { "models": ["Bronco", "Escape", "F-150", ...] }
GET /apps/wysync/api/ymms/submodels?year=2024&make=Ford&model=F-150
→ { "submodels": ["Lariat", "Platinum", "Raptor", "XL", "XLT"] }
GET /apps/wysync/api/ymms/resolve?year=2024&make=Ford&model=F-150&submodel=Lariat
→ { "vehicle_id": 36968, "label": "2024 Ford F-150 Lariat" }
Products in a collection#
GET /apps/wysync/api/collections/:handle/products
?vehicle_id=36968
&page=1&per_page=24
&sort=best_match
&filters[spec_num_lift_height][min]=4
&filters[stock]=in_stock
Returns products, the total, facet counts for the current result set, and whether the fitment filter was applied. sort accepts best_match, price_asc, price_desc, title_asc.
Search and suggestions#
GET /apps/wysync/api/search?q=f150+lift+kit&vehicle_id=36968
GET /apps/wysync/api/suggest?q=f15
Search responses include a detected_vehicle when one was found in the query, and a rescue object when the zero-result ladder substituted results.
Fitment for one product#
GET /apps/wysync/api/products/:id/fits?vehicle_id=36968
→ {
"verdict": "fits",
"tier": "stock",
"sources": ["vendor_feed", "editor"],
"note": "Not with factory tow package",
"message": "This kit fits your 2024 Ford F-150 Lariat"
}
verdict is one of fits, does_not_fit, unconfirmed. tier is present only when spec matching produced the answer.
Vehicle specs#
GET /apps/wysync/api/vehicles/:id/specs
Returns the vehicle's wheel specs — bolt pattern, hub bore and envelopes. Requires the Fitment Data add-on — without it, this endpoint returns 404, because those specs are the paid entitlement.
Rate limiting and caching#
Endpoints are rate-limited per shop and cached in Redis. If you build something custom on top, cache client-side too and avoid firing a request per keystroke without debouncing — suggest is already debounced by our own widget.
They exist so your theme can do something we didn't anticipate. Shapes may gain fields; they won't lose them without a note in the changelog. If you're depending on one heavily, tell us so we know it matters.
Support is answered by the people who wrote this code — not a ticket queue.