Mining Rig Monitor / Commander (2.0.0)

Download OpenAPI specification:Download

This is an API for Mining Rig Monitor Software.

Ping Pong

Ping Pong

Ping the mining rig monitor server

Ping the mining rig monitor server

Responses

Response samples

Content type
application/json
{
  • "message": "pong"
}

ASIC Miner

ASIC Miner API

Submit ASIC - specification

This endpoint helps submitting an ASIC specification. This API should be called once time at boot.

Authorizations:
api_code
Request Body schema: application/json
required

Asic specification

model
required
string

ASIC Model

model_variant
string

ASIC Model Variant

firmware_version
required
string

ASIC Firmware Version

software_version
required
string

ASIC Software Version

Responses

Request samples

Content type
application/json
{
  • "model": "Ice River KS5L",
  • "model_variant": "12TH",
  • "firmware_version": "BOOT_3_1_image_1.0",
  • "software_version": "ICM168_3_2_10_ks5L_miner_ICM168_3_2_10_ks5L_bg"
}

Response samples

Content type
application/json
{
  • "message": "Invalid API_CODE"
}

Submit ASIC - monitor data

This endpoint helps submitting an ASIC Monitor Data / Operation Data

Authorizations:
api_code
Request Body schema: application/json
required

Asic monitor data

hashrate_5_min
required
number

5 mins hashrate, in ASIC KS5L, check JSON key named rtpow

hashrate_30_min
number

30 mins hashrate, in ASIC KS5L, check JSON key named avgpow

hashrate_uom
required
string

Hashrate unit of measurement, in ASIC KS5L, check JSON key named unit

pool_rejection_rate
number

Pool rejection rate, in ASIC KS5L, check JSON key named reject

uptime
required
string

Uptime, in ASIC KS5L, check JSON key named runtime in format: days:hours:minutes:seconds example: "00:00:39:34". When submit to the Mining Rig Monitor Server, keep this format.

There is another idea of sending this value in second(long integer), but I would like to keep this value original. I think another ASIC would follow the same format.

pool_1_address
required
string

The first pool address, check JSON key named addr.

pool_2_address
string

The second pool address, check JSON key named addr.

pool_3_address
string

The third pool address, check JSON key named addr.

pool_1_user
required
string

The first pool's user address, check JSON key named user.

pool_2_user
string

The second pool's user address, check JSON key named user.

pool_3_user
string

The third pool's user address, check JSON key named user.

pool_1_state
required
string

Connection state of ASIC to the first pool, check JSON key named connect.

  • If connect == 1.0, it's Connected
  • If connect == -1.0, it's Unconnected
pool_2_state
string

Connection state of ASIC to the second pool, check JSON key named connect.

  • If connect == 1.0, it's Connected
  • If connect == -1.0, it's Unconnected
pool_3_state
string

Connection state of ASIC to the third pool, check JSON key named connect.

  • If connect == 1.0, it's Connected
  • If connect == -1.0, it's Unconnected
pool_1_accepted_share
integer

Number of accpted shares submitting to the first pool. Check JSON key in pools[index] > accepted

pool_2_accepted_share
integer

Number of accpted shares submitting to the second pool. Check JSON key in pools[index] > accepted

pool_3_accepted_share
integer

Number of accpted shares submitting to the third pool. Check JSON key in pools[index] > accepted

pool_1_rejected_share
integer

Number of rejected shares submitting to the first pool. Check JSON key in pools[index] > rejected

pool_2_rejected_share
integer

Number of rejected shares submitting to the second pool. Check JSON key in pools[index] > rejected

pool_3_rejected_share
integer

Number of rejected shares submitting to the third pool. Check JSON key in pools[index] > rejected

hashboard_1_hashrate_5_min
float

The average hashrate of the first hashboard in 5 minutes. Check JSON key named boards[index] > rtpow.

The original value is in string format, ex: 3283.87G. When submit to the Mining Rig Monitor, please remove the unit.

This field only accept number. The unit of measurement has a separeted field named hashrate_uom.

hashboard_2_hashrate_5_min
float

