Skip to main content
Discord supports hardware manufacturers reporting real-time state for certified devices connected to a user’s computer. When integrated, your device earns a CERTIFIED badge in Discord’s audio settings and Discord can automatically coordinate with your hardware’s native audio features for an optimal experience.

How It Works

  1. Create an application for your hardware vendor and save the Client ID.
  2. Connect to the Discord local RPC server via HTTP or WebSocket.
  3. Send a SET_CERTIFIED_DEVICES payload (or equivalent HTTP POST) whenever device state changes.
That’s it. You provide real-time info about connected devices and Discord handles the rest — automatically deferring to your hardware’s native echo cancellation, noise suppression, and gain control when they’re active.

Connecting

Connect to the local RPC server using the following query string parameters:
ParameterValueRequired
v1All
client_idYour app’s client IDAll
encodingjsonWebSocket

Connection URIs

http://127.0.0.1:PORT/rpc?v=1&client_id=YOUR_CLIENT_ID
PORT ranges from 6463 to 6473. Iterate sequentially until a connection succeeds, then use that port for the rest of the session.
Send updates any time the hardware mute is toggled, or when a voice feature like echo cancellation is enabled or disabled by the user. This lets Discord coordinate with your hardware in real time.
Each update should include the full array of devices, sorted by your preferred priority. The first device in the array is the one Discord will attempt to use by default.

Getting the Device UUID

Each device in the SET_CERTIFIED_DEVICES payload requires an id field — the Windows device UUID retrieved via the native Windows API. It looks like:
{0.0.1.00000000}.{6cff2b76-44a8-46b9-b528-262ad8609d9f}
On macOS, the id should be the name of the device instead of a UUID.

Microphone ID (C++)

id = waveInMessage((HWAVEIN)IntToPtr(index),
                      DRV_QUERYFUNCTIONINSTANCEID,
                      (DWORD_PTR)pstrEndpointId,
                      cbEndpointId);

Speaker ID (C++)

id = waveOutMessage((HWAVEIN)IntToPtr(index),
                      DRV_QUERYFUNCTIONINSTANCEID,
                      (DWORD_PTR)pstrEndpointId,
                      cbEndpointId);

Data Models

Device Object

FieldTypeDescription
typestringDevice type
idstringThe device’s Windows UUID (or macOS device name)
vendorobjectVendor object
modelobjectModel object
relatedarrayUUIDs of related devices
echo_cancellation?*booleanIf the device’s native echo cancellation is enabled
noise_suppression?*booleanIf the device’s native noise suppression is enabled
automatic_gain_control?*booleanIf the device’s native automatic gain control is enabled
hardware_mute?*booleanIf the device is hardware muted
Fields marked with * are only applicable for AUDIO_INPUT (audioinput) device types.

Vendor Object

FieldTypeDescription
namestringName of the vendor
urlstringURL for the vendor

Model Object

FieldTypeDescription
namestringName of the model
urlstringURL for the model

Device Type

TypeValue
AUDIO_INPUT"audioinput"
AUDIO_OUTPUT"audiooutput"
VIDEO_INPUT"videoinput"

Examples

HTTP

Send device state updates via a POST request:
curl -X POST -H 'Content-Type: application/json' -d '{
  "nonce": "9b4e9711-97f3-4f35-b047-32c82a51978e",
  "cmd": "SET_CERTIFIED_DEVICES",
  "args": {
    "devices": [
      {
        "type": "audioinput",
        "id": "{0.0.1.00000000}.{6cff2b76-44a8-46b9-b528-262ad8609d9f}",
        "vendor": {
          "name": "SteelSeries",
          "url": "https://steelseries.com"
        },
        "model": {
          "name": "Arctis 7",
          "url": "https://steelseries.com/gaming-headsets/arctis-7"
        },
        "related": ["{0.0.1.00000000}.{6cff2b76-44a8-46b9-b528-262ad8609d9f}"],
        "echo_cancellation": true,
        "noise_suppression": true,
        "automatic_gain_control": true,
        "hardware_mute": false
      }
    ]
  }
}' http://127.0.0.1:PORT/rpc?v=1&client_id=YOUR_CLIENT_ID
The server responds with 200 OK and the following JSON:
{
  "cmd": "SET_CERTIFIED_DEVICES",
  "data": null,
  "evt": null,
  "nonce": "9b4e9711-97f3-4f35-b047-32c82a51978e"
}

WebSocket

Command
{
  "nonce": "9b4e9711-97f3-4f35-b047-32c82a51978e",
  "cmd": "SET_CERTIFIED_DEVICES",
  "args": {
    "devices": [
      {
        "type": "audioinput",
        "id": "{0.0.1.00000000}.{6cff2b76-44a8-46b9-b528-262ad8609d9f}",
        "vendor": {
          "name": "SteelSeries",
          "url": "https://steelseries.com"
        },
        "model": {
          "name": "Arctis 7",
          "url": "https://steelseries.com/gaming-headsets/arctis-7"
        },
        "related": ["{0.0.1.00000000}.{6cff2b76-44a8-46b9-b528-262ad8609d9f}"],
        "echo_cancellation": true,
        "noise_suppression": true,
        "automatic_gain_control": true,
        "hardware_mute": false
      }
    ]
  }
}
Response
{
  "nonce": "9b4e9711-97f3-4f35-b047-32c82a51978e",
  "cmd": "SET_CERTIFIED_DEVICES",
  "data": null,
  "evt": null
}