Diary
Endpoint
Section titled “Endpoint”GET /api/public/:username/diary?limit=50Path params
Section titled “Path params”| Param | Type | Required | Description |
|---|---|---|---|
username | string | yes | Interis username to resolve |
Query params
Section titled “Query params”| Param | Type | Default | Max | Description |
|---|---|---|---|---|
limit | number | 50 | 200 | Number of diary rows to return |
Response
Section titled “Response”[ { "id": "entry-id", "mediaType": "movie", "watchedDate": "2026-01-10", "ratingOutOfTen": 8, "ratingOutOfFive": 4, "rewatch": false, "createdAt": "2026-01-10T12:00:00.000Z", "updatedAt": "2026-01-10T12:00:00.000Z", "media": { "tmdbId": 550, "title": "Fight Club", "posterPath": "/a.jpg", "releaseYear": 1999 }, "review": { "id": "review-id", "content": "Great rewatch.", "containsSpoilers": false, "createdAt": "2026-01-10T12:00:00.000Z" } }]- Includes both
movieandtventries. - Results are merged and sorted by
watchedDatedesc, thencreatedAtdesc. reviewcan benullwhen no linked review exists.
Empty state behavior
Section titled “Empty state behavior”Returns [] when diary has no entries.
Error behavior
Section titled “Error behavior”404when username does not exist.429when the public rate limit is exceeded.500for unexpected server errors.
Examples
Section titled “Examples”const res = await fetch('https://api.interis.gorkemkaryol.dev/api/public/your_username/diary?limit=30');if (!res.ok) throw new Error(`Diary failed: ${res.status}`);
const diary = await res.json();curl "https://api.interis.gorkemkaryol.dev/api/public/your_username/diary?limit=30"Practical: isolate rewatch entries
Section titled “Practical: isolate rewatch entries”const rewatches = diary.filter((entry) => entry.rewatch);Next: Activity endpoint