Monogram API


Table of Contents


Format for all Monogram-compatible ".monogram" profile files. It represents how modules are assigned to one or more Monogram consoles and the order of assignment priority.



Format protocol version. All new profiles must specify value "3.0" for this property.


The name of this profile to show in the UI and Core displays.


Unique identifier for this profile. Must be 21 characters long and use only the symbols A-Za-z0-9_-.
Optional; one will be generated automatically if not specified.


The ID of the Monogram integration to use with this profile. e.g., "com.adobe.lightroom", "com.monogramcc.MyPhotoEditor".
You may also specify a "secondary" app which is not natively integrated with Monogram. e.g.,
"name": "Mozilla Firefox",
"bundle": ["com.mozilla.firefox"],
"exe": ["firefox.exe"]
Optional; will be considered a "global" profile if not specified. Monogram automatically switches to profiles with an empty app property when no relevant profiles are available for the current active app.


Custom PNG icon data, encoded in base64. e.g.,
Optional; defaults to the provided icon.png if not specified.


Optional representation of how the modules used for this profile should be arranged.


Settings for each module. The format is similar to PresetsType in the presets.json documentation, with additional support for Monogram's built-in "Universal"/"Any App" presets.


Tags added to the profile, used for sorting/filtering in the quick start profiles panel.


Any relevant notes about this profile, displayed in the quick start profiles panel.


Data for image specified by the user. encoded in base 64.



A representation of an app without a native integration and may only be used with keyboard shortcuts, Joystick mode, MIDI mode, etc. The bundle and exe properties represent these applications' processes identifiers for macOS and Windows, respectively.
"name": "Firefox",
"bundle": ["com.mozilla.firefox"],
"exe": ["firefox.exe"]



Module assignment data within a profile. The format is similar to PresetType in presets.json, with additional support for Monogram's built-in "Universal" presets.
  1. 1.
    The first { settings: SettingsType } is the simplest form of an assignment, not referencing any built-in preset provided by Monogram or in presets.json.
  2. 2.
    The second { preset: string, app?: string, settings?: SettingsType } is the full form of any preset that references a built-in preset.
  • The preset property is the name of a built-in preset.
  • If the app property is not specified, Monogram will query its built-in list of presets. This list includes
    • profile switching,
    • playback control,
    • system volume,
    • screen brightness and more.
  • The optional settings property is used to override or extend the settings on the original preset, such as label or color.
  1. 1.
    The third form is for specifying the assignments for high density modules. The list of assignments for the modules will be stored as key, value pairs.
    • The optional base property is used to store any assignments for the base module (i.e. the core colour)
    • The fixedPosition property is used to flag submodule assignments that should stay on their designated left/right side when loaded from a .plp file
  2. 2.
    The fourth form [ string, SettingsType ] is short for { preset: string, app: ACTIVE_APP_ID, settings: SettingsType }, where the app property is automatically set to the current profile's app.
  3. 3.
    The fifth form is similar to the third, but without any settings to override the built-in preset.

Example Uses

Assignment with settings only, no preset:
"settings": {
"name": "Copy",
"press": {
"key": "c",
"modifiers": ["meta"]
Referencing an assignment for a high-density module
"fixedPosition": true,
"submodules": {
"dial1": "Contrast",
"dial2": [ "Exposure", { "color": "#ff0000" } ],
"dial3": "Tint"
Referencing the built-in "Contrast" preset for your app
[ "Contrast" ]
Referencing the built-in "Contrast" preset for your app with a custom LED color.
[ "Contrast", { "color": "#ff0000" } ]
Referencing Monogram's built-in "Profiles.Next" button preset.
{ "preset": "Profiles.Next" }
Referencing your built-in "Profiles.Next" button preset.
{ "preset": "Profiles.Next", "app": "com.adobe.photoshop" }
// or
Type: ({settings: SettingsType} | {preset: string, app: AppIdType?, settings: SettingsType?} | {submodules: {}, settings: SettingsType?, fixedPosition: boolean?} | [string, SettingsType] | [string] | string)