Workbrew API

Version: v0

Your User API key will be copied in all the examples here, so you can test any example right away. Only you can see this value. You can find your User API key in your user settings.

Prefix the API key with Bearer and pass that value as the Authorization header.

Example cURL command:
curl -X GET \
  -H "Authorization: Bearer " \
  -H "X-Workbrew-API-Version: v0" \
  -H "Accept: application/json" \
  "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/devices.json"

The Swagger definition file is available here.

GET /workspaces/${workspace_name}/analytics.json Returns a list of Analytics
Parameters
Name Description Parameter Location Type Required
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
Example cURL command
curl -X GET \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/analytics.json"
Responses
200 Analytics Found
[
  {
    "device": "TC6R2DHVHG",
    "command": "brew install curl",
    "last_run": "2024-01-01T12:34:56Z",
    "count": 2
  }
]
GET /workspaces/${workspace_name}/analytics.csv Returns a list of Analytics
Parameters
Name Description Parameter Location Type Required
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
Example cURL command
curl -X GET \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/analytics.csv"
Responses
200 Analytics Found
device,command,last_run,count
TC6R2DHVHG,brew install curl,2024-01-01T12:34:56Z,2
TC6R2DHVHG,brew install wget,2024-02-03T08:22:33Z,1
TC6R2DHVHG,brew info curl,2024-04-15T14:45:22Z,1
GET /workspaces/${workspace_name}/brew_commands/${brew_command_label}/runs.json Returns a list of Brew Command Runs
Parameters
Name Description Parameter Location Type Required
brew_command_label Brew Command Label path string
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
Example cURL command
curl -X GET \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/brew_commands/${BREW_COMMAND_LABEL}/runs.json"
Responses
200 Brew Command Runs Found
[
  {
    "command": "brew outdated",
    "label": "outdated",
    "device": "TC6R2DHVHG",
    "created_at": "2023-11-01T12:34:56.000Z",
    "updated_at": "2023-11-01T21:43:12.000Z",
    "success": true,
    "output": "curl\ngit",
    "started_at": "2023-11-01T12:34:56.000Z",
    "finished_at": "2023-11-01T21:43:12.000Z"
  }
]
GET /workspaces/${workspace_name}/brew_commands/${brew_command_label}/runs.csv Returns a list of Brew Command Runs
Parameters
Name Description Parameter Location Type Required
brew_command_label Brew Command Label path string
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
Example cURL command
curl -X GET \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/brew_commands/${BREW_COMMAND_LABEL}/runs.csv"
Responses
200 Brew Command Runs Found
command,label,device,created_at,updated_at,success,output,started_at,finished_at
brew outdated,outdated,TC6R2DHVHG,2025-07-03 12:50:45 UTC,2025-07-03 12:50:45 UTC,true,c-ares\nlibuv,2023-11-01 12:34:56 UTC,2023-11-01 21:43:12 UTC
brew outdated,outdated,1234567890,2025-07-03 12:50:45 UTC,2025-07-03 12:50:45 UTC,false,python-argcomplete,2023-11-01 12:34:56 UTC,2023-11-01 21:43:12 UTC
GET /workspaces/${workspace_name}/brewfiles/${label}/runs.json Returns a list of Brewfile Runs
Parameters
Name Description Parameter Location Type Required
label Brewfile Label path string
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
Example cURL command
curl -X GET \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/brewfiles/${LABEL}/runs.json"
Responses
200 Brewfile Runs Found
[
  {
    "label": "bundle-file",
    "device": "TC6R2DHVHG",
    "created_at": "2023-11-01T12:34:56.000Z",
    "updated_at": "2023-11-01T21:43:12.000Z",
    "success": true,
    "output": "Using git\n`brew bundle` complete! 1 Brewfile dependency now installed.",
    "started_at": "2023-11-01T12:34:56.000Z",
    "finished_at": "2023-11-01T21:43:12.000Z"
  }
]
GET /workspaces/${workspace_name}/brewfiles/${label}/runs.csv Returns a list of Brewfile Runs
Parameters
Name Description Parameter Location Type Required
label Brewfile Label path string
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
Example cURL command
curl -X GET \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/brewfiles/${LABEL}/runs.csv"
Responses
200 Brewfile Runs Found
label,device,created_at,updated_at,success,output,started_at,finished_at
bundle-file,TC6R2DHVHG,2025-07-03 12:50:45 UTC,2025-07-03 12:50:45 UTC,false,"",Not Started,Not Finished
GET /workspaces/${workspace_name}/brew_commands.json Returns a list of Brew Commands
Parameters
Name Description Parameter Location Type Required
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
Example cURL command
curl -X GET \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/brew_commands.json"
Responses
200 Brew Commands Found
[
  {
    "command": "brew outdated",
    "label": "outdated",
    "last_updated_by_user": "mikemcquaid",
    "started_at": "2023-11-01T12:34:56.000Z",
    "finished_at": "2023-11-01T21:43:12.000Z",
    "devices": [
      "TC6R2DHVHG"
    ],
    "run_count": 2
  }
]
POST /workspaces/${workspace_name}/brew_commands.json Creates a new Brew Command
Parameters
Name Description Parameter Location Type Required
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
Request Body
Name Format Example Required
arguments install wget
device_ids Uuid c206cdc6-f01c-5859-899d-7fd0a546e888,f7b3bb3c-6b3e-5e3a-bcb5-66c49e1c5fcb
run_after_datetime Date Time 2025-01-10T10:09
recurrence Once, Daily, Weekly, Monthly once
Example cURL command
curl -X POST \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -d '{"arguments":"install wget"}' \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/brew_commands.json"
Responses
201 Brew Command created
{
  "message": "Brew Command was successfully created."
}
403 On a Free tier plan
{
  "message": "An error occurred when trying to create Brew Command",
  "errors": [
    "Please upgrade your plan to get access to Brew Commands."
  ]
}
422 Error
{
  "message": "An error occurred when trying to create Brew Command",
  "errors": [
    "Arguments cannot include `&&`"
  ]
}
GET /workspaces/${workspace_name}/brew_commands.csv Returns a list of Brew Commands
Parameters
Name Description Parameter Location Type Required
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
Example cURL command
curl -X GET \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/brew_commands.csv"
Responses
200 Brew Commands Found
command,label,last_updated_by_user,started_at,finished_at,devices,run_count
brew outdated,outdated,mikemcquaid,2023-11-01 12:34:56 UTC,2023-11-01 21:43:12 UTC,"",2
brew list --versions --formula,list-versions-formula,onboarded,2023-11-01 12:34:56 UTC,Not Finished,TC6R2DHVHG,1
brew list --versions --cask,list-versions-cask,onboarding,Not Started,Not Finished,"",1
brew --version,version,mikemcquaid,Not Started,Not Finished,"",0
brew install git,install-git,mikemcquaid,Not Started,Not Finished,"",0
brew install zx,install-zx,mikemcquaid,Not Started,Not Finished,"",0
brew install node,install-node,mikemcquaid,Not Started,Not Finished,"",0
brew install deno,install-deno,mikemcquaid,Not Started,Not Finished,"",0
brew install ruby,install-ruby,mikemcquaid,Not Started,Not Finished,"",0
brew install javascript,install-javascript,mikemcquaid,Not Started,Not Finished,"",0
brew install rust,install-rust,mikemcquaid,Not Started,Not Finished,"",0
brew install golang,install-golang,mikemcquaid,Not Started,Not Finished,"",0
brew install c++,install-c++,mikemcquaid,Not Started,Not Finished,"",0
brew install nonexistent,install-nonexistent,mikemcquaid,2023-11-01 12:34:56 UTC,2023-11-01 21:43:12 UTC,"",1
brew install hello,install-hello,mikemcquaid,Not Started,Not Finished,"",0
brew upgrade curl,upgrade-curl,mikemcquaid,2024-11-01 12:34:56 UTC,2024-11-01 21:43:12 UTC,"",1
brew upgrade ack,upgrade-ack,mikemcquaid,2024-11-01 12:34:56 UTC,2024-11-01 21:43:12 UTC,"",1
GET /workspaces/${workspace_name}/brew_configurations.json Returns a list of Brew Configurations
Parameters
Name Description Parameter Location Type Required
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
Example cURL command
curl -X GET \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/brew_configurations.json"
Responses
200 Brew Configurations Found
[
  {
    "key": "HOMEBREW_DEVELOPER",
    "value": "1",
    "last_updated_by_user": "mikemcquaid",
    "device_group": "All Devices"
  }
]
GET /workspaces/${workspace_name}/brew_configurations.csv Returns a list of Brew Configurations
Parameters
Name Description Parameter Location Type Required
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
Example cURL command
curl -X GET \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/brew_configurations.csv"
Responses
200 Brew Configurations Found
key,value,last_updated_by_user,device_group
HOMEBREW_DEVELOPER,1,mikemcquaid,All Devices
HOMEBREW_API_AUTO_UPDATE_SECS,1,mikemcquaid,All Devices
HOMEBREW_FORBIDDEN_FORMULAE,util-linux ruby,mikemcquaid,All Devices
HOMEBREW_FORBIDDEN_CASKS,1password-cli,mikemcquaid,All Devices
GET /workspaces/${workspace_name}/brew_taps.json Returns a list of Taps
Parameters
Name Description Parameter Location Type Required
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
Example cURL command
curl -X GET \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/brew_taps.json"
Responses
200 Taps Found
[
  {
    "tap": "Homebrew/homebrew-core",
    "devices": [
      "TC6R2DHVHG",
      "1234567890"
    ],
    "formulae_installed": 10,
    "casks_installed": 0,
    "available_packages": "16 Formulae"
  }
]
GET /workspaces/${workspace_name}/brew_taps.csv Returns a list of Taps
Parameters
Name Description Parameter Location Type Required
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
Example cURL command
curl -X GET \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/brew_taps.csv"
Responses
200 Taps Found
tap,devices,formulae_installed,casks_installed,available_packages
Homebrew/homebrew-core,"TC6R2DHVHG, 1234567890",10,0,7388 Formulae
Homebrew/homebrew-cask,TC6R2DHVHG,0,2,4901 Casks and 2411 Cask fonts
apple/apple,TC6R2DHVHG,1,0,>=1 Packages
workbrew/private,TC6R2DHVHG,0,1,>=1 Packages
GET /workspaces/${workspace_name}/casks.json Returns a list of Casks
Parameters
Name Description Parameter Location Type Required
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
Example cURL command
curl -X GET \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/casks.json"
Responses
200 Casks Found
[
  {
    "name": "logi-options+",
    "devices": [
      "TC6R2DHVHG",
      "1234567890"
    ],
    "outdated": true,
    "deprecated": "",
    "homebrew_cask_version": "8.11.0_1"
  }
]
GET /workspaces/${workspace_name}/casks.csv Returns a list of Casks
Parameters
Name Description Parameter Location Type Required
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
Example cURL command
curl -X GET \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/casks.csv"
Responses
200 Brew Packages Found
name,devices,outdated,deprecated,homebrew_cask_version
1password,"[""TC6R2DHVHG""]",true,"",8.10.75
1password-cli,"[""TC6R2DHVHG""]",true,"",2.31.0
logi-options+,"[""TC6R2DHVHG""]",true,"",1.89.705126
workbrew/private/workbrew,"[""TC6R2DHVHG""]",false,"",0.0.5
GET /workspaces/${workspace_name}/brewfiles.json Returns a list of Brewfiles
Parameters
Name Description Parameter Location Type Required
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
Example cURL command
curl -X GET \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/brewfiles.json"
Responses
200 Brewfiles with parameterized slugs
[
  {
    "last_updated_by_user": "onboarded",
    "started_at": "Not Started",
    "finished_at": "Not Finished",
    "devices": [],
    "run_count": 1
  }
]
403 On a Free tier plan
{
  "message": "Brewfiles API is not available on your current plan.",
  "errors": [
    "Brewfiles cannot be created or updated on a Workbrew Free subscription."
  ]
}
POST /workspaces/${workspace_name}/brewfiles.json Creates a new Brewfile
Parameters
Name Description Parameter Location Type Required
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
Request Body
Name Format Example Required
label my-brewfile
content brew "wget"
device_serial_numbers TC6R2DHVHG,1234567890
device_group_id ddba0af6-bd3c-5abf-8311-e62dc6bd9fbc
Example cURL command
curl -X POST \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -d '{"label":"my-brewfile","content":"brew \"wget\""}' \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/brewfiles.json"
Responses
201 Brewfile created (for a device group)
{
  "message": "Brewfile was successfully created."
}
403 On a Free tier plan
{
  "message": "Brewfiles API is not available on your current plan.",
  "errors": [
    "Brewfiles cannot be created or updated on a Workbrew Free subscription."
  ]
}
422 Error
{
  "message": "An error occurred when trying to create Brewfile",
  "errors": [
    "Please upgrade your plan to get access to Brew Commands."
  ]
}
GET /workspaces/${workspace_name}/brewfiles.csv Returns a list of Brewfiles
Parameters
Name Description Parameter Location Type Required
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
Example cURL command
curl -X GET \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/brewfiles.csv"
Responses
200 Brewfiles Found
last_updated_by_user,started_at,finished_at,devices,run_count
bundle-file,onboarded,Not Started,Not Finished,TC6R2DHVHG,1
DELETE /workspaces/${workspace_name}/brewfiles/${label}.json Deletes a Brewfile
Parameters
Name Description Parameter Location Type Required
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
label path string
Example cURL command
curl -X DELETE \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/brewfiles/${LABEL}.json"
Responses
200 Brewfile deleted
{
  "message": "Brewfile was successfully destroyed."
}
403 On a Free tier plan
{
  "message": "Brewfiles API is not available on your current plan.",
  "errors": [
    "Brewfiles cannot be created or updated on a Workbrew Free subscription."
  ]
}
PUT /workspaces/${workspace_name}/brewfiles/${label}.json Updates a Brewfile
Parameters
Name Description Parameter Location Type Required
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
label path string
Request Body
Name Format Example Required
content brew "wget" brew "htop"
device_serial_numbers 1234567890
device_group_id ddba0af6-bd3c-5abf-8311-e62dc6bd9fbc
Example cURL command
curl -X PUT \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -d '{"content":"brew \"wget\"\nbrew \"htop\""}' \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/brewfiles/${LABEL}.json"
Responses
200 Brewfile updated
{
  "message": "Brewfile was successfully updated."
}
422 Error
{
  "message": "An error occurred when trying to update Brewfile",
  "errors": [
    "Brewfile has an invalid line: tap \"foo/bar/baz\""
  ]
}
403 On a Free tier plan
{
  "message": "Brewfiles API is not available on your current plan.",
  "errors": [
    "Brewfiles cannot be created or updated on a Workbrew Free subscription."
  ]
}
GET /workspaces/${workspace_name}/device_groups.json Returns a list of Device Groups
Parameters
Name Description Parameter Location Type Required
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
Example cURL command
curl -X GET \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/device_groups.json"
Responses
200 Device Groups Found
[
  {
    "id": "ddba0af6-bd3c-5abf-8311-e62dc6bd9fbc",
    "name": "Admin",
    "devices": [
      "TC6R2DHVHG"
    ]
  }
]
GET /workspaces/${workspace_name}/device_groups.csv Returns a list of Device Groups
Parameters
Name Description Parameter Location Type Required
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
Example cURL command
curl -X GET \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/device_groups.csv"
Responses
200 Device Groups Found
id,name,devices
ddba0af6-bd3c-5abf-8311-e62dc6bd9fbc,Admin,
377d8aa2-64cd-56a6-8351-6163bcf7dca1,OSX 14,TC6R2DHVHG
GET /workspaces/${workspace_name}/devices.json Returns a list of devices
Parameters
Name Description Parameter Location Type Required
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
Example cURL command
curl -X GET \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/devices.json"
Responses
200 devices found
[
  {
    "serial_number": "TC6R2DHVHG",
    "groups": [
      "OSX 14"
    ],
    "mdm_user_or_device_name": "Mike's MacBook Pro",
    "last_seen_at": "2023-08-25T00:00:00.000Z",
    "command_last_run_at": "2024-01-01T00:00:00.000Z",
    "device_type": "MacBook Pro",
    "os_version": "macOS 14.0 (23A344)",
    "homebrew_prefix": "/opt/homebrew",
    "homebrew_version": "4.1.15-24-g5e78ba3",
    "workbrew_version": "0.2.1",
    "formulae_count": 9,
    "casks_count": 3
  }
]
GET /workspaces/${workspace_name}/devices.csv Returns a list of devices
Parameters
Name Description Parameter Location Type Required
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
Example cURL command
curl -X GET \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/devices.csv"
Responses
200 devices found
serial_number,groups,mdm_user_or_device_name,last_seen_at," \
          "command_last_run_at,device_type,os_version,homebrew_prefix,homebrew_version,workbrew_version," \
          "formulae_count,casks_count
