Earn points
POST/openapi/2026-07/loyalty/members/points/earn
Add points to one or more members
Request
- application/json
- Body
- Example
Bodyrequired
Member locator type: member_id or email
Locator values to credit. Up to 200 per request
Points to add. Must be positive
Business reason stored with the points change record
Batch-level idempotency key. Same key within one hour replays the first response
point_expired_setting object
Points expiration override. When omitted, store global setting applies
Whether points expire
Expiry method: after_x_months / on_specific_date / ...
Day component of the expiry rule
Month component of the expiry rule
Whether expiry protection is enabled
Protection days
Whether to use the store global config
Whether to send a points-change notification email to the member
{
"operate_type": "string",
"operate_values": [
"string"
],
"points": 0,
"reason": "string",
"idempotency_key": "string",
"point_expired_setting": {
"is_expired": true,
"expired_method": "string",
"day": 0,
"month": 0,
"protect_enabled": true,
"protect_days": 0,
"use_global_config": true
},
"send_email": true
}
Responses
- 200
OK
- application/json
- Schema
- Example
Schema
- Array [
- ]
error code
error message
data object
Number of successful items
Number of failed items
results object[]
Points change results
Resolved member ID
Points transaction ID
Change amount. Positive for earn
Effective time, ISO-8601
Final effective expiration time of the points earned in this operation, Unix seconds (serialized as a protojson string). 0 means permanent
Locator values that failed
{
"code": "string",
"message": "string",
"data": {
"success_count": 0,
"failed_count": 0,
"results": [
{
"member_id": "string",
"transaction_id": "string",
"change_value": 0,
"occurred_at": "string",
"expiration_at": 0
}
],
"failed_values": [
"string"
]
}
}