Add a reward
Open Loyalty has the JWT authorization. To learn what a JSON Web Token is and how it works, check out Introduction to JSON Web Tokens https://jwt.io/introduction/
Obtain an access token
Send a request with the parameters username and password
Definition
POST /api/admin/login_check Go to definition
POST /api/{storeCode}/member/login_check Go to definition
Example
curl {HOST}/api/admin/login_check
-H 'Content-Type: application/json;charset=UTF-8'
-H 'Accept: application/json, text/plain, */*'
--data-binary '{"username":"admin","password":"password"}'
Example Response
{
"token":"eyJhbGciOiJSUzI1NiIsInR5cCI6...",
"refresh_token":"0558f8bb29948c4e54c443f..."
}
Using JSON Web Token
Add authorization header to each request
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6...
You can now access any API method you want under the /api prefix.
Example
curl {HOST}/api/{storeCode}/analytics/members
-H 'Accept: application/json'
-H 'Content-type: application/x-www-form-urlencoded'
-H 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6...'
Refresh JSON Web Token
You can refresh token using refresh_token that was given during login.
There are two endpoints
To refresh admin token POST /api/token/refresh Go to definition
To refresh member token POST /api/{storeCode}/token/refresh Go to definition
Store code
Return created reward ID.
Bad request.
Unauthorized
Forbidden.
Not found.
POST /api/{storeCode}/reward HTTP/1.1
Host: openloyalty.localhost
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 1018
{
"reward": {
"reward": "static_coupon",
"translations": {
"en": {
"name": "text",
"shortDescription": "text",
"usageInstruction": "text",
"conditionsDescription": "text",
"brandDescription": "text",
"brandName": "text"
}
},
"categories": [
"123e4567-e89b-12d3-a456-426614174000"
],
"tax": 23,
"price": 200,
"taxPriceValue": 46,
"active": true,
"target": "level",
"levels": [
"123e4567-e89b-12d3-a456-426614174000"
],
"segments": [
"123e4567-e89b-12d3-a456-426614174000"
],
"activity": {
"allTime": true,
"from": "2026-01-01T00:00:00.000Z",
"to": "2026-01-01T00:00:00.000Z"
},
"visibility": {
"allTime": true,
"from": "2026-01-01T00:00:00.000Z",
"to": "2026-01-01T00:00:00.000Z"
},
"labels": [
{
"key": "text",
"value": "text"
}
],
"featured": true,
"public": true,
"costInPoints": 60.8,
"sourceWalletTypeCode": "text",
"customFields": {
"ANY_ADDITIONAL_PROPERTY": {
"ANY_ADDITIONAL_PROPERTY": "anything"
}
},
"limits": {
"general": {
"interval": {
"type": "calendarHours"
},
"value": 1
},
"perMember": {
"interval": {
"type": "calendarHours"
},
"value": 1
}
},
"usageLimit": {
"perUser": 1,
"general": 1
},
"fulfillmentTracking": true
}
}{
"rewardId": "123e4567-e89b-12d3-a456-426614174000"
}Last updated
Was this helpful?

