HTTP API
The remote script inside Ableton runs a tiny localhost HTTP server. It's how the keyboard detector triggers actions — and it's open for you to call from a Stream Deck, a script, or any external gear. Think of it as an OSC-like control surface over plain HTTP.
Base URL
http://127.0.0.1:9000
- Localhost only. The server binds to
127.0.0.1, so it's never reachable from the network — your data stays on the machine. - Port
9000. - GET-only. Every endpoint is a
GET; mutations pass their arguments as query parameters. This keeps callers (and Stream Deck buttons) trivially simple. - Available whenever Ableton is open with the Protocol 0 control surface enabled.
Visit http://127.0.0.1:9000/ in a browser for a live index of every registered endpoint, its parameters, and its description.
Responses
| Handler returns | Response |
|---|---|
| An object / list | application/json |
| Text | text/html |
| Nothing | 200 OK, no body (fire-and-forget) |
Error codes:
| Code | Meaning |
|---|---|
400 | Missing or invalid query parameter |
404 | No such route |
500 | The handler raised an error |
504 | The action didn't complete in time on Live's thread |
Action endpoints
These drive Live directly. They're the same calls a keyboard shortcut makes under the hood.
Load a device
GET /device/load?name=<str>
Loads a device (instrument or audio effect) by name onto the selected track.
GET /device/load?name=EQ%20Eight
Select a track
GET /track/select?name=<str>
Selects a track by name. Pass name=master to select the master track.
Stop following the playhead
GET /song/toggle_follow
Stops Live from following the playhead in the arrangement view.
Some routes exist but aren't yet exposed in the shortcut catalog the web UI shows. They're still callable directly over HTTP. The set of routes grows over time — the live index at / is always the source of truth.
Shortcut-management endpoints
The web UI is built on these — you can use them to manage bindings programmatically too.
| Endpoint | Returns |
|---|---|
GET /shortcuts | The HTML configuration UI |
GET /actions | JSON list of discoverable actions and their parameters |
GET /shortcuts/list | JSON list of the current bindings |
GET /shortcuts/add?combo=&action=¶ms= | Adds or replaces a binding |
Adding a binding
GET /shortcuts/add?combo=<str>&action=<str>¶ms=<json>
combo— canonical combo, e.g.ctrl+alt+eaction— action name, e.g.load_deviceparams— URL-encoded JSON object (defaults to{})
# Bind Ctrl+Alt+E to load EQ Eight
GET /shortcuts/add?combo=ctrl%2Balt%2Be&action=load_device¶ms=%7B%22name%22%3A%22EQ%20Eight%22%7D
The unencoded params there is {"name":"EQ Eight"}.
Example: a Stream Deck button
Point any "open URL" / "website" button at an action endpoint:
http://127.0.0.1:9000/device/load?name=Utility
Pressing the button loads a Utility device onto the selected track — no keyboard shortcut required.