Skip to content
The Yoto Developer Challenge is on, with $10,000 to win!

MQTT Documentation

Here is a list of the MQTT topics and commands that you can use to interact with Yoto players.

Direction: Client → Device

Description: Triggers the device to publish a current events report to /device/{id}/data/events.


Direction: Client → Device

Description: Triggers the device to publish a current status report to /device/{id}/data/status.


Direction: Client → Device

Description: Sets the player’s volume level.

Payload:

{
"volume": <integer>
}

Field Details:

  • volume: Level to set [0 - 100]

Direction: Client → Device

Description: Sets the RGB tone for the player’s ambient LEDs.

Payload:

{
"r": <integer>,
"g": <integer>,
"b": <integer>
}

Field Details:

  • r: Red intensity [0 - 255]
  • g: Green intensity [0 - 255]
  • b: Blue intensity [0 - 255]

Direction: Client → Device

Description: Starts or restarts the sleep timer.

Payload:

{
"seconds": <integer>
}

Field Details:

  • seconds: Number of seconds for the sleep timer. 0 disables the timer.

Direction: Client → Device

Description: Triggers a system reboot.


Direction: Client → Device

Description: Starts playback of a card with optional targeting of chapters, tracks, offsets, and playback controls.

Payload:

{
"uri": "<string>",
"chapterKey": "<string>", // optional
"trackKey": "<string>", // optional
"secondsIn": <integer>, // optional
"cutOff": <integer>, // optional
"anyButtonStop": <boolean>, // optional
}

Field Details:

  • uri: Card URI (e.g., https://yoto.io/<cardID>)
  • chapterKey: Chapter to start playback from
  • trackKey: Track to start playback from
  • secondsIn: Playback start offset (in seconds)
  • cutOff: Playback stop offset (in seconds)
  • anyButtonStop: Whether button press stops playback

Direction: Client → Device

Description: Stops playback of a card.

Direction: Client → Device

Description: Pauses playback of a card.

Direction: Client → Device

Description: Resumes playback of a card.


Direction: Client → Device

Description: Turns Bluetooth on in a specified mode with optional filters.

Payload:

{
"action": "<string>", // optional
"mode": "<string>", // optional
"rssi": <integer>, // optional
"name": "<string>", // optional
"mac": "<string>" // optional
}

Field Details:

  • action: "on"
  • mode: "true" (BT audio source) or "false" (BT sink)
  • rssi: RSSI threshold for auto-connect
  • name: Target Bluetooth device name
  • mac: Target Bluetooth MAC (preferred over name)

Direction: Client → Device

Description: Turns Bluetooth off.


/device/{id}/command/bluetooth/delete-bonds

Section titled “/device/{id}/command/bluetooth/delete-bonds”

Direction: Client → Device

Description: Deletes all previously bonded Bluetooth devices.


Direction: Client → Device

Description: Connects to a previously bonded Bluetooth device.


Direction: Client → Device

Description: Disconnects the current active Bluetooth connection.


Direction: Client → Device

Description: Checks if the Bluetooth driver is initialized and running.


Direction: Client → Device

Description: Previews an icon on the player display.

Payload:

{
"uri": "<string>",
"timeout": <integer>,
"animated": <integer>
}

Field Details:

  • uri: Filepath to the icon asset
  • timeout: Display duration in seconds
  • animated: Whether the icon is animated (1) or static (0)

Direction: Device → Client

Description: Provides real-time playback and interaction event data. Payload:

{
"repeatAll": "<string>", // "true" or "false"
"streaming": "<string>", // "true" or "false"
"volume": "<string>",
"volumeMax": "<string>",
"playbackWait": "<string>", // "true" or "false"
"sleepTimerActive": "<string>", // "true" or "false"
"eventUtc": "<string>", // Unix timestamp
"trackLength": "<string>", // Track duration in seconds
"position": "<string>", // Current position in seconds
"cardId": "<string>",
"source": "<string>", // e.g. "card", "remote", "MQTT"
"cardUpdatedAt": "<string>", // ISO8601 format timestamp
"chapterTitle": "<string>",
"chapterKey": "<string>",
"trackTitle": "<string>",
"trackKey": "<string>",
"playbackStatus": "<string>", // e.g. "playing", "paused", "stopped"
"sleepTimerSeconds": "<string>" // Seconds remaining on the sleep timer
}

Direction: Device → Client

Description: Provides device status information, environment details, and configuration state.

Payload:

{
"statusVersion": <integer>,
"fwVersion": "<string>",
"productType": "<string>",
"batteryLevel": <integer>,
"als": <integer>,
"freeDisk": <integer>,
"shutdownTimeout": <integer>,
"dbatTimeout": <integer>,
"charging": <integer>,
"activeCard": "<string>",
"cardInserted": <integer>,
"playingStatus": <integer>,
"headphones": <boolean>,
"dnowBrightness": <integer>,
"dayBright": <integer>,
"nightBright": <integer>,
"bluetoothHp": <boolean>,
"volume": <integer>,
"userVolume": <integer>,
"timeFormat": "12" | "24",
"nightlightMode": "<string>",
"temp": "<string>",
"day": <integer>
}

Direction: Device → Client

Description: Used by the device to confirm the result of a command. The response dynamically names the field after the command’s resource.

Payload:

{
"status": {
"<resource>": "OK" | "FAIL",
"req_body": "{\"requestId\":\"<string>\"}"
}
}

Notes:

  • Applies to all topics under /command/{resource}/{action}
  • <resource> corresponds to the resource part of the command topic (e.g., status, events, volume)
  • The result ("OK" or "FAIL") reflects whether the command was successfully handled
  • req_body is a stringified JSON from the original request, typically including "requestId"