The average hashrate of the second hashboard in 5 minutes. Check JSON key named boards[index] > rtpow.

The original value is in string format, ex: 3283.87G. When submit to the Mining Rig Monitor, please remove the unit.

This field only accept number. The unit of measurement has a separeted field named hashrate_uom.

hashboard_3_hashrate_5_min
float

The average hashrate of the third hashboard in 5 minutes. Check JSON key named boards[index] > rtpow.

The original value is in string format, ex: 3283.87G. When submit to the Mining Rig Monitor, please remove the unit.

This field only accept number. The unit of measurement has a separeted field named hashrate_uom.

hashboard_1_hashrate_30_min
float

The average hashrate of the first hashboard in 5 minutes. Check JSON key named boards[index] > avgpow.

The original value is in string format, ex: 3283.87G. When submit to the Mining Rig Monitor, please remove the unit.

This field only accept number. The unit of measurement has a separeted field named hashrate_uom.

hashboard_2_hashrate_30_min
float

The average hashrate of the second hashboard in 5 minutes. Check JSON key named boards[index] > avgpow.

The original value is in string format, ex: 3283.87G. When submit to the Mining Rig Monitor, please remove the unit.

This field only accept number. The unit of measurement has a separeted field named hashrate_uom.

hashboard_3_hashrate_30_min
float

The average hashrate of the third hashboard in 5 minutes. Check JSON key named boards[index] > avgpow.

The original value is in string format, ex: 3283.87G. When submit to the Mining Rig Monitor, please remove the unit.

This field only accept number. The unit of measurement has a separeted field named hashrate_uom.

hashboard_1_temp_1
float

The first temperature of the first hashboard. Check the JSON key named boards[index] > intmp. I guess, it's the air-in temperature position.

hashboard_1_temp_2
float

The second temperature of the first hashboard. Check the JSON key named boards[index] > outtmp. I guess, it's the air-out temperature position. Air-out temperature is always greater than the air-in.

hashboard_2_temp_1
float

The first temperature of the second hashboard. Check the JSON key named boards[index] > intmp. I guess, it's the air-in temperature position.

hashboard_2_temp_2
float

The second temperature of the second hashboard. Check the JSON key named boards[index] > outtmp. I guess, it's the air-out temperature position. Air-out temperature is always greater than the air-in.

hashboard_3_temp_1
float

The first temperature of the third hashboard. Check the JSON key named boards[index] > intmp. I guess, it's the air-in temperature position.

hashboard_3_temp_2
float

The second temperature of the third hashboard. Check the JSON key named boards[index] > outtmp. I guess, it's the air-out temperature position. Air-out temperature is always greater than the air-in.

fan_1_speed
required
integer

The speed of first fan in rpm. Check the JSON key named fans[0]

fan_2_speed
integer

The speed of second fan in rpm. Check the JSON key named fans[1]

fan_3_speed
integer

The speed of third fan in rpm. Check the JSON key named fans[2]

fan_4_speed
integer

The speed of forth fan in rpm. Check the JSON key named fans[3]

lan_ip
required
string

The local IP

wan_ip
string

The public/internet/wan IP

coin_name
required
string

Coin name

power
required
float

Power(Walt)

Responses

Request samples

