Yotpo SMS & Email API
Legacy SMS & Email (SMSBump) marketing API for managing contacts, lists, and campaigns. Yotpo permanently discontinued its SMS and Email products on December 31, 2025; documented here for historical completeness.
Legacy SMS & Email (SMSBump) marketing API for managing contacts, lists, and campaigns. Yotpo permanently discontinued its SMS and Email products on December 31, 2025; documented here for historical completeness.
openapi: 3.0.1
info:
title: Yotpo API
description: >-
Specification of Yotpo's e-commerce retention APIs covering reviews and
user-generated content, loyalty and referrals, SMS, subscriptions (Core
API), and email. Reviews/UGC, SMS, Email, and Core API requests are
authenticated with an app key and an OAuth utoken obtained from the store
secret; the Loyalty & Referrals API is authenticated with x-guid and
x-api-key headers.
termsOfService: https://www.yotpo.com/terms-and-conditions/
contact:
name: Yotpo Support
url: https://support.yotpo.com
version: '1.0'
servers:
- url: https://api.yotpo.com
description: Reviews / UGC, SMS, Email, and Core API
- url: https://loyalty.yotpo.com/api/v2
description: Loyalty & Referrals API
tags:
- name: Authentication
description: OAuth token exchange for app key + secret.
- name: Reviews
description: Reviews and user-generated content.
- name: Loyalty
description: Loyalty and referrals customers, orders, and redemptions.
- name: Subscriptions
description: Core API store sync and webhook subscriptions.
paths:
/oauth/token:
post:
operationId: createAccessToken
tags:
- Authentication
summary: Generate an OAuth access token (utoken).
description: >-
Exchange your app key (store_id) and API secret for a short-lived
utoken using the OAuth2 client-credentials grant. The utoken is passed
on subsequent Reviews/UGC, SMS, Email, and Core API requests.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TokenRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/TokenResponse'
/v1/apps/{app_key}/reviews:
get:
operationId: retrieveAllReviews
tags:
- Reviews
summary: Retrieve all reviews for an app.
description: >-
Retrieve reviews for the store identified by app_key. Limited to 5,000
requests/minute per app key; up to 100 reviews per request (default 10).
parameters:
- name: app_key
in: path
required: true
description: The store app key (store_id).
schema:
type: string
- name: utoken
in: query
required: true
description: OAuth access token obtained from /oauth/token.
schema:
type: string
- name: count
in: query
required: false
description: Number of reviews to return per request (max 100).
schema:
type: integer
default: 10
- name: page
in: query
required: false
schema:
type: integer
default: 1
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ReviewsResponse'
/v1/widget/reviews:
post:
operationId: createReview
tags:
- Reviews
summary: Create a review.
description: >-
Create a review for a product. This is the asynchronous method and is
recommended for general use.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateReviewRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Review'
/products/{app_key}/{product_id}/bottomline:
get:
operationId: getProductBottomLine
tags:
- Reviews
summary: Retrieve product bottom line.
description: >-
Retrieve the aggregated average score and total review count for a
specific product.
parameters:
- name: app_key
in: path
required: true
schema:
type: string
- name: product_id
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/BottomLineResponse'
/core/v3/stores/{store_id}/products:
get:
operationId: retrieveProducts
tags:
- Subscriptions
summary: Retrieve products.
parameters:
- name: store_id
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ProductList'
post:
operationId: createProduct
tags:
- Subscriptions
summary: Create a product.
parameters:
- name: store_id
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Product'
responses:
'201':
description: Created
/core/v3/stores/{store_id}/orders:
post:
operationId: createOrder
tags:
- Subscriptions
summary: Create an order.
parameters:
- name: store_id
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Order'
responses:
'201':
description: Created
/core/v3/stores/{store_id}/customers:
post:
operationId: createOrUpdateCustomer
tags:
- Subscriptions
summary: Create or update a customer.
parameters:
- name: store_id
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Customer'
responses:
'200':
description: OK
/core/v3/stores/{store_id}/webhook_subscriptions:
get:
operationId: retrieveWebhookSubscriptions
tags:
- Subscriptions
summary: Retrieve webhook subscriptions.
parameters:
- name: store_id
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookSubscriptionList'
post:
operationId: createWebhookSubscription
tags:
- Subscriptions
summary: Create a webhook subscription.
parameters:
- name: store_id
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookSubscription'
responses:
'201':
description: Created
/customers:
get:
operationId: getLoyaltyCustomer
tags:
- Loyalty
summary: Fetch a loyalty customer's details.
description: >-
Retrieve a loyalty customer's point balance and details by email.
Authenticated with x-guid and x-api-key headers.
servers:
- url: https://loyalty.yotpo.com/api/v2
parameters:
- name: customer_email
in: query
required: true
schema:
type: string
format: email
security:
- LoyaltyGuid: []
LoyaltyApiKey: []
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/LoyaltyCustomer'
/orders:
post:
operationId: createLoyaltyOrder
tags:
- Loyalty
summary: Record a loyalty order.
description: >-
Record an order made by a customer. Applies the order to all matching
active campaigns and awards the necessary points and/or discounts.
servers:
- url: https://loyalty.yotpo.com/api/v2
security:
- LoyaltyGuid: []
LoyaltyApiKey: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/LoyaltyOrder'
responses:
'200':
description: OK
/redemptions:
post:
operationId: createRedemption
tags:
- Loyalty
summary: Create a redemption.
description: >-
Redeem a customer's points for a particular redemption option. Checks
eligibility and balance, deducts points, generates a coupon code, and
returns it in the response.
servers:
- url: https://loyalty.yotpo.com/api/v2
security:
- LoyaltyGuid: []
LoyaltyApiKey: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RedemptionRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/RedemptionResponse'
/redemption_options:
get:
operationId: listRedemptionOptions
tags:
- Loyalty
summary: List redemption options.
servers:
- url: https://loyalty.yotpo.com/api/v2
security:
- LoyaltyGuid: []
LoyaltyApiKey: []
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/RedemptionOptionList'
components:
securitySchemes:
UToken:
type: apiKey
in: query
name: utoken
description: OAuth access token obtained from POST /oauth/token.
LoyaltyGuid:
type: apiKey
in: header
name: x-guid
description: Loyalty & Referrals account GUID.
LoyaltyApiKey:
type: apiKey
in: header
name: x-api-key
description: Loyalty & Referrals API key.
schemas:
TokenRequest:
type: object
required:
- client_id
- client_secret
- grant_type
properties:
client_id:
type: string
description: The store app key.
client_secret:
type: string
description: The store API secret.
grant_type:
type: string
example: client_credentials
TokenResponse:
type: object
properties:
access_token:
type: string
token_type:
type: string
example: bearer
ReviewsResponse:
type: object
properties:
status:
type: object
response:
type: object
properties:
reviews:
type: array
items:
$ref: '#/components/schemas/Review'
bottomline:
$ref: '#/components/schemas/BottomLine'
Review:
type: object
properties:
id:
type: integer
score:
type: integer
votes_up:
type: integer
votes_down:
type: integer
content:
type: string
title:
type: string
created_at:
type: string
format: date-time
verified_buyer:
type: boolean
CreateReviewRequest:
type: object
required:
- appkey
- product_id
- email
- review_content
- review_score
properties:
appkey:
type: string
product_id:
type: string
domain:
type: string
email:
type: string
format: email
display_name:
type: string
review_content:
type: string
review_title:
type: string
review_score:
type: integer
minimum: 1
maximum: 5
BottomLine:
type: object
properties:
total_review:
type: integer
average_score:
type: number
BottomLineResponse:
type: object
properties:
response:
type: object
properties:
bottomline:
$ref: '#/components/schemas/BottomLine'
Product:
type: object
properties:
external_id:
type: string
name:
type: string
url:
type: string
image_url:
type: string
price:
type: string
ProductList:
type: object
properties:
products:
type: array
items:
$ref: '#/components/schemas/Product'
Order:
type: object
properties:
external_id:
type: string
total_price:
type: number
currency:
type: string
customer:
$ref: '#/components/schemas/Customer'
Customer:
type: object
properties:
external_id:
type: string
email:
type: string
format: email
first_name:
type: string
last_name:
type: string
WebhookSubscription:
type: object
properties:
target_id:
type: string
filter_id:
type: string
event_name:
type: string
WebhookSubscriptionList:
type: object
properties:
webhook_subscriptions:
type: array
items:
$ref: '#/components/schemas/WebhookSubscription'
LoyaltyCustomer:
type: object
properties:
email:
type: string
format: email
first_name:
type: string
last_name:
type: string
points_balance:
type: integer
points_earned:
type: integer
vip_tier_name:
type: string
LoyaltyOrder:
type: object
required:
- customer_email
- total_amount_cents
properties:
customer_email:
type: string
format: email
total_amount_cents:
type: integer
currency_code:
type: string
order_id:
type: string
RedemptionRequest:
type: object
required:
- customer_email
- redemption_option_id
properties:
customer_email:
type: string
format: email
redemption_option_id:
type: integer
RedemptionResponse:
type: object
properties:
coupon_code:
type: string
points_deducted:
type: integer
RedemptionOption:
type: object
properties:
id:
type: integer
name:
type: string
points_cost:
type: integer
RedemptionOptionList:
type: object
properties:
redemption_options:
type: array
items:
$ref: '#/components/schemas/RedemptionOption'