Developers

Public API reference.

Read the CELL chain over plain HTTP. Every endpoint below is a public GET: no account, no API key, JSON responses. For guides and the full reference, see the docs.

Public · No auth
https://api.qsdm.tech/api/v1

Live: —

Chain

GET /status

Node version, chain tip, coin and tokenomics, mining and consensus flags.

Example
https://api.qsdm.tech/api/v1/status
Sample response (trimmed)
{
  "node_id": "12D3KooWHT2APYkMStuaiLZvto7ZmrPmUag4TStT7MryGn69feum",
  "version": "hardened-legacy-20261002-d7ffcd4-hl2",
  "git_sha": "d7ffcd4e80f69c3db3f2bbcf4c7f34e08cc49d25",
  "build_date": "2026-10-02T05:23:22Z",
  "uptime": "13h18m53s",
  "chain_tip": 749057,
  "peers": 0,
  "node_role": "validator",
  "network": "QSDM · CELL",
  "coin": {
    "name": "Cell",
    "symbol": "CELL",
    "decimals": 8,
    "smallest_unit": "dust"
  },
  "branding": {
    "name": "QSDM",
    "legacy_name": "QSDM+",
    "full_title": "Quantum-Secure Dynamic Mesh Ledger (QSDM)"
  },
  "tokenomics": {
    "cap_dust": 9000000000000000,
    "cap_cell": "90000000.00000000",
    "emitted_dust": 267032069249259,
    "emitted_cell": "2670320.69249259",
    "remaining_dust": 8732967930750741,
    "block_reward_dust": 356490987,
    "block_reward_cell": "3.56490987",
    "current_epoch": 0,
    "next_halving_height": 12623041,
    "next_halving_eta_seconds": 118739840,
    "target_block_time_seconds": 10,
    "blocks_per_epoch": 12623040
  },
  "task_actions_ready": true,
  "consensus_auth": {
    "signed_consensus_supported": true,
    "require_signed_votes": false,
    "signed_message_activation_height": 0,
    "signed_consensus_active": false,
    "unsigned_consensus_traffic_accepted": true,
    "task_action_signature_activation_height": 625000,
    "task_action_signatures_active": true,
    "tx_content_root_activation_height": 625000,
    "tx_content_root_active": true
  },
  "…": "…"
}

GET /health/live

Liveness probe: 200 when the node process is up.

Example
https://api.qsdm.tech/api/v1/health/live
Sample response (trimmed)
{
  "product": "QSDM",
  "status": "alive",
  "timestamp": 1791045902
}

GET /health/ready

Readiness probe with per-subsystem checks.

Example
https://api.qsdm.tech/api/v1/health/ready
Sample response (trimmed)
{
  "checks": {
    "storage": "ok",
    "wallet_service": "ok"
  },
  "status": "ready",
  "timestamp": 1791045903
}

GET /versions

Supported HTTP API versions (currently v1).

Example
https://api.qsdm.tech/api/v1/versions
Sample response (trimmed)
{
  "current": "v1",
  "versions": [
    {
      "name": "v1",
      "prefix": "/api/v1",
      "status": "active",
      "deprecated_at": "0001-01-01T00:00:00Z",
      "sunset_at": "0001-01-01T00:00:00Z"
    }
  ]
}

GET /chain/blocks?from={h}&to={h}&limit={n}

Full blocks including transactions, by height range (max 64).

Example
https://api.qsdm.tech/api/v1/chain/blocks?from=0&to=0&limit=1
Sample response (trimmed)
{
  "tip": 749057,
  "from": 0,
  "to": 0,
  "blocks": [
    {
      "height": 0,
      "prev_hash": "",
      "hash": "b6119386bb6918d0716ab9d7f51864b58c20d542e6beab261151e8d4f9a8feb6",
      "timestamp": "2026-05-06T23:37:58.195855436Z",
      "transactions": [
        {
          "ID": "genesis-seed-1778110678195835285",
          "Sender": "qsdm-system-funder",
          "Recipient": "qsdm1miner-rtx3050",
          "Amount": 100,
          "Fee": 0,
          "GasLimit": 0,
          "Nonce": 0,
          "Payload": null,
          "AddedAt": "2026-05-06T23:37:58.195837337Z"
        }
      ],
      "state_root": "1667aa6937305e49b2bf489aec03dbb6a12ecddef89c1ad884ebe368d29c3998",
      "total_fees": 0,
      "gas_used": 0,
      "producer_id": "12D3KooWSf2hdqPY2BGFuNy9M84ajVK9FZe6ayg6Pjy8qwirVhBE",
      "producer_auth": {}
    }
  ]
}

