Skip to main content
GET
/
coinjoin
/
queues
Live Dash CoinJoin queue activity
curl --request GET \
  --url https://api.leokit.dev/coinjoin/queues
import requests

url = "https://api.leokit.dev/coinjoin/queues"

response = requests.get(url)

print(response.text)
const options = {method: 'GET'};

fetch('https://api.leokit.dev/coinjoin/queues', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.leokit.dev/coinjoin/queues",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"net/http"
"io"
)

func main() {

url := "https://api.leokit.dev/coinjoin/queues"

req, _ := http.NewRequest("GET", url, nil)

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.get("https://api.leokit.dev/coinjoin/queues")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.leokit.dev/coinjoin/queues")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
{
  "status": 123,
  "data": {
    "queues": [
      {
        "denomination": "<string>",
        "ready": 123,
        "total_seen": 123
      }
    ],
    "scanner": {
      "connected_masternodes": 123,
      "running_since": "2023-11-07T05:31:56Z",
      "last_dsq_at": "2023-11-07T05:31:56Z"
    },
    "entries": [
      {}
    ]
  }
}

Overview

/leokit/coinjoin/queues exposes live CoinJoin mixing-queue activity on the Dash network. Data comes from a persistent background scanner that maintains TCP connections to Dash masternodes and collects dsq broadcasts as they happen. Use this to display real-time mixing-queue state in privacy wallets, or to audit CoinJoin liquidity across denominations.

Endpoint

GET /leokit/coinjoin/queues

Request

Authentication

This endpoint is public — no Api-Key required.

Query Parameters

ParameterTypeRequiredDescription
detailbooleanNoIf true, include the full per-entry list. Default: summaries only

Response

Success (200) — summary mode

{
  "data": {
    "queues": [
      { "denomination": "0.1 DASH",    "ready": 3,  "total_seen": 47 },
      { "denomination": "0.01 DASH",   "ready": 1,  "total_seen": 22 },
      { "denomination": "0.001 DASH",  "ready": 0,  "total_seen": 9 }
    ],
    "scanner": {
      "connected_masternodes": 12,
      "running_since": "2026-04-28T08:00:00.000Z",
      "last_dsq_at": "2026-04-28T12:01:14.000Z"
    }
  },
  "status": 200
}

Success (200) — detail mode (?detail=true)

{
  "data": {
    "queues": [ /* ... same as above ... */ ],
    "scanner": { /* ... */ },
    "entries": [
      {
        "denomination": "0.1 DASH",
        "masternode": "<masternode-id>",
        "received_at": "2026-04-28T12:00:55.000Z",
        "ready": true
      }
    ]
  }
}

Field Reference

Queue Summary

FieldDescription
denominationMixing denomination label (e.g. 0.1 DASH)
readyCount of ready (joinable) queues at this denomination
total_seenLifetime count of dsq broadcasts seen since startup

Scanner Status

FieldDescription
connected_masternodesNumber of masternodes currently TCP-connected
running_sinceWhen the scanner started (ISO-8601)
last_dsq_atTimestamp of the most recent dsq broadcast received

Examples

Summaries only

curl https://api.leokit.dev/leokit/coinjoin/queues

Full entry list

curl "https://api.leokit.dev/leokit/coinjoin/queues?detail=true"

Notes

  • Data resets when the scanner restarts. total_seen is a counter from process start, not a long-term cumulative.
  • The scanner only listens for dsq broadcasts; it does not participate in mixing itself.
  • For a deeper integration (push instead of poll), reach out via the Dashboard — there is no streaming variant of this endpoint yet.

Query Parameters

detail
boolean

If true, include the full per-entry list.

Response

200 - application/json

Queue summaries and scanner status.

status
integer
required
data
object
required