curl --request GET \
--url https://{cluster}.voucherify.io/v2/loyalties/earning-rules/{earningRuleId}/activities \
--header 'X-App-Id: <api-key>' \
--header 'X-App-Token: <api-key>'{
"data": [
{
"id": "laer_1351c41a656179f2f7",
"type": "vl.earning_rule.activated",
"data": {
"earning_rule": {
"id": "lern_133a941c44c06594cf",
"name": "Updated earning rule",
"object": "earning_rule",
"status": "ACTIVE",
"trigger": {
"event": "customer.order.paid"
},
"earnings": [
{
"id": "lernei_1351c417a0e179f2f0",
"name": "New earning 02",
"effects": [
{
"type": "POINTS",
"points": {
"value": 100,
"card_definition_id": "lcdef_1331564fab0b1ce713"
}
}
],
"tier_rules": {
"type": "NO_REQUIREMENTS"
}
}
],
"end_date": "2026-12-31T00:00:00.000Z",
"metadata": {
"some-value": null,
"temporary_earning_rule": true
},
"created_at": "2026-10-22T11:30:54.857Z",
"start_date": null,
"updated_at": "2026-11-09T11:45:39.728Z",
"earning_limits": {
"global": {
"type": "NO_LIMIT",
"limits": []
}
},
"trigger_limits": {
"cooldown": {
"type": "NO_COOLDOWN"
},
"frequency": {
"type": "NO_LIMIT",
"limits": []
}
},
"validity_hours": {
"type": "ANY_TIME"
}
}
},
"created_at": "2026-11-09T11:45:39.728Z",
"group_id": "v-1351c41a60c415430a",
"source": {
"channel": "API",
"api_key": {
"name": "Primary",
"app_id": "5168a5a0-c93d-4428-b93c-fdbee8700680"
}
},
"earning_rule_id": "lern_133a941c44c06594cf"
},
{
"id": "laer_1351c417a1a179f2f1",
"type": "vl.earning_rule.updated",
"data": {
"earning_rule": {
"id": "lern_133a941c44c06594cf",
"name": "Updated earning rule",
"object": "earning_rule",
"status": "DRAFT",
"trigger": {
"event": "customer.order.paid"
},
"earnings": [
{
"id": "lernei_1351c417a0e179f2f0",
"name": "New earning 02",
"effects": [
{
"type": "POINTS",
"points": {
"value": 100,
"card_definition_id": "lcdef_1331564fab0b1ce713"
}
}
],
"tier_rules": {
"type": "NO_REQUIREMENTS"
}
}
],
"end_date": "2026-12-31T00:00:00.000Z",
"metadata": {
"some-value": null,
"temporary_earning_rule": true
},
"created_at": "2026-10-22T11:30:54.857Z",
"start_date": null,
"updated_at": "2026-11-09T11:45:36.889Z",
"earning_limits": {
"global": {
"type": "NO_LIMIT",
"limits": []
}
},
"trigger_limits": {
"cooldown": {
"type": "NO_COOLDOWN"
},
"frequency": {
"type": "NO_LIMIT",
"limits": []
}
},
"validity_hours": {
"type": "ANY_TIME"
}
}
},
"created_at": "2026-11-09T11:45:36.889Z",
"group_id": "v-1351c4179944154304",
"source": {
"channel": "API",
"api_key": {
"name": "Primary",
"app_id": "5168a5a0-c93d-4428-b93c-fdbee8700680"
}
},
"earning_rule_id": "lern_133a941c44c06594cf"
}
],
"cursor": {
"next": "lcrsaer_1351cc0d0c18a44cb6",
"expires_at": "2026-11-09T12:30:23.217Z"
},
"object": "list"
}List earning rule activities
Returns a cursor-paginated list of activities (audit trail) for a single earning rule.
A deleted earning rule returns 404, so its activities are not listed.
The same field cannot be used in both ascending and descending order at once.
Default order is -created_at.
A successful call records no activity.
curl --request GET \
--url https://{cluster}.voucherify.io/v2/loyalties/earning-rules/{earningRuleId}/activities \
--header 'X-App-Id: <api-key>' \
--header 'X-App-Token: <api-key>'{
"data": [
{
"id": "laer_1351c41a656179f2f7",
"type": "vl.earning_rule.activated",
"data": {
"earning_rule": {
"id": "lern_133a941c44c06594cf",
"name": "Updated earning rule",
"object": "earning_rule",
"status": "ACTIVE",
"trigger": {
"event": "customer.order.paid"
},
"earnings": [
{
"id": "lernei_1351c417a0e179f2f0",
"name": "New earning 02",
"effects": [
{
"type": "POINTS",
"points": {
"value": 100,
"card_definition_id": "lcdef_1331564fab0b1ce713"
}
}
],
"tier_rules": {
"type": "NO_REQUIREMENTS"
}
}
],
"end_date": "2026-12-31T00:00:00.000Z",
"metadata": {
"some-value": null,
"temporary_earning_rule": true
},
"created_at": "2026-10-22T11:30:54.857Z",
"start_date": null,
"updated_at": "2026-11-09T11:45:39.728Z",
"earning_limits": {
"global": {
"type": "NO_LIMIT",
"limits": []
}
},
"trigger_limits": {
"cooldown": {
"type": "NO_COOLDOWN"
},
"frequency": {
"type": "NO_LIMIT",
"limits": []
}
},
"validity_hours": {
"type": "ANY_TIME"
}
}
},
"created_at": "2026-11-09T11:45:39.728Z",
"group_id": "v-1351c41a60c415430a",
"source": {
"channel": "API",
"api_key": {
"name": "Primary",
"app_id": "5168a5a0-c93d-4428-b93c-fdbee8700680"
}
},
"earning_rule_id": "lern_133a941c44c06594cf"
},
{
"id": "laer_1351c417a1a179f2f1",
"type": "vl.earning_rule.updated",
"data": {
"earning_rule": {
"id": "lern_133a941c44c06594cf",
"name": "Updated earning rule",
"object": "earning_rule",
"status": "DRAFT",
"trigger": {
"event": "customer.order.paid"
},
"earnings": [
{
"id": "lernei_1351c417a0e179f2f0",
"name": "New earning 02",
"effects": [
{
"type": "POINTS",
"points": {
"value": 100,
"card_definition_id": "lcdef_1331564fab0b1ce713"
}
}
],
"tier_rules": {
"type": "NO_REQUIREMENTS"
}
}
],
"end_date": "2026-12-31T00:00:00.000Z",
"metadata": {
"some-value": null,
"temporary_earning_rule": true
},
"created_at": "2026-10-22T11:30:54.857Z",
"start_date": null,
"updated_at": "2026-11-09T11:45:36.889Z",
"earning_limits": {
"global": {
"type": "NO_LIMIT",
"limits": []
}
},
"trigger_limits": {
"cooldown": {
"type": "NO_COOLDOWN"
},
"frequency": {
"type": "NO_LIMIT",
"limits": []
}
},
"validity_hours": {
"type": "ANY_TIME"
}
}
},
"created_at": "2026-11-09T11:45:36.889Z",
"group_id": "v-1351c4179944154304",
"source": {
"channel": "API",
"api_key": {
"name": "Primary",
"app_id": "5168a5a0-c93d-4428-b93c-fdbee8700680"
}
},
"earning_rule_id": "lern_133a941c44c06594cf"
}
],
"cursor": {
"next": "lcrsaer_1351cc0d0c18a44cb6",
"expires_at": "2026-11-09T12:30:23.217Z"
},
"object": "list"
}Authorizations
Path Parameters
Identifies the earning rule. Format lern_[a-f0-9]+.
^lern_[a-f0-9]+$Query Parameters
Limits the page size to an integer from 1 to 100. Defaults to 10. A numeric string is accepted and rounded to the nearest integer.
1 <= x <= 100Orders the results. Accepts one value or an array. Prefix a field with - for descending order. Defaults to -created_at. The same field cannot be used in both directions. Rows with the same sort value are then ordered by id ascending.
created_at, -created_at Continues pagination. Pass the cursor.next value from a previous response. Format lcrsaer_[a-f0-9]+. The cursor matches the filters and order of that response.
^lcrsaer_[a-f0-9]+$Filters the results. Pass a deep object, for example filters[type][conditions][$is]=vl.earning_rule.updated. Fields combine through junction, which defaults to AND. Omit filters to apply no field filter.
Request query schema for GET /v2/loyalties/earning-rules/{earningRuleId}/activities.
Show child attributes
Show child attributes
Response
Paginated list of earning rule activities. Each entry is a snapshot of the earning rule when the activity occurred.
Response body schema for GET /v2/loyalties/earning-rules/{earningRuleId}/activities.