TC6R2DHVHG,"[""OSX 14""]",Mike's MacBook Pro,2023-08-25 00:00:00 UTC,2024-01-01 00:00:00 UTC,MacBook Pro," \
  "macOS 14.0 (23A344),/opt/homebrew,4.1.15-24-g5e78ba3,0.2.1,9,3
1234567890,[],Never,Never,Mac mini,macOS 13,/usr/local,4.0.0,0.1.6-1-geb5f975,3,0
AB3456DG90,[],Never,Never,Unknown,Unknown,Unknown,Unknown,Unknown,0,0
d6297bb0816f4832af4067203686df26,[],Never,Never,MX33-BS1-V1,Ubuntu 5.15.0-124.134-generic 5.15.163,"\
  "/home/linuxbrew/.linuxbrew,Unknown,0.9.12,0,0
GET /workspaces/${workspace_name}/events.json Returns a list of audit log events
Parameters
Name Description Parameter Location Type Required
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
filter Filter by actor type: user, system, or all query
Example cURL command
curl -X GET \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/events.json"
Responses
200 update events include changes
[
  {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "event_type": "device.created",
    "occurred_at": "2024-03-01T10:00:00Z",
    "actor_id": null,
    "actor_type": "User",
    "target_id": null,
    "target_type": "Device",
    "target_identifier": "TC6R2DHVHG"
  }
]
GET /workspaces/${workspace_name}/events.csv Returns audit log events as CSV
Parameters
Name Description Parameter Location Type Required
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
filter Filter by actor type: user, system, or all query string
download Set to 1 to force download as attachment query string
Example cURL command
curl -X GET \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/events.csv"
Responses
200 CSV with download parameter
id,event_type,occurred_at,actor_id,actor_type,target_id,target_type,target_identifier
123e4567-e89b-12d3-a456-426614174000,device.created,2024-03-01T10:00:00Z,,,123e4567-e89b-12d3-a456-426614174001,Device,TC6R2DHVHG
GET /workspaces/${workspace_name}/formulae.json Returns a list of Formulae
Parameters
Name Description Parameter Location Type Required
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
Example cURL command
curl -X GET \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/formulae.json"
Responses
200 Brew Formulae Found
[
  {
    "name": "curl",
    "devices": [
      "TC6R2DHVHG",
      "1234567890"
    ],
    "outdated": true,
    "installed_on_request": false,
    "installed_as_dependency": true,
    "vulnerabilities": [
      "CVE-2024-2466",
      "THIS-IS-AN-INVALID-CVE-001"
    ],
    "deprecated": "",
    "license": [
      "curl"
    ],
    "homebrew_core_version": "8.11.0_1"
  }
]
GET /workspaces/${workspace_name}/formulae.csv Returns a list of Formulae
Parameters
Name Description Parameter Location Type Required
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
Example cURL command
curl -X GET \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/formulae.csv"
Responses
200 Formulae Found
name,devices,outdated,installed_on_request,installed_as_dependency,"\
          "vulnerabilities,deprecated,license,homebrew_core_version
