API Dokumentation

Basis-URL: https://logs.trfx.de

Status & Allgemein

GET /api/status

Gibt den Echtzeit-Status der Anwendung zurück: Uptime, Speichernutzung, IRC-Verbindungsstatus, Anzahl der geloggten Kanäle und Puffergröße.

Beispiel-Antwort

{
  "service_status": "online",
  "uptime_seconds": 3600,
  "logger_status": {
    "irc_connection": "connected",
    "listening_to_channels_count": 136
  }
}

GET /api/stats

Globale Gesamtstatistiken: Nachrichtenanzahl in der DB, Anzahl konfigurierter Kanäle und einzigartiger Nutzer.

Beispiel-Antwort

{
  "counts": {
    "total_messages": 1234567,
    "configured_channels": 136,
    "unique_users_logged": 45231
  }
}

GET /api/channels

Liste aller konfigurierten Kanäle mit id und name.

[{ "id": "12875057", "name": "gronkh" }, ...]

Log-Endpunkte

GET /api/logs/span/:type/:id

Empfiehlt automatisch die optimale Zeitspanne für einen Kanal oder Nutzer basierend auf der Aktivität. Sehr aktive Kanäle erhalten 1d, ruhige bis zu 3m.

Parameter

  • :typechannel oder user
  • :id – Twitch-ID

Beispiel-Antwort

{
  "span": "7d",
  "from": "2026-05-30",
  "to": "2026-06-06"
}

GET /api/logs/channel/:identifier

Logs für einen Kanal, paginiert. :identifier kann der Kanalname oder die Twitch-ID sein.

Query-Parameter

  • from / to (string) – Zeitraum als YYYY-MM-DD
  • date (string) – Einzelner Tag (Rückwärtskompatibilität)
  • user (string, optional) – Auf Nutzer-ID oder -Name filtern
  • limit (integer, default 2000) – Einträge pro Seite
  • offset (integer, default 0) – Für Pagination

Beispiel

/api/logs/channel/gronkh?from=2026-06-01&to=2026-06-06
/api/logs/channel/12875057?from=2026-06-06&to=2026-06-06&user=fossabot&limit=500

Antwort

{
  "logs": [{ "id": 1, "iso_timestamp": "...", "channel_name": "gronkh",
             "user": { "id": "...", "display-name": "...", "color": "#FF0000",
                       "badges": { "moderator": "https://static-cdn.jtvnw.net/..." } },
             "message": "Hallo!", "emotes": null, "msgId": "..." }],
  "total": 8432,
  "hasMore": true,
  "offset": 0
}

GET /api/logs/user/:id

Logs für einen Nutzer über alle geloggten Kanäle hinweg, paginiert.

Query-Parameter

  • from / to (string) – Zeitraum als YYYY-MM-DD
  • date (string) – Einzelner Tag (Rückwärtskompatibilität)
  • limit / offset – Pagination

Beispiel

/api/logs/user/26335497?from=2026-06-01&to=2026-06-06

Statistik-Endpunkte

Alle Statistik-Endpunkte akzeptieren den Query-Parameter range (7d, 30d, 90d, 365d, all) und optional channel (Twitch-Channel-ID).

GET /api/stats/top-users

Die aktivsten Nutzer nach Nachrichtenanzahl im gewählten Zeitraum.

/api/stats/top-users?range=30d&channel=43683025
[{ "id": "237719657", "name": "fossabot", "display_name": "Fossabot", "total": 1234 }]

GET /api/stats/top-channels

Die aktivsten Kanäle nach Nachrichtenanzahl im gewählten Zeitraum.

/api/stats/top-channels?range=7d
[{ "id": "43683025", "name": "ohnepixel", "total": 54321 }]

GET /api/stats/multi-channel-users

Nutzer, die in den meisten verschiedenen Kanälen aktiv waren.

/api/stats/multi-channel-users?range=30d
[{ "id": "...", "name": "someuser", "channel_count": 42, "total_messages": 999 }]

GET /api/stats/top-emotes

Meistgenutzte Twitch-Emotes nach Verwendungsanzahl.

/api/stats/top-emotes?range=7d&channel=43683025
[{ "emote_id": "425618", "total": 1234 }]

GET /api/stats/activity

Tägliche Nachrichtenanzahl für Aktivitäts-Charts.

/api/stats/activity?range=30d
[{ "day": "2026-06-06", "count": 84321 }]

Share-Endpunkte

POST /api/share

Erstellt einen teilbaren Link. Der Aufruf gibt eine kurze ID zurück, unter der die Auswahl dauerhaft abrufbar ist.

Body (JSON)

  • Channel-Logs teilen: { "kind": "channel", "channelId": "43683025", "from": "2026-06-06", "to": "2026-06-06" }
  • User-gefilterte Channel-Logs: { "kind": "channel-user", "channelId": "...", "userId": "...", "from": "...", "to": "..." }
  • User-Logs teilen: { "kind": "user", "userId": "...", "from": "...", "to": "..." }
  • Auswahl teilen: { "kind": "selection", "msgIds": [123, 456, 789] } (max. 500 IDs)

Antwort

{ "id": "w8QLk6rZgIU", "url": "/s/w8QLk6rZgIU" }

GET /api/share/:id

Ruft einen Share anhand seiner ID ab. Gibt die gespeicherten Metadaten und die zugehörigen Logs zurück.

{
  "share": { "id": "w8QLk6rZgIU", "kind": "channel", "createdAt": 1780781692072,
             "payload": { "channelId": "43683025", "from": "2026-06-06", "to": "2026-06-06" } },
  "logs": [...]
}

Helfer-Endpunkte

GET /api/resolve/user/:name

Wandelt einen Twitch-Benutzernamen in ID + Metadaten um. Sucht zuerst in der lokalen DB, dann per Twitch-API.

/api/resolve/user/gronkh  →  { "id": "12875057", "name": "gronkh", "display_name": "Gronkh" }

GET /api/resolve/id/:id

Wandelt eine Twitch-ID in Nutzermetadaten um.

/api/resolve/id/12875057  →  { "id": "12875057", "name": "gronkh", "display_name": "Gronkh" }

Admin-Endpunkte sind nur im Admin-Panel dokumentiert.