Bramble bridge (BRM-API)
How Flows reaches RMM devices: list devices and run a script on one as the flow's owner. Used by Flows itself with X-Flows-Key; not for outside callers.
| Method | Path | Summary |
|---|---|---|
| GET | /v1/flows/devices | Devices a flow's owner can use |
| POST | /v1/flows/devices/:id/run | Run a script on a device for a flow |
| GET | /v1/flows/commands/:id | Result of a device script |
#Devices a flow's owner can use
GET
/v1/flows/devices- Address
https://<your-org>.brambleit.cloud/api/v1/flows/devices- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.
Permission (any of):rmm.devices.view.
Query parameters
| Name | Type | Description |
|---|---|---|
q | any |
Response 200
| Field | Type | Description |
|---|---|---|
devices | array of any |
Example response
JSON
{
"devices": []
}Example request
Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/flows/devices' \
-H "X-API-Key: $BRAMBLE_KEY"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/flows/devices', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/flows/devices",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/flows/devices' -Headers $headers#Run a script on a device for a flow
POST
/v1/flows/devices/:id/run- Address
https://<your-org>.brambleit.cloud/api/v1/flows/devices/:id/run- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.
Permission (any of):rmm.scripts.run.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | string |
Request body JSON
| Name | Type | Description |
|---|---|---|
language | any | |
script | any | |
args | array of any | |
timeout_seconds | number | |
name | string |
Response 201
| Field | Type | Description |
|---|---|---|
command_id | integer | |
device | any |
Example response
JSON
{
"command_id": 7,
"device": null
}Errors
| Status | Message |
|---|---|
| 400 | Unsupported language: … |
| 400 | The script is empty |
| 400 | The script is too long (200 KB at most) |
| 404 | Device not found |
Example request
Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/flows/devices/string/run' \
-H "X-API-Key: $BRAMBLE_KEY" \
-H "Content-Type: application/json" \
-d '{"language":"…","script":"…","args":[],"timeout_seconds":12.5,"name":"Example name"}'JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/flows/devices/string/run', {
method: 'POST',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({"language":"…","script":"…","args":[],"timeout_seconds":12.5,"name":"Example name"}),
});
const data = await res.json();Python
import os, requests
r = requests.post(
"https://<your-org>.brambleit.cloud/api/v1/flows/devices/string/run",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
json={"language":"…","script":"…","args":[],"timeout_seconds":12.5,"name":"Example name"},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
$body = '{"language":"…","script":"…","args":[],"timeout_seconds":12.5,"name":"Example name"}'
Invoke-RestMethod -Method POST -Uri 'https://<your-org>.brambleit.cloud/api/v1/flows/devices/string/run' -Headers $headers -ContentType 'application/json' -Body $body#Result of a device script
GET
/v1/flows/commands/:id- Address
https://<your-org>.brambleit.cloud/api/v1/flows/commands/:id- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.
Permission (any of):rmm.scripts.run.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | number |
Response 200
| Field | Type | Description |
|---|---|---|
id | integer | |
status | string | |
exit_code | any | |
stdout | any | |
stderr | any | |
timed_out | boolean | |
created_at | string (date-time) | |
started_at | string (date-time) | |
finished_at | string (date-time) |
Example response
JSON
{
"id": 42,
"status": "active",
"exit_code": null,
"stdout": null,
"stderr": null,
"timed_out": false,
"created_at": "2026-11-12T09:30:00.000Z",
"started_at": "2026-11-12T09:30:00.000Z",
"finished_at": "2026-11-12T09:30:00.000Z"
}Errors
| Status | Message |
|---|---|
| 404 | Command not found |
Example request
Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/flows/commands/12.5' \
-H "X-API-Key: $BRAMBLE_KEY"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/flows/commands/12.5', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/flows/commands/12.5",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/flows/commands/12.5' -Headers $headersWas this page helpful?
Thanks for your feedback.