Skip to content

Live Activity & Rich Presence

Live Activity shows your active players and what they’re currently doing in your game. Updates flow in real-time via WebSocket, perfect for social features and live moderation.

# Update presence when player takes actions
QuestData.update_presence({
"status": "playing",
"activity": "dungeon_run",
"level": 5,
"party_size": 3,
"last_action": "combat"
})
# When entering boss fight
QuestData.update_presence({
"status": "playing",
"activity": "boss_fight",
"boss_name": "Dragon Lord",
"hp_remaining": 45.5
})
# When waiting for matchmaking
QuestData.update_presence({
"status": "waiting",
"activity": "matchmaking",
"queue_time_seconds": 30,
"queue_position": 15
})
# When idle
QuestData.update_presence({
"status": "idle",
"activity": "menu"
})

The Live Activity page shows all currently active players:

ColumnShows
Player IDUnique identifier
StatusPlaying, Waiting, Idle, Offline
ActivityCurrent activity name
Time ActiveDuration of current session
Last UpdatedSeconds since last update

Filter by:

  • Playing: In active gameplay
  • Waiting: Queue, matchmaking, loading
  • Idle: Menu, afk
  • All Active: Everyone online (last 5 min activity)

For Steam games, integrate with Steam Rich Presence:

# Set Steam Rich Presence state
var presence_state = "dungeon:level_5"
OS.set_environment("SteamOverlayNotificationPosition", "topright")
# Steam friends see your activity
QuestData.update_presence({
"status": "playing",
"activity": "dungeon_run",
"level": 5,
"steam_state": presence_state # Steam sees this
})

Use Live Activity to spot issues:

  1. Farming Detection: Same activity for 2+ hours = suspicious
  2. Server Overload: Activity spike = load testing time
  3. Event Monitoring: See event participation in real-time
  4. Crash Debugging: “Player X was doing Y when they crashed”

Presence entries expire after 10 minutes of inactivity and are marked Offline.

Terminal window
# Get all active players
curl "https://api.questdata.io/v1/presence?status=playing" \
-H "x-game-api-key: YOUR_API_KEY"
# Get single player's presence
curl "https://api.questdata.io/v1/presence/player123" \
-H "x-game-api-key: YOUR_API_KEY"

Response:

{
"active_count": 250,
"players": [
{
"player_id": "player123",
"status": "playing",
"activity": "boss_fight",
"data": { "boss_name": "Dragon Lord", "hp": 45.5 },
"last_updated": "2026-04-06T10:30:15Z"
}
]
}