All API requests must be authenticated via HTTPS using a bearer token.
https://www.chastitytracker.org
GET /api/v2/games_changes.php HTTP/2
Host: www.chastitytracker.org
Authorization: Bearer {YOUR_API_TOKEN}
Content-Type: application/json
All v2 endpoints return a unified JSON envelope.
{
"ok": true,
"data": { ... },
"meta": {"version":2}
}
{
"ok": false,
"error": {"code":"...", "message":"..."},
"meta": {"version":2}
}
Games Changes are read-only records generated by the system to track any modification of a game rules configuration during a session (DICE, LINK, LUCK).
This endpoint is meant for integrations that want to show an audit log like the website does (who changed what, when, and what exactly changed).
dom_nick), never the dom email.game: DICE | LINK | LUCKaction: INSERT | UPDATE | DELETEhappened: UTC datetime when the rule change occurredbefore: JSON object with previous config (may be null for INSERT)after: JSON object with new config (may be null for DELETE)changes: array of human-readable differences (label, from, to)dices, addunit, waitint, waitunit, minmultiplier, maxmultiplier, optional penaltiesaddint, addunit, subint, subunit, waitint (votes required), minmultiplier, maxmultiplieraddint, addunit, subint, subunit, waitint, waitunit, minmultiplier, maxmultiplier, optional penaltiesmin, addint, addunit, alwaysGET /api/v2/games_changes.php (list)Returns game rule changes for a specific session (token owner only).
session: integer (required)game: DICE | LINK | LUCK (optional)action: INSERT | UPDATE | DELETE (optional)from: UTC datetime (optional) β filter on happened >= fromto: UTC datetime (optional) β filter on happened <= tolimit: integer (default 50, max 200)cursor: string (optional, cursor pagination)include_raw: 0/1 (default 0) β include before/afterinclude_diff: 0/1 (default 1) β include changeshappened DESC, id DESC for stable pagination.
GET /api/v2/games_changes.php?session=123&game=DICE&limit=50 HTTP/2
Host: www.chastitytracker.org
Authorization: Bearer {YOUR_API_TOKEN}
{
"ok": true,
"data": {
"count": 1,
"total": 1,
"limit": 50,
"cursor_next": "eyJoIjoiMjAyNi0wMi0xMiAxNzoxMjo1MS4xMjMiLCJpZCI6NDJ9",
"items": [
{
"session": 123,
"game": "DICE",
"action": "UPDATE",
"dom_nick": "GF",
"happened": "2026-02-12 17:12:51.123",
"before": {
"dices": 2,
"addunit": "HOUR",
"waitint": 30,
"waitunit": "MINUTE",
"minmultiplier": 1.0,
"maxmultiplier": 2.0
},
"after": {
"dices": 3,
"addunit": "HOUR",
"waitint": 15,
"waitunit": "MINUTE",
"minmultiplier": 2.0,
"maxmultiplier": 3.0
},
"changes": [
{"label":"# of dice(s)","from":2,"to":3},
{"label":"Wait time","from":"30 MINUTE(S)","to":"15 MINUTE(S)"},
{"label":"Min multiplier","from":1,"to":2},
{"label":"Max multiplier","from":2,"to":3}
]
}
]
},
"meta":{"version":2}
}
200 OK β Returned400 Bad Request β Validation error401 Unauthorized β Missing/invalid token404 Not Found β Session not found / not owned500 Internal Server Error β Server errorbefore/after may be null depending on the action.changes is a convenience field; clients can also diff raw JSON if desired.include_raw=0, before/after are omitted. If include_diff=0, changes is omitted.