GET /mining/blocks?from={h}&to={h}&limit={n}

Block headers (hash, prev hash, roots, tx count, time, producer), newest range by default (max 200).

Example
https://api.qsdm.tech/api/v1/mining/blocks?limit=2
Sample response (trimmed)
{
  "tip": 749057,
  "from": 749056,
  "to": 749057,
  "headers": [
    {
      "height": 749056,
      "hash": "5a275ba7e00772e1de60a96e21a275d2689dad4672709870ed0ec7f603953fc1",
      "prev_hash": "ad35e2607bef7635a52f9a34fa318d9f151b900eccdd67c2088eba6233e0b45b",
      "state_root": "077a38ccb8a874f9a6c3a8fdd92e664052bd2d7bc3523fdf6cd7fb2e165806aa",
      "tx_root": "0a43de7b997d3d4ee52ca9473c24f04a5127078dabfb9baf79fbe664ba031590",
      "tx_count": 1,
      "timestamp": "2026-10-03T16:44:50Z",
      "producer_id": "1cf60b16cf9aee5e8eaf67a8518a2b2ba7bc54f2dd607f05bc5a861b7a94c859"
    },
    "…"
  ]
}

GET /receipts?limit={n}

Most recent transaction receipts (default 20, max 200).

Example
https://api.qsdm.tech/api/v1/receipts?limit=2
Sample response (trimmed)
{
  "tip": 749057,
  "from": 749056,
  "to": 749057,
  "limit": 2,
  "receipts": [
    {
      "tx_id": "solo-heartbeat-2196401-1791045900531968824",
      "block_height": 749057,
      "block_hash": "5554dfa54290b83eeec1c6db2375f7dd0eb8b6b75a1bc575446519bf95d5a688",
      "status": 1,
      "gas_used": 0,
      "fee": 0,
      "logs": [
        {
          "topic": "TxApplied",
          "data": {
            "amount": 0,
            "recipient": "qsdm-system-funder",
            "sender": "qsdm-system-funder"
          },
          "index": 0
        }
      ],
      "timestamp": "2026-10-03T16:45:00.53469029Z",
      "index_in_block": 0
    },
    "…"
  ]
}

GET /receipts/{tx_id}

One transaction receipt by its id.

Example
https://api.qsdm.tech/api/v1/receipts/solo-heartbeat-2196400-1791045890531345068
Sample response (trimmed)
{
  "tx_id": "solo-heartbeat-2196400-1791045890531345068",
  "block_height": 749056,
  "block_hash": "5a275ba7e00772e1de60a96e21a275d2689dad4672709870ed0ec7f603953fc1",
  "status": 1,
  "gas_used": 0,
  "fee": 0,
  "logs": [
    {
      "topic": "TxApplied",
      "data": {
        "amount": 0,
        "recipient": "qsdm-system-funder",
        "sender": "qsdm-system-funder"
      },
      "index": 0
    }
  ],
  "timestamp": "2026-10-03T16:44:50.533760192Z",
  "index_in_block": 0
}

Supply & mining

GET /mining/emission

Emitted and remaining supply, block reward, halving height and ETA.

Example
https://api.qsdm.tech/api/v1/mining/emission
Sample response (trimmed)
{
  "chain_tip": 749057,
  "mining_cap_dust": 9000000000000000,
  "blocks_per_epoch": 12623040,
  "target_block_time_seconds": 10,
  "current_epoch": 0,
  "block_reward_dust": 356490987,
  "block_reward_cell": "3.56490987",
  "emitted_dust": 267032069249259,
  "emitted_cell": "2670320.69249259",
  "remaining_dust": 8732967930750741,
  "next_halving_height": 12623041,
  "next_halving_eta_seconds": 118739840
}

GET /mining/enrollments?limit={n}&cursor={c}&phase={p}

Enrolled mining nodes: owner, GPU, bond status, phase. Cursor-paginated.

