You need to be an Owner of your Organization. Go to the org Page and create an API Key:
https://auth.wejam.ai/org/api_keys/

data-export EndpointSwagger: https://api.wejam.ai/docs#/data-export
Redoc: https://redocly.github.io/redoc/?url=https://api.wejam.ai/docs-json#tag/data-export/operation/DataExportController_findUsers_v1
Create file most_active_user.py
# /// script
# dependencies = [
# "requests<3",
# "pandas",
# ]
# ///
from typing import Any
import pandas as pd
import requests
API_KEY: str = "YOUR_JAM_API_KEY"
BASE_URL: str = "<https://api.wejam.ai/api/v1/data-exports>"
HEADERS: dict[str, str] = {"accept": "application/json", "X-API-KEY": API_KEY}
def fetch_paginated(endpoint: str) -> list[dict[str, Any]]:
page: int = 1
results: list[dict[str, Any]] = []
while True:
url: str = f"{BASE_URL}/{endpoint}?page={page}&limit=100"
response: requests.Response = requests.get(url, headers=HEADERS, timeout=10)
response.raise_for_status()
data: dict[str, Any] = response.json()
results.extend(data["data"])
if not data["meta"].get("hasNext"):
break
page += 1
return results
def main() -> None:
users_data: list[dict[str, Any]] = fetch_paginated("users")
sessions_data: list[dict[str, Any]] = fetch_paginated("sessions")
# Convert to DataFrames
df_sessions: pd.DataFrame = pd.DataFrame(sessions_data)
df_users: pd.DataFrame = pd.DataFrame(users_data)
# Count sessions per user
session_counts: pd.DataFrame = (
df_sessions["learnerUserId"].value_counts().rename_axis("userId").reset_index(name="sessionCount")
)
# Join with users
df_users["userId"] = df_users["id"]
df_merged: pd.DataFrame = session_counts.merge(df_users, on="userId", how="left")
# Get most active user
most_active_user: pd.Series = df_merged.sort_values(by="sessionCount", ascending=False).iloc[0]
print("Most Active User:")
print(f"Name: {most_active_user['firstName']} {most_active_user['lastName']}")
print(f"Email: {most_active_user['email']}")
print(f"Sessions: {most_active_user['sessionCount']}")
if __name__ == "__main__":
main()
Execute using uv (https://docs.astral.sh/uv/)
uv run most_active_user.py