curl,"TC6R2DHVHG, 1234567890",true,false,true,"CVE-2024-11053, CVE-2024-6197, CVE-2024-7264, CVE-2024-8096, "\
  "CVE-2024-9681, THIS-IS-AN-INVALID-CVE-001","",curl,8.11.1
actionlint,TC6R2DHVHG,true,false,false,"","",MIT,1.7.7
ack,TC6R2DHVHG,true,false,false,SOME-INVALID-CVE-001,"",Artistic-2.0,3.8.1
cweb,1234567890,true,false,false,"","",LicenseRef-Homebrew-cannot-represent,4.12.1
renovate,TC6R2DHVHG,true,false,false,GHSA-rqgv-292v-5qgr,"",AGPL-3.0-only,39.125.0
wget,TC6R2DHVHG,true,true,false,"CVE-2024-10524, SOME-INVALID-CVE-002","",GPL-3.0-or-later,1.25.0
zstd,1234567890,true,false,false,"","","(BSD-3-Clause OR GPL-2.0-only), BSD-2-Clause, MIT",1.5.6
apple/apple/game-porting-toolkit,TC6R2DHVHG,false,false,false,"","",,
rdup,TC6R2DHVHG,false,false,false,"",Disabled,GPL-3.0-or-later,1.1.15_2
flac,TC6R2DHVHG,false,false,false,"","","BSD-3-Clause, GPL-2.0-or-later, ISC, LGPL-2.0-or-later, " \
  "LGPL-2.1-or-later, LicenseRef-Homebrew-public-domain, (GPL-2.0-or-later OR LGPL-2.1-or-later)",1.4.3
