Skip to content

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)

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.

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).

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.