Content type
application/json
{
  • "hashrate_5_min": 13135,
  • "hashrate_30_min": 8642,
  • "hashrate_uom": "GH/s",
  • "pool_rejection_rate": 0.0001,
  • "uptime": "07:23:50:20",
  • "pool_1_address": "stratum+tcp://asia1.kaspa-pool.org:4441",
  • "pool_2_address": "stratum+tcp://asia1.kaspa-pool.org:4441",
  • "pool_3_address": "stratum+tcp://asia1.kaspa-pool.org:4441",
  • "pool_1_user": "kaspa:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.worker_1",
  • "pool_2_user": "kaspa:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.worker_1",
  • "pool_3_user": "kaspa:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.worker_1",
  • "pool_1_state": "Connected",
  • "pool_2_state": "Unconnected",
  • "pool_3_state": "Unconnected",
  • "pool_1_accepted_share": 100000,
  • "pool_2_accepted_share": 0,
  • "pool_3_accepted_share": 0,
  • "pool_1_rejected_share": 0,
  • "pool_2_rejected_share": 0,
  • "pool_3_rejected_share": 0,
  • "hashboard_1_hashrate_5_min": 1234.56,
  • "hashboard_2_hashrate_5_min": 1234.56,
  • "hashboard_3_hashrate_5_min": 1234.56,
  • "hashboard_1_hashrate_30_min": 1234.56,
  • "hashboard_2_hashrate_30_min": 1234.56,
  • "hashboard_3_hashrate_30_min": 1234.56,
  • "hashboard_1_temp_1": 50,
  • "hashboard_1_temp_2": 55,
  • "hashboard_2_temp_1": 50,
  • "hashboard_2_temp_2": 55,
  • "hashboard_3_temp_1": 50,
  • "hashboard_3_temp_2": 55,
  • "fan_1_speed": 5855,
  • "fan_2_speed": 5900,
  • "fan_3_speed": 5900,
  • "fan_4_speed": 5855,
  • "lan_ip": "192.168.18.50",
  • "wan_ip": "50.85.22.87",
  • "coin_name": "Kaspa",
  • "power": 3500
}

Response samples

Content type
application/json
{
  • "message": "Invalid API_CODE"
}

Get expected status from an ASIC Miner, this API is used by ASIC Sentry

This endpoint helps fetch ASIC Miner expected status such as:

  • asic miner on/off
  • light bulb on/off
Authorizations:
api_code

Responses

Response samples

Content type
application/json
{
  • "asic_expected_status": "on",
  • "light_expected_status": "on"
}

Get expected status from many ASIC Miner. This API is used by ASIC Sentry.

This endpoint helps fetch ASIC Miner expected status such as:

  • asic miner on/off
  • light bulb on/off

No API_CODE required in HTTP header.

Request Body schema: application/json
required
asic_api_code_list
Array of strings

Responses

Request samples

Content type
application/json
{
  • "asic_api_code_list": [
    ]
}

Response samples

Content type
application/json
{
  • "key_name_dynamic_api_code": {
    }
}

CPU/GPU Miner

CPU/GPU Miner API

Submit CPU/GPU mining rig - specification

This endpoint helps submitting cpu/gpu mining rig specification. This API should be called once time at boot.

Authorizations:
api_code
Request Body schema: application/json
required

CPU/GPU rig specification

motherboard_name
required
string

Motherboard name

cpu_name
required
string

CPU name For linux, $ cat /proc/cpuinfo

ram_size
required
string

The first RAM size, All the ram information can be get with $ sudo dmidecode --type 17

gpu_1_name
string

GPU name

gpu_2_name
string
gpu_3_name
string
gpu_4_name
string
gpu_5_name
string
gpu_6_name
string
gpu_7_name
string
gpu_8_name
string

Responses

Request samples

Content type
application/json
{
  • "motherboard_name": "Supermicro X10DRL-i 1.01",
  • "cpu_name": "Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz",
  • "ram_size": "8GB",
  • "gpu_1_name": "NVIDIA GeForce RTX 3080",
  • "gpu_2_name": "NVIDIA GeForce RTX 3080",
  • "gpu_3_name": "NVIDIA GeForce RTX 3080",
  • "gpu_4_name": "NVIDIA GeForce RTX 3080",
  • "gpu_5_name": "NVIDIA GeForce RTX 3080",
  • "gpu_6_name": "NVIDIA GeForce RTX 3080",
  • "gpu_7_name": "NVIDIA GeForce RTX 3080",
  • "gpu_8_name": "NVIDIA GeForce RTX 3080"
}

Response samples

Content type
application/json
{
  • "message": "Invalid API_CODE"
}

Submit CPU/GPU mining rig - monitor data

This endpoint helps submitting cpu/gpu mining rig - monitor data. This api should be call every minute

Authorizations:
api_code
Request Body schema: application/json
required

CPU/GPU rig - monitor data

cpu_temp
integer

CPU Temterature in Celcius

cpu_hashrate
integer

