ContentsHTTP API

HTTP API

Connection

Base URL http://<mac-ip>:<port>/api
Port Random per launch. Fixed ports: Session Manager → Advanced (default 5659)
Reads GET
Writes POST, JSON body
Responses JSON
Indices 1-based (Track 1 = 1)

Approval

The first request from a new IP shows up as pending in the WildTrax Session Manager and returns 202. Approve it, then enable Write to send commands.

curl http://192.168.1.42:5659/api/hello
curl -X POST http://192.168.1.42:5659/api/record/start
curl -X POST http://192.168.1.42:5659/api/track/mute -d '{"trackIndex":1,"value":true}'

Status codes

Code Meaning
200 OK. Writes return {"status":"ok"}
202 Awaiting approval
400 Invalid JSON
402 Needs a higher WildTrax plan on the host: {"error":"tier_required","requiredTier":…}
403 Approved without Write
404 Unknown route or index
405 Wrong method
409 Blocked while recording
429 Record/stop sent within 250 ms of the last one

Reads

Route Returns
GET /api/hello {"app","version","status"} — status: pending_approval approved approved_readonly
GET /api/record/state {"recording":bool}
GET /api/session/state Full state snapshot
GET /api/metadata {"metadata","nextMetadata"}
GET /api/tracks {"tracks":[…]}
GET /api/soundboard/{i} One pad
GET /api/playlist/{i} One row
GET /api/exportfiles/{i} One export file
GET /api/soundreport/{i} One sound report entry
GET /api/soundreport/csv?folder= {"folder","csv"}
GET /api/matrix/{input\|output} {"which","rows","cols","rowLabels","colLabels","cells"}
GET /api/session/clients/{i} One connected client

Writes

Transport

Route Body
/api/record/start
/api/record/stop
/api/record/falsestart Asks for confirmation on the host
/api/record/falsestart/confirmed Discards the take

Tracks

Route Body
/api/track/arm {"trackIndex":1,"value":true}
/api/track/mute {"trackIndex":1,"value":true}
/api/track/monitor {"trackIndex":1,"value":true}
/api/track/pan {"trackIndex":1,"pan":2}
/api/track/name {"trackIndex":1,"name":"Boom"}
/api/track/add
/api/track/remove {"trackIndex":1}
/api/track/count {"count":8}

Metadata

Route Body
/api/metadata/{project\|scene\|slate\|take\|roll\|note} {"value":"SC07"}
/api/metadata/next/{project\|scene\|slate\|take\|roll} {"value":"SC08"}
/api/metadata/next/reset
/api/metadata/autoincrement/{slate\|take\|roll} {"value":true}
/api/metadata/autoreset/{slate\|take\|roll} {"value":true}
/api/metadata/marker/add
/api/metadata/notebank/add {"note":"Plane overhead"}
/api/metadata/notebank/remove {"index":1}
/api/metadata/notebank/insert {"noteIndex":1}

Config

Route Body
/api/config/preroll {"value":true}
/api/config/preroll/full {"prerollEnabled":true,"prerollSize":3}
/api/config/smoothness {"value":0.5} (0–1)
/api/config/monitor {"value":true}
/api/playback/volume {"value":80} (0–100)
/api/matrix/cell {"matrix":"input","row":1,"col":1,"value":true}

Soundboard

Route Body
/api/soundboard/play {"padIndex":1}
/api/soundboard/stop {"padIndex":1}
/api/soundboard/pad/add
/api/soundboard/pad/remove {"padIndex":1}
/api/soundboard/pad/move {"fromIndex":1,"toIndex":3}
/api/soundboard/pad/title {"padIndex":1,"title":"FX"}
/api/soundboard/pad/color {"padIndex":1,"color":"#ff0000"}
/api/soundboard/pad/{fadein\|fadeout\|repeat\|solo} {"padIndex":1,"value":true}
/api/soundboard/pad/triggermode {"padIndex":1,"triggerMode":1}
/api/soundboard/pad/routingmode {"padIndex":1,"routingMode":0}
/api/soundboard/pad/routing/cell {"padIndex":1,"srcChannel":1,"dstChannel":2,"value":1.0}
/api/soundboard/pad/routing/init {"padIndex":1}

Playlist

Route Body
/api/playlist/play
/api/playlist/stop
/api/playlist/loop {"value":true}
/api/playlist/index {"index":2}
/api/playlist/row/add
/api/playlist/row/remove {"rowIndex":1}
/api/playlist/row/move {"fromIndex":1,"toIndex":2}
/api/playlist/row/title {"rowIndex":1,"title":"Cue"}
/api/playlist/row/color {"rowIndex":1,"color":"#00ff00"}
/api/playlist/row/routingmode {"rowIndex":1,"routingMode":0}
/api/playlist/row/routing/cell {"rowIndex":1,"srcChannel":1,"dstChannel":2,"value":1.0}
/api/playlist/row/routing/init {"rowIndex":1}

Export files

Route Body
/api/exportfiles/add
/api/exportfiles/remove {"fileIndex":1}
/api/exportfiles/update {"fileIndex":1,"field":"name","value":"Mix"} — field: name folder fileFormat trackExportType selectAllTracks
/api/exportfiles/track/toggle {"fileIndex":1,"trackIndex":3}
/api/exportfiles/resolvednames {"value":true}

Sound report

Route Body
/api/soundreport/autosave {"value":true}
/api/soundreport/entry {"row":1,"field":"circled","value":true} — field: timecode circled note project scene slate take roll fps trackName (+ trackIndex)

Values

Field Values
pan 0 left · 1 right · 2 center
triggerMode 0 latched · 1 momentary
routingMode 0 auto · 1 stereo · 2 mono left · 3 mono right · 4 mono center · 5 custom

Live meters and spectrum are only available over OSC.