Everything you need before your first Core API call.
Welcome to the Yotpo API (V3)
Yotpo API V3 syncs your store's activity to Yotpo (your product catalog, customers, orders and fulfillments) and serves your reviews and loyalty data back to your storefront.
Base URLs
| Endpoints | Base URL | Token |
|---|---|---|
| Store sync: products, orders, customers, webhooks | https://api.yotpo.com/core/v3/stores/{store_id} | Access token |
| Reviews storefront: reviews, ratings and bottomlines for shoppers | https://api-cdn.yotpo.com/v3/storefront | None (public) |
| Loyalty: product points, VIP tiers and reward instances | https://storefront.yotpo.com/loyalty, https://api.yotpo.com/loyalty, https://loyalty.yotpo.com (see each endpoint) | Depends on the endpoint |
Your store ID is part of every request path. Find it in your Yotpo admin; see App key vs. Store ID.
Authentication
Exchange your store's secret for an access token, then send it on every request in the X-Yotpo-Token header:
curl -X POST "https://api.yotpo.com/core/v3/stores/YOUR_STORE_ID/access_tokens" \
-H "Content-Type: application/json" \
-d '{ "secret": "YOUR_SECRET" }'Storefront endpoints need no token, so you can call them from browser code. Full details in About authentication.
Rate limits
The limit is 5 requests per second per store, across all endpoints. Every response includes RateLimit-Remaining and RateLimit-Reset (seconds until the window resets) so you can throttle proactively; exceeding the limit returns 429 Too Many Requests with a Retry-After header. Wait that many seconds and retry. See Rate limiting for retry strategies and bulk-sync patterns.
Responses and errors
The API accepts and returns JSON. Most errors use this shape:
{
"errors": [
{
"message": "external_id must be supplied"
}
]
}Authentication failures (401 plain text, 403) and 429 use different bodies. As a rule: 4xx means fix your request before retrying, 401 means get a new token and retry once, 429 means wait and retry, 5xx means retry with exponential backoff. See Errors for every status code and body, and Idempotency for retrying creates safely with external_id.
What you can do
- Products — sync your catalog, including variants and collections
- Customers — create and update customer records (create-or-update semantics, safe to re-run)
- Orders — sync purchases, the trigger for review requests and purchase-based flows
- Order Fulfillments — mark orders shipped
- Aggregated Order Info — send order data in bulk in a single call
- Webhooks — get notified of events instead of polling
- Reviews storefront — show reviews, star ratings and review media on your storefront
- Loyalty — show points per product, read VIP tiers and reward instances
Other Yotpo APIs on this site
- Reviews API (V1): review moderation, exports, Q&A, Visual UGC and the other Reviews and Visual UGC features
- Loyalty API (V2): customers, points, redemptions and referrals
- App partners: building a public app for Yotpo merchants
- Core API V1 (legacy): the older store sync API; new integrations should use V3
Next steps
- Start from What you can build: one path per integration (orders, catalog, customers, webhooks, migrating from V1)
- Follow the Quickstart to make your first call
- Try the step-by-step Recipes — authenticate, sync your store, set up webhooks
- Connect Claude or another AI client to Yotpo's MCP servers
- Track changes on the Changelog