CPU Hashrate

cpu_hashrate_uom
string

CPU Hashrate - unit of measurement

cpu_algorithm
string

CPU Hashrate Algorithm

cpu_coin_name
string

CPU coin name

cpu_pool_address
string
cpu_wallet
string
gpu_1_core_temp
integer

GPU 1 - Core Temterature in Celcius

gpu_2_core_temp
integer
gpu_3_core_temp
integer
gpu_4_core_temp
integer
gpu_5_core_temp
integer
gpu_6_core_temp
integer
gpu_7_core_temp
integer
gpu_8_core_temp
integer
gpu_1_mem_temp
integer

GPU 1 - Mem Temterature in Celcius

gpu_2_mem_temp
integer
gpu_3_mem_temp
integer
gpu_4_mem_temp
integer
gpu_5_mem_temp
integer
gpu_6_mem_temp
integer
gpu_7_mem_temp
integer
gpu_8_mem_temp
integer
gpu_1_hashrate_1
integer

GPU 1 - Hashrate 1

gpu_2_hashrate_1
integer
gpu_3_hashrate_1
integer
gpu_4_hashrate_1
integer
gpu_5_hashrate_1
integer
gpu_6_hashrate_1
integer
gpu_7_hashrate_1
integer
gpu_8_hashrate_1
integer
gpu_1_hashrate_2
integer

GPU 1 - Hashrate 2

gpu_2_hashrate_2
integer
gpu_3_hashrate_2
integer
gpu_4_hashrate_2
integer
gpu_5_hashrate_2
integer
gpu_6_hashrate_2
integer
gpu_7_hashrate_2
integer
gpu_8_hashrate_2
integer
gpu_1_core_clock
integer

GPU 1 - core clock

gpu_2_core_clock
integer
gpu_3_core_clock
integer
gpu_4_core_clock
integer
gpu_5_core_clock
integer
gpu_6_core_clock
integer
gpu_7_core_clock
integer
gpu_8_core_clock
integer
gpu_1_mem_clock
integer

GPU 1 - mem clock

gpu_2_mem_clock
integer
gpu_3_mem_clock
integer
gpu_4_mem_clock
integer
gpu_5_mem_clock
integer
gpu_6_mem_clock
integer
gpu_7_mem_clock
integer
gpu_8_mem_clock
integer
gpu_1_power
integer

GPU 1 - power in walt

gpu_2_power
integer
gpu_3_power
integer
gpu_4_power
integer
gpu_5_power
integer
gpu_6_power
integer
gpu_7_power
integer
gpu_8_power
integer
gpu_hashrate_uom_1
string

GPU hashrate 1 - unit of measurement

gpu_hashrate_uom_2
string

GPU hashrate 2 - unit of measurement, for dual mining

gpu_algorithm_1
string

GPU algorithm 1

gpu_algorithm_2
string

GPU algorithm 2

gpu_coin_name_1
string

GPU coin name 1

gpu_coin_name_2
string

GPU coin name 2

gpu_pool_address_1
string
gpu_pool_address_2
string
gpu_wallet_address_1
string
gpu_wallet_address_2
string
lan_ip
string

LAN IP

wan_ip
string

WAN/PUBLIC/Internet IP

uptime
string

uptime days:hours:minutes:seconds

Responses

Request samples