Example
https://api.qsdm.tech/api/v1/mining/enrollments?limit=2
Sample response (trimmed)
{
  "records": [
    {
      "node_id": "clore-3090-01",
      "owner": "5d28b82565421e3666ef7a493e0d39fc89d3450009a32cbda72aa89c7cb820e7",
      "gpu_uuid": "GPU-0856d89a-074f-adbd-781d-1f5e7673d569",
      "stake_dust": 1000000000,
      "bond_mode": "mining_rewards",
      "required_stake_dust": 1000000000,
      "bond_remaining_dust": 0,
      "fully_bonded": true,
      "enrolled_at_height": 326831,
      "phase": "active",
      "slashable": true
    },
    "…"
  ],
  "next_cursor": "hive-2696v3-0b65af9f0525",
  "has_more": true,
  "total_matches": 55
}

GET /mining/enrollment/{node_id}

One enrolled node by node id.

Example
https://api.qsdm.tech/api/v1/mining/enrollment/clore-3090-01
Sample response (trimmed)
{
  "node_id": "clore-3090-01",
  "owner": "5d28b82565421e3666ef7a493e0d39fc89d3450009a32cbda72aa89c7cb820e7",
  "gpu_uuid": "GPU-0856d89a-074f-adbd-781d-1f5e7673d569",
  "stake_dust": 1000000000,
  "bond_mode": "mining_rewards",
  "required_stake_dust": 1000000000,
  "bond_remaining_dust": 0,
  "fully_bonded": true,
  "enrolled_at_height": 326831,
  "phase": "active",
  "slashable": true
}

GET /mining/account?address={address}

Balance and nonce of an address from the mining ledger.

Example
https://api.qsdm.tech/api/v1/mining/account?address=5d28b82565421e3666ef7a493e0d39fc89d3450009a32cbda72aa89c7cb820e7
Sample response (trimmed)
{
  "address": "5d28b82565421e3666ef7a493e0d39fc89d3450009a32cbda72aa89c7cb820e7",
  "balance": 20.494531481334427,
  "nonce": 1,
  "present": true
}

GET /mining/work

Current proof-of-work template and difficulty. Returns an error while no mining window is open.

Example
https://api.qsdm.tech/api/v1/mining/work
Sample response (trimmed)
{
  "epoch": 12,
  "height": 749057,
  "header_hash": "5554dfa54290b83eeec1c6db2375f7dd0eb8b6b75a1bc575446519bf95d5a688",
  "difficulty": "16777216",
  "dag_size": 1024,
  "workset_root": "c48e2ccadab3455597ca53770d9eb776998f4a5e0d644be614cb71dd0155196a",
  "workset": [
    {
      "cells": [
        {
          "id": "c0ffee016200deadbeef000000000000",
          "content_hash": "6200a50000000000000000000000000000000000000000000000000000000000"
        },
        "…"
      ]
    },
    "…"
  ],
  "batch_count_maximum": 1,
  "blocks_per_epoch": 60480
}

Wallet

GET /wallet/balance?address={address}

CELL balance of an address.

Example
https://api.qsdm.tech/api/v1/wallet/balance?address=5d28b82565421e3666ef7a493e0d39fc89d3450009a32cbda72aa89c7cb820e7
Sample response (trimmed)
{
  "address": "5d28b82565421e3666ef7a493e0d39fc89d3450009a32cbda72aa89c7cb820e7",
  "balance": 20.494531481334427,
  "source": "mining-ledger"
}

GET /wallet/nonce?sender={address}

Current and next nonce for signing a transaction from an address.

Example
https://api.qsdm.tech/api/v1/wallet/nonce?sender=5d28b82565421e3666ef7a493e0d39fc89d3450009a32cbda72aa89c7cb820e7
Sample response (trimmed)
{
  "sender": "5d28b82565421e3666ef7a493e0d39fc89d3450009a32cbda72aa89c7cb820e7",
  "nonce": 1,
  "next": 2
}

Transparency

GET /trust/attestations/summary

Counts of NVIDIA-attested public validators.

Example
https://api.qsdm.tech/api/v1/trust/attestations/summary
Sample response (trimmed)
{
  "attested": 0,
  "total_public": 1,
  "ratio": 0,
  "fresh_within": "15m0s",
  "last_attested_at": null,
  "last_checked_at": "2026-10-03T16:45:07Z",
  "ngc_service_status": "healthy",
  "scope_note": "NVIDIA-lock is an opt-in, per-operator API policy — not a consen…"
}

GET /trust/attestations/recent?limit={n}

Most recent attestations.

