Endpoints
Reviews
Returns a list of Reviews for the requested store
A limit on the number of items returned. Between 1 and 100. Default 25.
25
The URL-encoded JSON object representing the cursor for the next page of results.
The sort order of the reviews. Format: '(date|rating) (asc|desc)'. Default 'date desc'
date desc
The moderation status of the review.
approved
Possible values: GET /enterprise/reviews HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Accept: */*
{
"reviews": [
{
"subscriberId": "123e4567-e89b-12d3-a456-426614174000",
"reviewId": "123e4567-e89b-12d3-a456-426614174000",
"productId": "shopify-123456789",
"attributesWithRating": [
{
"minLabel": "Too Small",
"midLabel": "Just Right",
"maxLabel": "Too Big",
"title": "Sizing",
"type": "centered-range",
"value": 1
}
],
"body": "Great quality! Great price! Would buy again!",
"containsProfanity": true,
"dateCreated": "2025-07-11T05:09:34.561Z",
"helpfulCount": 1,
"isRecommended": true,
"media": [
{
"streamId": "123e4567-e89b-12d3-a456-426614174000",
"fullSizeUrl": "https://example.com",
"largeUrl": "https://example.com",
"thumbnailUrl": "https://example.com",
"type": "image",
"isHidden": true
}
],
"productAttributes": [
{
"title": "Pros",
"type": "drop-down",
"value": "Powerful"
}
],
"productName": "MacBook Pro",
"order": {
"orderId": "123456789",
"orderNumber": "#OKRXXXX"
},
"rating": 5,
"reply": {
"body": "<p><b>Thanks</b> for your review</p>",
"dateCreated": "2025-07-11T05:09:34.561Z",
"rawBody": "*Thanks* for your review",
"isPrivate": true
},
"reviewer": {
"attributes": [
{
"title": "Pros",
"type": "drop-down",
"value": "Powerful"
}
],
"avatarUrl": "https://example.com",
"displayName": "Tim C.",
"email": "[email protected]",
"isVerified": true,
"location": {
"country": {
"code": "au",
"name": "Australia"
},
"zoneCode": "NSW"
},
"name": "Tim Cook",
"socialConnection": "facebook",
"verifiedStatus": "Verified Buyer"
},
"reward": {
"description": "$10 off your next order over $40",
"integration": "loyaltyLion",
"type": "coupon",
"value": "OKRX-XXXXX-XXXX",
"isCouponUpgrade": true
},
"sentiment": "positive",
"status": "approved",
"tags": [
"Support Needed",
"Favourite"
],
"title": "Love these shoes!",
"unhelpfulCount": 1,
"variantId": "1234567890",
"variantName": "MacBook Pro - 15 Inch"
}
],
"nextUrl": "https://example.com"
}
The ID of the Review to reply to.
Whether the Customer should be notified of the reply via email.
true
POST /enterprise/reviews/{reviewId}/reply HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Content-Type: application/json
Accept: */*
Content-Length: 91
{
"reply": {
"body": "Thank you for your feedback!",
"isPrivate": false
},
"shouldEmailReply": true
}
{
"review": {
"subscriberId": "123e4567-e89b-12d3-a456-426614174000",
"reviewId": "123e4567-e89b-12d3-a456-426614174000",
"productId": "shopify-123456789",
"attributesWithRating": [
{
"minLabel": "Too Small",
"midLabel": "Just Right",
"maxLabel": "Too Big",
"title": "Sizing",
"type": "centered-range",
"value": 1
}
],
"body": "Great quality! Great price! Would buy again!",
"containsProfanity": true,
"dateCreated": "2025-07-11T05:09:34.561Z",
"helpfulCount": 1,
"isRecommended": true,
"media": [
{
"streamId": "123e4567-e89b-12d3-a456-426614174000",
"fullSizeUrl": "https://example.com",
"largeUrl": "https://example.com",
"thumbnailUrl": "https://example.com",
"type": "image",
"isHidden": true
}
],
"productAttributes": [
{
"title": "Pros",
"type": "drop-down",
"value": "Powerful"
}
],
"productName": "MacBook Pro",
"order": {
"orderId": "123456789",
"orderNumber": "#OKRXXXX"
},
"rating": 5,
"reply": {
"body": "<p><b>Thanks</b> for your review</p>",
"dateCreated": "2025-07-11T05:09:34.561Z",
"rawBody": "*Thanks* for your review",
"isPrivate": true
},
"reviewer": {
"attributes": [
{
"title": "Pros",
"type": "drop-down",
"value": "Powerful"
}
],
"avatarUrl": "https://example.com",
"displayName": "Tim C.",
"email": "[email protected]",
"isVerified": true,
"location": {
"country": {
"code": "au",
"name": "Australia"
},
"zoneCode": "NSW"
},
"name": "Tim Cook",
"socialConnection": "facebook",
"verifiedStatus": "Verified Buyer"
},
"reward": {
"description": "$10 off your next order over $40",
"integration": "loyaltyLion",
"type": "coupon",
"value": "OKRX-XXXXX-XXXX",
"isCouponUpgrade": true
},
"sentiment": "positive",
"status": "approved",
"tags": [
"Support Needed",
"Favourite"
],
"title": "Love these shoes!",
"unhelpfulCount": 1,
"variantId": "1234567890",
"variantName": "MacBook Pro - 15 Inch"
}
}
Loyalty
The ID of the Loyalty Customer. Note: May not be used in combination with the email
parameter
The email address of the Loyalty Customer. Note: May not be used in combination with the loyaltyCustomerId
parameter
[email protected]
GET /enterprise/loyalty/customers HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Accept: */*
{
"loyaltyCustomer": {
"loyaltyCustomerId": "123e4567-e89b-12d3-a456-426614174000",
"minimumVipTierName": "text",
"points": {
"balance": 1
},
"status": "pending",
"vipTierName": "text"
}
}
Lists the available ways to earn loyalty points. If a Loyalty Customer is specified, this returns ways of earning and amounts tailored to that customer.
The ID of the Loyalty Customer. Note: May not be used in combination with the email
parameter
The email address of the Loyalty Customer. Note: May not be used in combination with the loyaltyCustomerId
parameter
[email protected]
GET /enterprise/loyalty/earning_rules HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Accept: */*
{
"rules": [
{
"type": "fixed-amount",
"amount": 1
}
]
}
The action ID of the custom earning rule.
k2d6ne
An object identifying the Loyalty Customer by email
or loyaltyCustomerId
.
The value to be multiplied with the 'points per' value. Required for Custom Points Per Value Rules.
10
POST /enterprise/loyalty/earning_transactions HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Content-Type: application/json
Accept: */*
Content-Length: 114
{
"actionId": "k2d6ne",
"customerIdentifier": {
"loyaltyCustomerId": "123e4567-e89b-12d3-a456-426614174000"
},
"value": 10
}
{
"pointsEarned": 1,
"loyaltyCustomer": {
"loyaltyCustomerId": "123e4567-e89b-12d3-a456-426614174000",
"points": {
"balance": 1
}
}
}
Lists the available ways to redeem loyalty points for rewards. If a Loyalty Customer is specified, this returns ways of earning and amounts tailored to that customer.
The ID of the Loyalty Customer. Note: May not be used in combination with the email
parameter
The email address of the Loyalty Customer. Note: May not be used in combination with the loyaltyCustomerId
parameter
[email protected]
GET /enterprise/loyalty/redemption_rules HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Accept: */*
{
"rules": [
{
"redemptionRuleId": "123e4567-e89b-12d3-a456-426614174000",
"appliesToCollections": {
"collectionId": 388918313199,
"title": "Clothing",
"url": "https://example.myshopify.com/collections/clothing"
},
"expiresAfterDays": 1,
"minimumPurchase": 1,
"purchaseType": "single",
"recurringCycleLimit": 1,
"type": "fixed-value",
"reward": {
"awardVia": "coupon",
"points": 1,
"value": 1
}
}
]
}
An object identifying the Loyalty Customer by email
or loyaltyCustomerId
.
The unique identifier for the redemption rule.
POST /enterprise/loyalty/redemption_transactions HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Content-Type: application/json
Accept: */*
Content-Length: 183
{
"customerIdentifier": {
"loyaltyCustomerId": "123e4567-e89b-12d3-a456-426614174000"
},
"redemptionRuleId": "123e4567-e89b-12d3-a456-426614174000",
"variableValue": {
"points": 100,
"value": 10
}
}
{
"loyaltyCustomer": {
"points": {
"balance": 1000
}
},
"transactionDetails": {
"amount": 100
},
"reward": {
"status": "completed",
"storeCredit": {
"balanceAmount": "100",
"transactionAmount": "10"
},
"type": "store-credit"
}
}
Lists the active coupons for a customer. If a Loyalty Customer is specified, this returns the most recent coupons that have not been used for that customer.
A limit on the number of items returned. Between 1 and 100. Default 25.
25
The URL-encoded JSON object representing the cursor for the next page of results.
The ID of the Loyalty Customer. Note: May not be used in combination with the email
parameter
The email address of the Loyalty Customer. Note: May not be used in combination with the loyaltyCustomerId
parameter
[email protected]
GET /enterprise/loyalty/coupons HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Accept: */*
{
"coupons": [
{
"code": "OKRX-XXXXX-XXXX",
"description": "$10 off",
"appliesToCollectionIds": [
"shopify-123456789"
],
"appliesToProductIds": [
"shopify-123456789"
],
"displayType": "discount",
"expiryDate": "2025-07-11T05:09:34.561Z",
"maximumShipping": 1,
"minimumPurchase": 1,
"purchaseType": "single",
"recurringCycleLimit": 1,
"value": 10,
"valueType": "fixed_amount"
}
],
"nextUrl": "https://example.com"
}
An object identifying the Loyalty Customer by email
or loyaltyCustomerId
.
The number of points by which the customer's points balance is to be adjusted. Specify either a positive number to add points or a negative number to remove points.
10
Description of the transaction which is displayed to the store owner.
Gifted points due to bad shipping experience
Description of the transaction which is displayed to the Customer.
Gifted Points
POST /enterprise/loyalty/adjustment_transactions HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Content-Type: application/json
Accept: */*
Content-Length: 194
{
"customerIdentifier": {
"loyaltyCustomerId": "123e4567-e89b-12d3-a456-426614174000"
},
"amount": 10,
"internalReason": "Gifted points due to bad shipping experience",
"notificationText": "Gifted Points"
}
{
"loyaltyCustomer": {
"points": {
"balance": 1
}
}
}
An object identifying the Loyalty Customer by email
or loyaltyCustomerId
.
The name of the VIP Tier, or null to remove a previously configured minimum VIP Tier.
Silver
POST /enterprise/loyalty/customer_minimum_vip_tiers HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Content-Type: application/json
Accept: */*
Content-Length: 113
{
"customerIdentifier": {
"loyaltyCustomerId": "123e4567-e89b-12d3-a456-426614174000"
},
"minimumVipTierName": "Silver"
}
{
"minimumVipTierName": "text",
"vipTierName": "text"
}
Customers
POST /enterprise/customer_lookup HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Content-Type: application/json
Accept: */*
Content-Length: 28
{
"email": "[email protected]"
}
{
"customerId": "123e4567-e89b-12d3-a456-426614174000"
}
The ID of the Customer to retrieve. Use the /customer_lookup endpoint to get the Customer's ID.
GET /enterprise/customers/{customerId} HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Accept: */*
{
"dateFirstActive": "2022-01-18T02:21:20.380Z",
"dateLastActive": "2023-02-14T04:34:21.390Z",
"email": "[email protected]",
"givenName": "Jane",
"familyName": "Smith",
"avatarUrl": "https://via.placeholder.com/160/1d2135/00eab6",
"location": {
"country": "Australia",
"zoneCode": "NSW"
}
}
A Customer Profile is a collection of data points (grouped by namespace) about a specific Customer.
The ID of the Customer to retrieve. Use the /customer_lookup endpoint to get the Customer's ID.
A limit on the number of items returned. Between 1 and 100. Default 25.
25
The URL-encoded JSON object representing the cursor for the next page of results.
The identifier used to group Customer data. Specify this property to filter the Customer's profile data to a specific namespace.
okendo-general
GET /enterprise/customers/{customerId}/profiles HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Accept: */*
{
"profiles": [
{
"namespace": "okendo-general",
"properties": [
{
"name": "Given Name",
"value": "Jane",
"valueType": "string",
"date": "2025-07-11T05:09:34.561Z"
}
]
}
],
"nextUrl": "https://example.com"
}
A Customer Activity is an action that the Customer has taken or an action that relates to the Customer.
The ID of the Customer to retrieve. Use the /customer_lookup endpoint to get the Customer's ID.
A limit on the number of items returned. Between 1 and 100. Default 25.
25
The URL-encoded JSON object representing the cursor for the next page of results.
The identifier used to group Customer data. Specify this property to filter the Customer's activities to a specific namespace.
okendo-general
GET /enterprise/customers/{customerId}/activities HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Accept: */*
{
"activities": [
{
"activityId": "123e4567-e89b-12d3-a456-426614174000",
"namespace": "okendo-general",
"date": "2025-07-11T05:09:34.561Z",
"title": "Review Submitted"
}
],
"nextUrl": "https://example.com"
}
Groups
The name of the group.
Indicates if the products in the group are automatically assigned to show reviews from other products within the same group.
The ID of Shopify collection that will be used to create the group.
123456789
POST /enterprise/groups HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Content-Type: application/json
Accept: */*
Content-Length: 82
{
"name": "text",
"isAutoAssignProductsEnabled": true,
"shopifyCollectionId": 123456789
}
{
"group": {
"shopifyCollectionId": 123456789,
"subscriberId": "123e4567-e89b-12d3-a456-426614174000",
"groupId": "123e4567-e89b-12d3-a456-426614174000",
"dateCreated": "2022-01-18T02:21:20.380Z",
"isAutoAssignProductsEnabled": true,
"name": "text"
}
}
Webhooks
The URL that the webhook event will be sent to
Webhook event version
POST /enterprise/webhook_subscriptions HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Content-Type: application/json
Accept: */*
Content-Length: 138
{
"endpointUrl": "https://example.com",
"isEnabled": true,
"subscriptions": [
{
"resourceType": "review",
"topic": "create"
}
],
"version": "2025-02-01"
}
{
"subscriberId": "123e4567-e89b-12d3-a456-426614174000",
"webhookSubscriptionId": "123e4567-e89b-12d3-a456-426614174000",
"endpointUrl": "https://example.com",
"version": "2025-02-01",
"subscriptions": [
{
"resourceType": "review",
"topic": "create"
}
],
"isEnabled": true,
"dateCreated": "2025-07-11T05:09:34.561Z",
"dateModified": "2025-07-11T05:09:34.561Z",
"webhookSecret": "text"
}
Returns a list of Webhook Subscriptions
A limit on the number of items returned. Between 1 and 100. Default 25.
25
The URL-encoded JSON object representing the cursor for the next page of results.
The sort order of the webhook subscriptions. Format: 'asc|desc'. Default 'desc'
desc
GET /enterprise/webhook_subscriptions HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Accept: */*
{
"webhookSubscriptions": [
{
"subscriberId": "123e4567-e89b-12d3-a456-426614174000",
"webhookSubscriptionId": "123e4567-e89b-12d3-a456-426614174000",
"endpointUrl": "https://example.com",
"version": "2025-02-01",
"subscriptions": [
{
"resourceType": "review",
"topic": "create"
}
],
"isEnabled": true,
"dateCreated": "2025-07-11T05:09:34.561Z",
"dateModified": "2025-07-11T05:09:34.561Z"
}
],
"nextUrl": "https://example.com"
}
GET /enterprise/webhook_subscriptions/{webhookSubscriptionId} HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Accept: */*
{
"webhookSubscription": {
"subscriberId": "123e4567-e89b-12d3-a456-426614174000",
"webhookSubscriptionId": "123e4567-e89b-12d3-a456-426614174000",
"endpointUrl": "https://example.com",
"version": "2025-02-01",
"subscriptions": [
{
"resourceType": "review",
"topic": "create"
}
],
"isEnabled": true,
"dateCreated": "2025-07-11T05:09:34.561Z",
"dateModified": "2025-07-11T05:09:34.561Z"
}
}
The URL that the webhook event will be sent to
Webhook event version
PUT /enterprise/webhook_subscriptions/{webhookSubscriptionId} HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Content-Type: application/json
Accept: */*
Content-Length: 138
{
"endpointUrl": "https://example.com",
"subscriptions": [
{
"resourceType": "review",
"topic": "create"
}
],
"version": "2025-02-01",
"isEnabled": true
}
{
"webhookSubscription": {
"subscriberId": "123e4567-e89b-12d3-a456-426614174000",
"webhookSubscriptionId": "123e4567-e89b-12d3-a456-426614174000",
"endpointUrl": "https://example.com",
"version": "2025-02-01",
"subscriptions": [
{
"resourceType": "review",
"topic": "create"
}
],
"isEnabled": true,
"dateCreated": "2025-07-11T05:09:34.561Z",
"dateModified": "2025-07-11T05:09:34.561Z"
}
}
DELETE /enterprise/webhook_subscriptions/{webhookSubscriptionId} HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Accept: */*
No content
POST /enterprise/webhook_subscriptions/{webhookSubscriptionId}/rotate_secret HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Accept: */*
{
"webhookSubscriptionSecret": "text"
}
Translations Settings
A flag which is used to determine whether the Subscriber Review Translation Blocklist will be used when translating Reviews
A flag which is used to determine whether Product Review Translation Blocklist will be used when translating Reviews
POST /enterprise/review_translation_settings HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Content-Type: application/json
Accept: */*
Content-Length: 76
{
"isGlobalTermsBlocklistEnabled": true,
"isProductTermsBlocklistEnabled": true
}
{
"isGlobalTermsBlocklistEnabled": true,
"isProductTermsBlocklistEnabled": true
}
GET /enterprise/review_translation_blocklist HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Accept: */*
{
"blocklistedTerms": [
"text"
]
}
Array of blocklisted terms.
PUT /enterprise/review_translation_blocklist HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Content-Type: application/json
Accept: */*
Content-Length: 29
{
"blocklistedTerms": [
"text"
]
}
{
"blocklistedTerms": [
"text"
]
}
Array of blocklisted terms.
PATCH /enterprise/review_translation_blocklist HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Content-Type: application/json
Accept: */*
Content-Length: 29
{
"blocklistedTerms": [
"text"
]
}
{
"blocklistedTerms": [
"text"
]
}
DELETE /enterprise/review_translation_blocklist HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Accept: */*
No content
The product ID prefixed by a platform identifier.
shopify-123456789
Array of blocklisted terms.
PATCH /enterprise/products/{productId}/review_translation_blocklist HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Content-Type: application/json
Accept: */*
Content-Length: 29
{
"blocklistedTerms": [
"text"
]
}
{
"blocklistedTerms": [
"text"
]
}
The product ID prefixed by a platform identifier.
shopify-123456789
DELETE /enterprise/products/{productId}/review_translation_blocklist HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Accept: */*
No content
The product ID prefixed by a platform identifier.
shopify-123456789
Array of blocklisted terms.
PUT /enterprise/products/{productId}/review_translation_blocklist HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Content-Type: application/json
Accept: */*
Content-Length: 29
{
"blocklistedTerms": [
"text"
]
}
{
"blocklistedTerms": [
"text"
]
}
The product ID prefixed by a platform identifier.
shopify-123456789
GET /enterprise/products/{productId}/review_translation_blocklist HTTP/1.1
Host: api.okendo.io
Authorization: Basic username:password
Accept: */*
{
"blocklistedTerms": [
"text"
]
}
Last updated