Content type
application/json
{
  • "cpu_temp": 60,
  • "cpu_hashrate": 17,
  • "cpu_hashrate_uom": "kh/s",
  • "cpu_algorithm": "RandomX",
  • "cpu_coin_name": "Monero",
  • "cpu_pool_address": "string",
  • "cpu_wallet": "string",
  • "gpu_1_core_temp": 65,
  • "gpu_2_core_temp": 60,
  • "gpu_3_core_temp": 61,
  • "gpu_4_core_temp": 62,
  • "gpu_5_core_temp": 62,
  • "gpu_6_core_temp": 62,
  • "gpu_7_core_temp": 62,
  • "gpu_8_core_temp": 62,
  • "gpu_1_mem_temp": 63,
  • "gpu_2_mem_temp": 64,
  • "gpu_3_mem_temp": 61,
  • "gpu_4_mem_temp": 62,
  • "gpu_5_mem_temp": 63,
  • "gpu_6_mem_temp": 64,
  • "gpu_7_mem_temp": 61,
  • "gpu_8_mem_temp": 62,
  • "gpu_1_hashrate_1": 60,
  • "gpu_2_hashrate_1": 60,
  • "gpu_3_hashrate_1": 60,
  • "gpu_4_hashrate_1": 60,
  • "gpu_5_hashrate_1": 60,
  • "gpu_6_hashrate_1": 60,
  • "gpu_7_hashrate_1": 60,
  • "gpu_8_hashrate_1": 60,
  • "gpu_1_hashrate_2": 60,
  • "gpu_2_hashrate_2": 60,
  • "gpu_3_hashrate_2": 60,
  • "gpu_4_hashrate_2": 60,
  • "gpu_5_hashrate_2": 60,
  • "gpu_6_hashrate_2": 60,
  • "gpu_7_hashrate_2": 60,
  • "gpu_8_hashrate_2": 60,
  • "gpu_1_core_clock": 60,
  • "gpu_2_core_clock": 60,
  • "gpu_3_core_clock": 60,
  • "gpu_4_core_clock": 60,
  • "gpu_5_core_clock": 60,
  • "gpu_6_core_clock": 60,
  • "gpu_7_core_clock": 60,
  • "gpu_8_core_clock": 60,
  • "gpu_1_mem_clock": 60,
  • "gpu_2_mem_clock": 60,
  • "gpu_3_mem_clock": 60,
  • "gpu_4_mem_clock": 60,
  • "gpu_5_mem_clock": 60,
  • "gpu_6_mem_clock": 60,
  • "gpu_7_mem_clock": 60,
  • "gpu_8_mem_clock": 60,
  • "gpu_1_power": 60,
  • "gpu_2_power": 60,
  • "gpu_3_power": 60,
  • "gpu_4_power": 60,
  • "gpu_5_power": 60,
  • "gpu_6_power": 60,
  • "gpu_7_power": 60,
  • "gpu_8_power": 60,
  • "gpu_hashrate_uom_1": "MH/s",
  • "gpu_hashrate_uom_2": "SOL/s",
  • "gpu_algorithm_1": "Ethash",
  • "gpu_algorithm_2": "Autokylos",
  • "gpu_coin_name_1": "Ethereum",
  • "gpu_coin_name_2": "Ergo",
  • "gpu_pool_address_1": "string",
  • "gpu_pool_address_2": "string",
  • "gpu_wallet_address_1": "string",
  • "gpu_wallet_address_2": "string",
  • "lan_ip": "192.168.15.6",
  • "wan_ip": "54.66.85.99",
  • "uptime": "00:00:39:34"
}

Response samples

Content type
application/json
{
  • "message": "Invalid API_CODE"
}

Get mining playbook list for a given CPU/GPU miner

Get mining playbook list for a given CPU/GPU miner

Authorizations:
api_code

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get CPU/GPU miner module in binary

This endpoint get elixir binary module to setup/start/stop mining software.

Authorizations:
api_code

Responses

Response samples

Content type
application/json
{
  • "message": "Invalid API_CODE"
}

ASIC Sentry

Get expected status from an ASIC Miner, this API is used by ASIC Sentry

This endpoint helps fetch ASIC Miner expected status such as:

  • asic miner on/off
  • light bulb on/off
Authorizations:
api_code

Responses

Response samples

Content type
application/json
{
  • "asic_expected_status": "on",
  • "light_expected_status": "on"
}

Get expected status from many ASIC Miner. This API is used by ASIC Sentry.

This endpoint helps fetch ASIC Miner expected status such as:

  • asic miner on/off
  • light bulb on/off

No API_CODE required in HTTP header.

Request Body schema: application/json
required
asic_api_code_list
Array of strings

Responses

Request samples

Content type
application/json
{
  • "asic_api_code_list": [
    ]
}

Response samples

Content type
application/json
{
  • "key_name_dynamic_api_code": {
    }
}