Editor sessions
Each open Unreal editor signed in to Prophouse sends a heartbeat every few seconds. That heartbeat is how Prophouse knows which of your editors are online, which project each has open, and whether it accepts imports started by AI agents. It also hands the editor any queued pull jobs created with delivery: "agent".
| Method and path | Scope | Purpose |
|---|---|---|
GET /editor-sessions |
read | Your recently seen editors |
DELETE /editor-sessions/{session_id} |
write | Mark an editor offline |
POST /editor-sessions/heartbeat |
write | Editor presence (sent by the Unreal plugin) |
GET /editor-sessions
Section titled “GET /editor-sessions”Your own editor sessions seen in the last 24 hours, most recent first:
{ "sessions": [ { "session_id": "8C4F1B2A-3D5E-4F60-9A1B-2C3D4E5F6071", "project_key": "ColdStorage", "engine_version": "5.8.0", "plugin_version": "<plugin version>", "machine": "WORKSTATION-07", "default_root": "/Game/Prophouse", "accepts_agent_imports": true, "transfer_mode": "agent", "desktop_agent": "live", "busy_job_id": null, "last_error": null, "heartbeat_interval_seconds": 15, "started_at": "2026-07-25T09:00:00Z", "last_seen_at": "2026-07-25T12:00:00Z", "seconds_since_seen": 4, "online": true } ]}| Field | Description |
|---|---|
project_key |
The open project’s name. Agent-delivered pull jobs go to editors whose project_key equals the job’s target_project. |
accepts_agent_imports |
Whether the person turned on agent imports in this editor. |
desktop_agent |
State of the desktop app’s transfer service on that machine: live, launchable, unavailable, not_required or unknown. |
busy_job_id |
The pull job the editor is working on, if any. |
last_error |
The latest agent-import failure the editor reported, up to 500 characters. |
online |
true when the editor was seen within three heartbeat intervals plus 15 seconds. |
DELETE /editor-sessions/{session_id}
Section titled “DELETE /editor-sessions/{session_id}”Marks the session offline immediately (the plugin calls it when the editor closes). Returns 204, also if the session is already gone. Only the session’s owner or an admin (403 otherwise).
POST /editor-sessions/heartbeat
Section titled “POST /editor-sessions/heartbeat”Sent by the Unreal plugin. Documented for completeness.
{ "session_id": "8C4F1B2A-3D5E-4F60-9A1B-2C3D4E5F6071", "project_key": "ColdStorage", "accepts_agent_imports": true, "heartbeat_interval_seconds": 15, "engine_version": "5.8.0", "default_root": "/Game/Prophouse", "transfer_mode": "agent", "desktop_agent": "live", "busy_job_id": null, "last_error": null}| Field | Type | Description |
|---|---|---|
session_id |
string, required | One per editor process: 8 to 64 characters of letters, digits and -. |
project_key |
string, required | Project name. |
accepts_agent_imports |
boolean, required | |
heartbeat_interval_seconds |
integer, required | 5 to 3,600. |
engine_version, plugin_version, machine |
string | Informational, up to 200 characters. |
default_root |
string | /Game folder. |
transfer_mode |
string | agent or legacy. |
desktop_agent |
string | As above. |
busy_job_id, last_error |
As above. null clears last_error. |
Returns {"session_id", "server_time", "agent_jobs": [job]}. agent_jobs lists up to 20 queued delivery: "agent" pull jobs requested by the same person for this exact project, oldest first, and is always empty when accepts_agent_imports is false. The editor then claims and runs them through the normal pull-job lifecycle. A session id that belongs to someone else is 409 CONFLICT. Sessions not seen for 7 days are removed.
