Monogram API

Socket Protocol

Table of Contents


Messages sent from Monogram to applications over socket connections have this format.
input is an identifier for this message, defined by name or command of the InputObjectType. e.g., brightness
operation represents the type of operation the user has requested for that input
  • If operation is empty (i.e. ""), it represents a "pulse" action.
  • If operation is '+', it represents a "nudge" action (emitted by dials, and the orbiter disc and ring)
  • If operation is "=", it represents a "set" action (emitted by sliders and orbiter disc)
params contains additional payload and its contents depend on the operation type.
  • Pulse actions always include an empty params value of [].
  • Nudge always include a single numeric parameter. e.g., [1] or [-1]
  • Set actions always include a single numberic parameter. e.g., [42] or [-3.14]



Monogram listens for socket data from your application in this format.
The value parameter is not used by Monogram right now.
Send Monogram a response for connections marked as sync to prevent Monogram from overwhelming your application with actuations. In this case, Monogram will not send another message until it receives at least {"status":"ok"}
→ {"input":"volume","operation":"=","params":[42]}
... Do some processing ...
← {"status":"ok"}



Pulse, Set or Nudge
Type: ("" | "=" | "+")


One of these is required for ResponseType but is not yet used by Monogram.
Type: ("ok" | "message" | "data" | "err")