customerSuccess permission and can return operational history and embedded user snapshots. Do not call it directly from browser or mobile code.{
"email": "member@example.com",
"limit": 20,
"page": 1
}| Field | Required | Rules | Meaning |
|---|---|---|---|
email | Yes | Valid email address | Matched case-insensitively. |
limit | No | Integer from 1 to 100; default 10 | Maximum rows returned on this page. |
page | No | Integer greater than or equal to 1; default 1 | One-based page number. |
Authorization: Bearer <community-api-key>. The key must be active, must select the intended community, and must include customerSuccess. Keep it server-side. This legacy route may return 401 both for invalid authentication and for a key that lacks the permission.200 response contains data.logs plus data.pagination; the response examples below the schema include one synthetic spin-earned row. The empty 200 example contains logs: [], total: 0, and totalPages: 0. Both are successful reads.createdAt descending, so page 1 contains the newest events. data.pagination.total is the total matching row count and totalPages is calculated from the effective limit. A successful lookup with no mini-game history returns 200, logs: [], total: 0, and totalPages: 0.| Field | Meaning |
|---|---|
miniGameType | Current values are spin_the_wheel and quiz. |
gameName | Configured game name at the time represented by the log. |
action | Event classification. See the table below. |
actionDetails | Optional human-readable event detail. |
mission* | Mission identity/timeframe when the event came from a mission. |
spinInventoryId, spinResultId | Opaque internal references for correlating spin records. |
prizeReward, finalReward | Optional { currency, xp } reward snapshots. |
streakBefore, streakAfter, highestStreak | Optional streak transition fields. |
expiresAt, expiredAt | UTC timestamps when a spin becomes invalid or was marked expired. |
createdAt, updatedAt | UTC record timestamps. Use createdAt for event chronology. |
user | Optional personal-data snapshot. Use userId for correlation; do not persist, forward, or branch integration logic on this embedded object. |
action values:spin-earned, spin-used, spin-expired, spin-claimedmission-progressstreak-earned, streak-brokenadmin-updatedquiz-started, quiz-completed, quiz-passed, quiz-failedaction and tolerate additional metadata.400: invalid email, limit outside 1..100, page < 1, or another validation failure.401: missing/invalid authentication or a key without customerSuccess on this legacy permission path.404: no user can be resolved for the supplied email.500: unexpected service failure.200 with an empty logs array means no matching mini-game logs were found in this community. It is not proof about the user's activity in another community and is not proof of current eligibility.Idempotency-Key. Retrying a failed request does not create duplicate mini-game events. Page-based results are not a frozen snapshot: new events can move older rows to later pages between requests. Retry the same page after transient 500 failures, and use event IDs plus timestamps to deduplicate records in a local export.action; absent metadata is not a schema error.user is personal-data metadata, not the canonical user profile.gameName.spin-earned -> spin-used or spin-expired, and compare UTC timestamps.curl --location 'https://api.returning.ai/v1/mini-game-logs/by-email' \
--header 'Content-Type: application/json' \
--data-raw '{
"email": "member@example.com",
"limit": 20,
"page": 1
}'{
"status": "success",
"message": "Mini game logs fetched successfully",
"data": {
"logs": [
{
"_id": "64b000000000000000000101",
"communityId": "64b000000000000000000001",
"miniGameId": "64b000000000000000000010",
"userId": "64b000000000000000000100",
"miniGameType": "spin_the_wheel",
"gameName": "Weekly rewards wheel",
"action": "spin-earned",
"missionName": "Complete the weekly activity",
"missionTimeframe": "weekly",
"spinInventoryId": "64b000000000000000000201",
"spinCount": 1,
"expiresAt": "2026-08-24T23:59:59.999Z",
"createdAt": "2026-08-18T09:15:00.000Z",
"updatedAt": "2026-08-18T09:15:00.000Z"
}
],
"pagination": {
"total": 1,
"page": 1,
"limit": 10,
"totalPages": 1
}
}
}