Journal
Sessions, and the journeys that group them.
A journey is one passage through a game. A session can mark the start or the finish of one.
/api/ v1/ journal/ entriesLogged sessions, most recently played first.
Query
| Field | Type | Notes |
|---|---|---|
game | integer | Filter by game id. |
limit | integer | 1 to 1000, default 50. |
/api/ v1/ journal/ entriesLog a session. Answers 201.
Body
| Field | Type | Notes |
|---|---|---|
igdb_idrequired | integer | The game's catalog id. |
game_slugrequired | string | The game's slug. |
played_on | date | YYYY-MM-DD. Defaults to today. |
ended_on | date | For a session spanning days. |
minutes | integer | 0 to 100000. |
note | string | Markdown, up to 5000 characters. |
visibility | string | PUBLIC, FOLLOWERS or PRIVATE. |
marks_start | boolean | This session started the game. |
marks_finish | boolean | This session finished it. |
started_at | string | The time of day the session began, HH:MM or HH:MM:SS. Optional: a whole day is a session too. |
journey_id | string | The journey this session belongs to. It has to be your own journey, on the same game; without it the session stands loose. |
comments_scope | string | Who may reply: EVERYONE, FOLLOWERS or NOBODY. |
/api/ v1/ journal/ entries/ {id}Change a session. It takes the same fields as the POST, without igdb_id or game_slug, plus two that only make sense once the session exists.
Body
| Field | Type | Notes |
|---|---|---|
sensitive | boolean | Hides the images behind a warning. Turning it off does not erase the record of an automatic mark: that is what leaves the decision reviewable afterwards. |
image_order | array | The ids of the session's images, in the order they should appear, up to 12. The images themselves are added on the website; this only orders what is already there. |
/api/ v1/ journal/ entries/ {id}Remove a session.
/api/ v1/ journal/ daysMark several days at once as played, without describing any of them. It is the stroke across the calendar: a day already covered by a session is left alone, and added counts what changed rather than what was asked for.
Body
| Field | Type | Notes |
|---|---|---|
igdb_idrequired | integer | The game's catalog id. |
game_slugrequired | string | The game's slug. |
daysrequired | array | 1 to 366 dates as YYYY-MM-DD. None of them may be in the future. |
journey_id | string | The journey the days belong to. Without it, they stand loose. |
Example response
{
"data": { "igdb_id": 14593, "days": ["2026-09-01", "2026-09-02"], "added": 1 }
}/api/ v1/ journal/ daysRemove the sessions covering those days. It goes by parameter rather than by body, because a DELETE with a body does not survive every intermediary.
Query
| Field | Type | Notes |
|---|---|---|
igdb_idrequired | integer | The game's catalog id. |
daysrequired | string | The dates separated by commas, 1 to 366 of them. |
journey_id | string | Limits the removal to that journey's sessions. |
/api/ v1/ journal/ entries/ {id}A visible entry, author, gallery and interaction context.
/api/ v1/ journal/ journeys/ {id}Public journey metadata and public session count.
/api/ v1/ journal/ journeys/ {id}/ entriesVisible journey sessions, 40 per page, with images and summary. page: 1 to 1000.
/api/ v1/ journal/ journeysThe owner's journeys.
Query
| Field | Type | Notes |
|---|---|---|
game | integer | Filter by game id. |
limit | integer | 1 to 1000, default 50. |
/api/ v1/ journal/ journeysStart a journey through a game. Answers 201.
Body
| Field | Type | Notes |
|---|---|---|
igdb_idrequired | integer | The game's catalog id. |
game_slugrequired | string | The game's slug. |
titlerequired | string | Up to 120 characters. |
/api/ v1/ journal/ journeys/ {id}Renames a run, or says what kind of run it was. One field at a time: what the body leaves out stays as it is, and what clear names is emptied. Finishing before starting is refused.
Body
| Field | Type | Notes |
|---|---|---|
title | string | Up to 120 characters. |
status | string | PLANNED, PLAYING, ON_HOLD, COMPLETED or DROPPED. It is the run's state, not the game's. |
started_on | string | YYYY-MM-DD. |
finished_on | string | YYYY-MM-DD. |
library_entry_id | string | The copy this run was played on. |
replay | boolean | Whether the game had been played before this one. |
mastered | boolean | Whether the platinum or the 100% came out of this run. |
difficulty | string | Up to 80 characters. |
progress | string | Up to 160 characters. |
clear | array | Fields to empty: status, started_on, finished_on, difficulty, progress, replay, mastered or library_entry_id. A field cannot carry a value and be in clear at once. |
/api/ v1/ journal/ journeys/ {id}Remove a journey.
/api/ v1/ journal/ sessionsThe owner's open session, with its game and its events. Answers data: null when there is none.
/api/ v1/ journal/ sessionsOpens a session. One per account: answers 409 when another is already open. Answers 201.
Body
| Field | Type | Notes |
|---|---|---|
igdb_idrequired | integer | The game's catalog id. |
game_slugrequired | string | The game's slug. |
journey_id | string | Attaches the session to a journey of yours. |
visibility | string | PUBLIC, FOLLOWERS or PRIVATE. |
/api/ v1/ journal/ sessions/ {id}/ eventsNotes something that happened in the open session. Append only: an event is not edited. Answers 201.
Body
| Field | Type | Notes |
|---|---|---|
kindrequired | string | NOTE, PROGRESS, SHOT or STOP. NOTE and STOP need body, PROGRESS needs marker, SHOT needs screenshot_id. |
body | string | Up to 500 characters. |
marker | string | Up to 80 characters. |
screenshot_id | string | A screenshot of yours. |
/api/ v1/ journal/ sessions/ {id}Closes the session, which is what turns it into an entry. With no minutes, the elapsed time counts, capped at 16 hours.
Body
| Field | Type | Notes |
|---|---|---|
minutes | integer | 0 to 100000. The clock counts, you confirm. |
note | string | Up to 5000 characters. |
marks_finish | boolean | Marks that the game was finished in this session. |
/api/ v1/ journal/ sessions/ {id}Discards an open session that recorded nothing. Answers 409 once it has events: closing is the way out then.