Example
https://api.qsdm.tech/api/v1/trust/attestations/recent?limit=5
Sample response (trimmed)
{
  "fresh_within": "15m0s",
  "count": 0,
  "attestations": null
}

GET /audit/summary

Public audit checklist score and blocking items.

Example
https://api.qsdm.tech/api/v1/audit/summary
Sample response (trimmed)
{
  "summary": {
    "failed": 0,
    "passed": 84,
    "pending": 4,
    "total": 88,
    "waived": 0
  },
  "score": 95.45454545454545,
  "has_blocking_findings": true,
  "blocking_count": 2,
  "blocking_preview": [
    {
      "id": "tok-01",
      "category": "tokenomics",
      "severity": "critical",
      "status": "pending",
      "title": "Genesis policy sign-off"
    },
    "…"
  ],
  "evidence_provenance": {
    "evidence:in-tree": 30,
    "evidence:in-tree-tests": 41,
    "evidence:live-deploy": 13,
    "other": 0
  },
  "generated_at": "2026-10-03T16:45:07Z"
}

GET /tasks/state

On-chain task runtime state.

Example
https://api.qsdm.tech/api/v1/tasks/state
Sample response (trimmed)
{
  "runtime": "qsdm-native",
  "configured": true,
  "source": "chain",
  "state_root": "7d485f5f9d2ca1345c73bddaac99693fadf73798664e87f7c77b78844ceef2d9",
  "tasks": [
    {
      "task_id": "qsdm-edge-worker",
      "total_stake_amount": 30,
      "reward_pool_amount": 0,
      "pending_reward_amount": 0,
      "total_reward_paid_amount": 0,
      "running_count": 1,
      "last_action": "stop",
      "last_action_id": "hive_stop_1787926233365_9be1df210af64cf2",
      "last_action_at": "2026-08-28T14:10:33.365Z",
      "is_migrated": false,
      "participants": {
        "05417e7b4933f9004ddb230181d3df68f622fe6620eaa177b618a580f7e4145b": {
          "sender": "05417e7b4933f9004ddb230181d3df68f622fe6620eaa177b618a580f7e4145b",
          "running": false,
          "stake": 2,
          "last_action": "stop",
          "last_action_id": "hive_stop_1785135282868_19f3175717eef4cd",
          "last_action_at": "2026-07-27T06:54:42.868Z",
          "last_started_at": "2026-07-26T21:34:37.977Z",
          "last_stopped_at": "2026-07-27T06:54:42.868Z",
          "submission_count": 0,
          "claim_count": 0,
          "pending_reward_amount": 0,
          "total_reward_claimed_amount": 0
        },
        "13d786706accfbe77c5ddf6fc6757e1cca07bd01aff0cad3dcf9411d92cf11c9": {
          "sender": "13d786706accfbe77c5ddf6fc6757e1cca07bd01aff0cad3dcf9411d92cf11c9",
          "running": false,
          "stake": 1,
          "last_action": "stop",
          "last_action_id": "hive_stop_1787926233365_9be1df210af64cf2",
          "last_action_at": "2026-08-28T14:10:33.365Z",
          "last_started_at": "2026-08-22T03:16:20.202Z",
          "last_stopped_at": "2026-08-28T14:10:33.365Z",
          "submission_count": 0,
          "claim_count": 0,
          "pending_reward_amount": 0,
          "total_reward_claimed_amount": 0
        },
        "280ce80e10755e5cb7e53b6e4cf822610c4d67bd765517e1276fd19830ce460a": {
          "sender": "280ce80e10755e5cb7e53b6e4cf822610c4d67bd765517e1276fd19830ce460a",
          "running": false,
          "stake": 0,
          "last_action": "withdraw",
          "last_action_id": "hive_withdraw_1784710591353_6f0d9b65a3afddb8",
          "last_action_at": "2026-07-22T08:56:31.353Z",
          "last_started_at": "2026-07-22T08:54:23.823Z",
          "last_stopped_at": "2026-07-22T08:56:16.799Z",
          "submission_count": 0,
          "claim_count": 0,
          "pending_reward_amount": 0,
          "total_reward_claimed_amount": 0
        },
        "3dc5a66a41f49aa738efecef70b156a82cbb542e05dbe6c09be2d8a557b925b2": {
          "sender": "3dc5a66a41f49aa738efecef70b156a82cbb542e05dbe6c09be2d8a557b925b2",
          "running": false,
          "stake": 4,
          "last_action": "stake",
          "last_action_id": "hive_stake_1784628982021_b447f8d755bb3706",
          "last_action_at": "2026-07-21T10:16:22.021Z",
          "submission_count": 0,
          "claim_count": 0,
          "pending_reward_amount": 0,
          "total_reward_claimed_amount": 0
        },
        "531c4f2419e4c896498b0ee34a500b2bac4c09960fbcc97f66ba558cce1cff8d": {
          "sender": "531c4f2419e4c896498b0ee34a500b2bac4c09960fbcc97f66ba558cce1cff8d",
          "running": false,
          "stake": 0,
          "last_action": "withdraw",
          "last_action_id": "hive_withdraw_1784707775352_93549ab3650bc063",
          "last_action_at": "2026-07-22T08:09:35.352Z",
          "last_started_at": "2026-07-22T06:43:52.717Z",
          "last_stopped_at": "2026-07-22T08:09:01.861Z",
          "submission_count": 0,
          "claim_count": 0,
          "pending_reward_amount": 0,
          "total_reward_claimed_amount": 0
        },
        "686562bdf82feda37f77b033d0ec940af1e7fabc59005bda6733c25760f7c0af": {
          "sender": "686562bdf82feda37f77b033d0ec940af1e7fabc59005bda6733c25760f7c0af",
          "running": true,
          "stake": 21,
          "last_action": "start",
          "last_action_id": "hive_start_1784905201767_be27c5bad8eb3b63",
          "last_action_at": "2026-07-24T15:00:01.767Z",
          "last_started_at": "2026-07-24T15:00:01.767Z",
          "last_stopped_at": "2026-07-24T07:05:32.134Z",
          "submission_count": 0,
          "claim_count": 0,
          "pending_reward_amount": 0,
          "total_reward_claimed_amount": 0
        },
        "bd7021b490c688306ca267a96d3943dfdf66166de0a9808ababcaf27cab8caff": {
          "sender": "bd7021b490c688306ca267a96d3943dfdf66166de0a9808ababcaf27cab8caff",
          "running": false,
          "stake": 1,
          "last_action": "stop",
          "last_action_id": "hive_stop_1785135240769_8a4bf4e00a594ad5",
          "last_action_at": "2026-07-27T06:54:00.769Z",
          "last_started_at": "2026-07-27T06:52:08.537Z",
          "last_stopped_at": "2026-07-27T06:54:00.769Z",
          "submission_count": 0,
          "claim_count": 0,
          "pending_reward_amount": 0,
          "total_reward_claimed_amount": 0
        },
        "c169c40df033b92d199fa809fc2d96a96ed9899daf5871aab6bf63aeba25d953": {
          "sender": "c169c40df033b92d199fa809fc2d96a96ed9899daf5871aab6bf63aeba25d953",
          "running": false,
          "stake": 1,
          "last_action": "stop",
          "last_action_id": "hive_stop_1785659068300_9b47cb5cec10cd33",
          "last_action_at": "2026-08-02T08:24:28.300Z",
          "last_started_at": "2026-08-02T07:43:41.596Z",
          "last_stopped_at": "2026-08-02T08:24:28.300Z",
          "submission_count": 0,
          "claim_count": 0,
          "pending_reward_amount": 0,
          "total_reward_claimed_amount": 0
        }
      },
      "submissions": {}
    },
    "…"
  ]
}

Submitting transactions

Writes are signed on your device with ML-DSA-87 and posted as a signed envelope. The server never sees a private key.

POST /wallet/submit-signed

Submit a self-custody signed transaction. Get the next nonce from /wallet/nonce first; the web wallet and QSDM Hive build and sign this request for you.

Retired in v0.3.3: POST /api/v1/wallet/mint returns HTTP 410 Gone. Address-filtered transaction history, token and contract lists, and network topology require authentication and are not part of the public API.

Versioning

  • HTTP API: /api/v1, stableThe v1 in the URL is the API prefix, not a deprecation flag. There is no /api/v2. GET /versions lists what is served.
  • Mining protocol: v2 onlyIndependent of the HTTP version. /status reports mining.protocol_versions_accepted (live: —); v1 proofs are rejected.
QSDM audit score (live)
The HTTP API contract is on the internal audit checklist. Checklist rows pin URL stability, the wallet submit flow, replay protection, CORS and JWT posture. This is a self-maintained checklist, not an independent audit. See audit.html?category=api.