rbenv-communal-gems,TC6R2DHVHG,false,false,false,"",Deprecated,MIT,1.0.1_1
GET /workspaces/${workspace_name}/licenses.json Returns a list of Licenses
Parameters
Name Description Parameter Location Type Required
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
Example cURL command
curl -X GET \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/licenses.json"
Responses
200 Licenses Found
[
  {
    "name": "GPL-3.0-or-later",
    "device_count": 2,
    "formula_count": 2
  }
]
GET /workspaces/${workspace_name}/licenses.csv Returns a list of Licenses
Parameters
Name Description Parameter Location Type Required
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
Example cURL command
curl -X GET \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/licenses.csv"
Responses
200 Licenses Found
name,device_count,formula_count
GPL-3.0-or-later,2,2
MIT,2,2
LicenseRef-Homebrew-cannot-represent,1,1
BSD-3-Clause AND GPL-2.0-or-later AND ISC AND LGPL-2.0-or-later AND LGPL-2.1-or-later AND LicenseRef-Homebrew-public-domain AND (GPL-2.0-or-later OR LGPL-2.1-or-later),1,1
(BSD-3-Clause OR GPL-2.0-only) AND BSD-2-Clause AND MIT,1,1
curl,1,1
Artistic-2.0,1,1
AGPL-3.0-only,1,1
Unknown,1,0
GET /workspaces/${workspace_name}/package_requests.json Returns a list of Package Requests
Parameters
Name Description Parameter Location Type Required
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
Example cURL command
curl -X GET \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/package_requests.json"
Responses
200 Package Requests Found
[
  {
    "id": "string",
    "package_name": "zoom",
    "package_type": "cask",
    "tap": "homebrew/cask",
    "status": "pending",
    "device": "TC6R2DHVHG",
    "scope_type": "Device",
    "scope_id": null,
    "decided_by": "mikemcquaid",
    "decision_reason": "Not approved for use in this workspace",
    "decided_at": null,
    "created_at": "string",
    "updated_at": "string"
  }
]
GET /workspaces/${workspace_name}/package_requests.csv Returns a list of Package Requests
Parameters
Name Description Parameter Location Type Required
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
Example cURL command
curl -X GET \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/package_requests.csv"
Responses
200 Package Requests Found
string
GET /workspaces/${workspace_name}/package_requests/${id}.json Returns a Package Request
Parameters
Name Description Parameter Location Type Required
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
id Package Request ID path string
Example cURL command
curl -X GET \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/package_requests/${ID}.json"
Responses
200 Package Request Found
{
  "package_request": {
    "id": "string",
    "package_name": "docker",
    "package_type": "cask",
    "tap": "homebrew/cask",
    "status": "pending",
    "device": {
      "id": "string",
      "serial_number": "string"
    },
    "decision_reason": null,
    "decided_at": null,
    "created_at": "string",
    "updated_at": "string"
  }
}
PATCH /workspaces/${workspace_name}/package_requests/${id}.json Updates a Package Request
Parameters
Name Description Parameter Location Type Required
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
id Package Request ID path string
Request Body
Name Format Example Required
package_request
Example cURL command
curl -X PATCH \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -d '{"package_request":{"decision":"approved"}}' \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/package_requests/${ID}.json"
Responses
200 Package Request Denied
{
  "package_request": {
    "id": "string",
    "package_name": "slack",
    "package_type": "cask",
    "tap": "homebrew/cask",
    "status": "denied",
    "device": {
      "id": "string",
      "serial_number": "string"
    },
    "decision_reason": null,
    "decided_at": null,
    "created_at": "string",
    "updated_at": "string"
  }
}
422 Invalid decision
{
  "error": "Invalid decision. Must be 'approved' or 'denied'"
}
GET /workspaces/${workspace_name}/vulnerabilities.json Returns a list of Vulnerabilities
Parameters
Name Description Parameter Location Type Required
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
Example cURL command
curl -X GET \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/vulnerabilities.json"
Responses
200 Vulnerabilities Found
[
  {
    "vulnerabilities": [
      {
        "clean_id": "CVE-2024-2466",
        "cvss_score": 6.5
      },
      {
        "clean_id": "THIS-IS-AN-INVALID-CVE-001",
        "cvss_score": 8.0
      }
    ],
    "formula": "curl",
    "outdated_devices": [
      "TC6R2DHVHG",
      "1234567890"
    ],
    "supported": false,
    "homebrew_core_version": "8.11.0_1"
  }
]
403 On a Free tier plan
{
  "message": "An error occurred when trying to view vulnerabilities",
  "errors": [
    "Vulnerabilities cannot be viewed in detail or mitigated on a Workbrew Free subscription."
  ]
}
GET /workspaces/${workspace_name}/vulnerabilities.csv Returns a list of Vulnerabilities
Parameters
Name Description Parameter Location Type Required
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
Example cURL command
curl -X GET \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/vulnerabilities.csv"
Responses
200 Vulnerabilities Found
vulnerabilities,formula,outdated_devices,supported,homebrew_core_version
  "CVE-2024-11053, CVE-2024-6197, CVE-2024-7264, CVE-2024-8096, CVE-2024-9681, THIS-IS-AN-INVALID-CVE-001 (8.0)",curl,"TC6R2DHVHG, 1234567890",false,8.11.1
  "CVE-2024-10524, SOME-INVALID-CVE-002",wget,TC6R2DHVHG,false,1.25.0
  SOME-INVALID-CVE-001,ack,TC6R2DHVHG,false,3.8.1
  GHSA-rqgv-292v-5qgr (5.4),renovate,TC6R2DHVHG,false,39.125.0
