Monogram API


Table of Contents


The inputs.json file contains a JSON array which contains all of the possible inputs that a target application may accept.
The JSON array is defined as InputsType, and each element of that array is defined as InputType.
A typical inputs.json looks like this.
{"name": "paste"},
"name": "jog",
"step": 1
"name": "shuttle",
"step": 1,
"reset": 0
"name": "exposure",
"range": [-5, 5],
"step": 0.01,
"reset": 0
"name": "contrast",
"range": [-100, 100],
"step": 1,
"reset": 0,
"connection": "auxilary"
The inputs.json file is loaded when Monogram Service starts or when the integration is loaded through Monogram Creator Preferences dialogue.
Currently, the functionality to dynamically update the InputsType at runtime using a target application's socket connection is limited to Monogram-developed applications only.


Each element of inputs.json has the type InputType. A string input is a shortcut for an InputObjectType with just name and no other properties.


Most entries in the top-level inputs.json array have this format.
Here's what each property means (square brackets [] mean the property is optional).


A unique identifier string for this input. Must be unique within each app. Used to identify this input when assigning them to physical inputs (i.e. Monogram modules).


A user-friendly string for this input. Used as the display text in the UI. To improve organization, the period . character may be used to group items into categories.
For example, given Layer.New Layer, Layer.Delete Layer, and Zoom.Out, the UI will present the items as follows:
+ Layer
|-- New Layer
|-- Delete Layer
+ Zoom
|-- Zoom Out


The min and max values this input may take. These values are mapped to the range of hardware sliders.


Specify the name of the algorithm to use when translating raw hardware slider values to values within the specified range. Options are "linear" and "gamma".
Gamma is an exponential scale with range from 9.99 to 0.1 and 1 in the middle.


The minimum value by which the input changes. Used to specify incremental adjustments with dials or buttons.


The default value for this parameter.


Experimental - Behaviour may change without notice
An optional property for "Apply" actions. If specified, the "input" property of a MessageType object sent to target application when this input is actuated will be the string from [command] rather than name.
Recall that physical actions (e.g. button press) are assigned by the name property of an InputObjectType (see input property of PulseConfigType). The [command] property allows you to modify the MessageType object the physical input emits without requiring the user to select the input again in the app.
This allows free-form customizable parameters to be defined dynamically by the target application without affecting the name property of this InputObjectType.
Useful for programmatically generated InputObjectTypes (e.g. dynamic input lists).
Currently, it is not possible to customize [command] from Monogram Creator user interface by the end-user.
Currently, the functionality to dynamically update the InputsType by a target application is experimental and may be subject to change without notice in the future.


Experimental - Behaviour may change without notice
An optional property for "Apply" actions. Used for "Apply" actions such as "Apply preset" in Lightroom. Should be a list of strings. This property is not compatible with range, step, reset or scale - do not set these when specifying options.


The name of the connection through which to communicate changes to this input. If unspecified, will use the default connection. See the config.json docs for more details.


An optional description of this input to display during function selection. Can be multi-line.


Experimental - Behaviour may change without notice
An optional boolean flag used to indicate that this Input is temporary. Used for dynamic inputs for Premiere Pro or other end-user customizable inputs. The input will not be shown in the UI if this is true.


An optional enum that indicates whether this input should only be available for the operating system selected. The input will only be shown in the UI for the OS specified.
Possible options are "win" or "mac".


An optional list of physical input modalities that: (1) Prevents this input from being shown in the UI for the provided physical input; and (2) Prevents a Preset from being generated from this input
Possible values are button,dial,slider,orbiter.
Note that setting orbiter here in inputs.json results in the item being hidden from the pressure-sensitive disc ONLY (tilt X and tilt Y), and not the ring (which is a dial).
This is different from defining an Orbiter preset under the orbiter key in presets.json, where it refers to the entire Orbiter module by the key orbiter. The reason for this discrepancy is that Orbiter is both an orbiter and a dial. Therefore, setting orbiter in excludeModules do not affect turn actions.
Example: "excludeModules": ["button", "orbiter"] will hide this input in the assignment window for Essential Keys module, Monogram Core module, and Orbiter disc tilt.
See InputsType for a sample list of InputObjectType.



Inputs assignable to the 3D module's two-dimensional disk. The x and y properties are similar to InputObjectType and may be assigned separately to dial or slider modules with ['<name>', 'x'] or ['<name>', 'y'] config arrays.



Experimental: Inputs assignable to the 3D module's two-dimensional disk (x, y) and ring (z). The x, y and z properties are similar to InputObjectType and may be assigned separately to dial or slider modules.



Options for x, y and z properties on TwoAxisInputObjectType and ThreeAxisInputObjectType. Similar to InputObjectType except that at least a step is required.
Optionally specify a unique name for use with dials and sliders as one-dimensional inputs.