The AgentEyes Control API
4 min read
The running AgentEyes app serves a local REST Control API so a script or an agent can drive the recorder without touching the tray window - read what it is doing, start and stop recordings, take screenshots, and run import, translate, and subtitle. It is the same engine the app uses, exposed over plain JSON.
Address and scope
The API binds to 127.0.0.1:7882 only - the loopback address. It is reachable from the machine it runs on and nowhere else; nothing it does crosses the network. GET / returns a discovery document that lists every endpoint, and GET /health and GET /version confirm it is up.
Read state
/status/devices/presets/recordings?limit= and ?offset= to page. GET /recordings/{id} fetches one (with the languages it carries), GET /recordings/{id}/shots lists its screenshots, and GET /recordings/{id}/transcript returns its transcript./capturesRecord and capture
/record/startpreset name supplies the defaults; explicit fields override them. Fields: preset?, mode, screen, source, mic?, region?, denoise?, gate?, level?, micVol?, sysVol?, fps?./record/shot/record/stop/screenshot{ "screen": 1, "region": [x,y,w,h] } (region optional)./capture{ "mode": "full" | "monitor" | "region", "screen"?, "region"? }./dictateImport, translate, subtitle
/import{ "path": "C:/.../video.mp4" }. Synchronous; returns the new recording id and dir./transcripts/{id}/translate{ "to": "tr" }. Returns language, cues, and the vtt file name./recordings/{id}/subtitle{ "language": "tr" }. Returns the output file name.Example
# 1) import - returns { "id": "...", "dir": "..." }
curl.exe -s -X POST http://127.0.0.1:7882/import \
-H "Content-Type: application/json" \
--data-binary "{ \"path\": \"C:/Users/me/Videos/Weekly sync.mp4\" }"
# 2) translate the transcript into Turkish
curl.exe -s -X POST http://127.0.0.1:7882/transcripts/<id>/translate \
-H "Content-Type: application/json" \
--data-binary "{ \"to\": \"tr\" }"
# 3) burn the Turkish captions into a new video
curl.exe -s -X POST http://127.0.0.1:7882/recordings/<id>/subtitle \
-H "Content-Type: application/json" \
--data-binary "{ \"language\": \"tr\" }"{ "error": "...", "code": "..." } - with a matching HTTP status: 400 for bad input, 404 for an unknown recording, 409 for a lifecycle conflict such as starting a recording while one is already running.Where to go next
For one-off commands rather than driving a running app, see the CLI reference. For the features these endpoints expose, see Import a video and Multilingual subtitles.