GET /workspaces/${workspace_name}/vulnerability_changes.json Returns a list of vulnerability change events
Parameters
Name Description Parameter Location Type Required
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
status Filter by status: detected or fixed query
query Search query for formula name, version, vulnerability ID, or device query string
Example cURL command
curl -X GET \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/vulnerability_changes.json"
Responses
200 includes all vulnerability data fields
[
  {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "event_type": "vulnerability.detected",
    "occurred_at": "2024-10-01T09:15:00Z",
    "status": "detected",
    "formula_name": "curl",
    "formula_version": "8.7.0",
    "vulnerability_id": "CVE-2024-2466"
  }
]
GET /workspaces/${workspace_name}/vulnerability_changes.csv Returns vulnerability change events as CSV
Parameters
Name Description Parameter Location Type Required
workspace_name Workspace slug path string
authorization Bearer Authentication via User API key header string
X-Workbrew-API-Version Workbrew API Version header string
status Filter by status: detected or fixed query string
query Search query query string
download Set to 1 to force download as attachment query string
Example cURL command
curl -X GET \
     -H "Authorization: Bearer " \
     -H "X-workbrew-api-version: v0" \
     -H "Accept: application/json" \
     "https://console.workbrew.com/workspaces/${WORKSPACE_NAME}/vulnerability_changes.csv"
Responses
200 CSV with status filter
id,event_type,occurred_at,status,device_id,device_serial_number,formula_name,formula_version,vulnerability_id,cvss_severity,cvss_score
123e4567-e89b-12d3-a456-426614174000,vulnerability.detected,2024-10-01T09:15:00Z,detected,device-uuid,TC6R2DHVHG,curl,8.7.0,CVE-2024-2466,Medium,6.5