MLXDocs
Network API

Accounts

Markdown

Every wallet and protocol account with its public balances, one account in full with its locks, linked Macs and history, live mining for a wallet, and lookups by name, key or anything the explorer's search box takes.

GET /api/accounts

GEThttps://mlx.app/api/accounts?kind=holders&sort=mlx&limit=2

Accounts as slim rows, filtered and sorted, with the same public balances each account page shows. Protocol accounts are included and marked system.

curl "https://mlx.app/api/accounts?kind=holders&sort=mlx&limit=10"
ParameterTypeNotes
qstringOnly names containing this text.
kindall, holders, nodes, referrers, system or suspiciousAll accounts (default); wallets holding MLX; wallets holding a dedicated seat; wallets that referred someone; protocol accounts only; suspicious wallets.
sortnew, old, mlx, usdc, nodes, earned, referrals or nameNewest first (default), oldest first, most MLX, most dollars, most seats, most earned, most referrals, or by name. Ties are broken by name.
offsetintegerRows to skip. Pass the previous page's next.
limitintegerPage size. The route has a default and a maximum.
Response
{
  "total": 62,
  "indexed": 62,
  "system": 7,
  "matched": 1,
  "offset": 0,
  "accounts": [
    {
      "name": "luca.mlx",
      "system": false,
      "created": 1792312855563,
      "createdHeight": 1,
      "mlx": "99763394",
      "locked": "99763394",
      "usdc": "0",
      "nodes": 1,
      "earned": "0",
      "referrals": 0
    }
  ],
  "next": null
}
FieldTypeNotes
totalintegerWallets on the ledger.
indexedintegerWallets in the list this endpoint reads (normally equal to total).
systemintegerProtocol accounts in the list.
matchedintegerRows that pass the filter.
nextinteger or nullThe offset of the next page.
accounts[].mlxstringAll MLX the account holds, spendable and locked, base units.
accounts[].lockedstringThe part of mlx still locked now.
accounts[].usdcstringUSDC plus any legacy USDT, base units.
accounts[].nodesintegerDedicated seats held.
accounts[].earnedstringMLX earned from up-front seat rewards and referrals (the old model), base units. Mined MLX isn't counted here; see locks on the account.
accounts[].referrerstringWho referred the wallet, when someone did.
accounts[].flagsarrayWith kind=suspicious: { id, strong, label } for each flag. Flagged wallets are left out of every other kind.
suspiciousintegerWallets flagged right now.

The list is cached for a few seconds on the server, so a wallet created a moment ago can take a little while to appear.

GET /api/account/{name}

GEThttps://mlx.app/api/account/treasury.mlx

One account in full. Add txs for its history and nodes for its seats. Not cached.

ParameterTypeNotes
namestring (path)The full name with .mlx (luca.mlx). Not case-sensitive.
txsintegerInclude the account's newest transactions, this many. The route caps it.
offsetintegerWith txs: skip this many of the newest, to page back.
nodesany non-empty valueInclude the account's seat records, newest first (the newest ones only, for an account with very many).
flagsany non-empty valueInclude flags: why the wallet is listed as suspicious ({ id, strong, label, detail }), or [].
Response (GET /api/account/luca.mlx?txs=1&nodes=1), locks trimmed to two
{
  "account": {
    "name": "luca.mlx",
    "pk": "53fbe3a2e4ee9ee2ad907174562e8f2fc9b2bb3e1074f8ce274935439422c4ab",
    "nonce": 7,
    "bal": { "MLX": "0", "USDT": "0", "USDC": "0" },
    "created": 1792312855563,
    "createdHeight": 1,
    "nodes": [2],
    "earned": "0",
    "referrals": 0,
    "devices": [
      {
        "pk": "02f9b1f9aec77a141ae279d386cc1cd8f9c940b3102329b27af9ae5c018cfd185d",
        "name": "MacBook Pro",
        "chip": "M5",
        "memoryGB": 16,
        "os": "macOS 26.6.2",
        "at": 1792314044695,
        "height": 2
      }
    ],
    "locks": [
      { "amount": "19999992", "until": 1793404800000, "node": 0, "kind": "compute", "from": 1792540800000 },
      { "amount": "1055555", "until": 1793923200000, "node": 0, "kind": "compute", "from": 1793059200000 }
    ]
  },
  "txs": [
    {
      "hash": "2069d74fed709fd06538433002fa7e331c389f753709a62affc2179be2bf608d",
      "tx": {
        "body": { "amount": "5000000", "to": "review.mlx", "token": "USDC", "type": "transfer" },
        "chain": "mlx-1",
        "from": "luca.mlx",
        "nonce": 7,
        "pk": "53fbe3a2e4ee9ee2ad907174562e8f2fc9b2bb3e1074f8ce274935439422c4ab",
        "sig": "8c806f69381a9d190528ba2a15e42d6feadf0b184e4b77769fcb1c6413444d28be7196ab1bef8195bc16d904b030bb173dbcf24c8e1d2ed2b214564b28033e04",
        "ts": 1793018575027
      },
      "status": "success",
      "receivedAt": 1793018575432,
      "effects": [{ "kind": "transfer", "token": "USDC", "from": "luca.mlx", "to": "review.mlx", "amount": "5000000" }],
      "height": 347,
      "index": 0
    }
  ],
  "nodes": [
    {
      "id": 2,
      "owner": "luca.mlx",
      "tier": "S",
      "reward": "0",
      "base": 24999.566786837695,
      "position": 3.75,
      "device": { "class": "mac", "chip": "M5", "appleSilicon": true, "cores": 8, "screen": "1800x1169@2", "model": "MacBook" },
      "country": "SE",
      "height": 80,
      "tx": "e74fb256b0faa50d1863fa8064e49540f74543c56a9c5d0aecec88cda6eacae7",
      "ts": 1792519094698,
      "status": "pledged",
      "unlockAt": 1793383094698
    }
  ]
}

Account fields

FieldTypeNotes
namestringThe wallet name.
pkstring or nullThe wallet's Ed25519 public key (its Public Wallet address), hex. null for protocol accounts, which only the sequencer moves.
nonceintegerThe nonce of its last successful transaction (0 after create_account). Its next transaction signs nonce + 1; see Submitting.
balobjectSpendable balances per token, base units. Locked MLX is not in bal.MLX; it is in locks. A token the account never held can be missing.
created, createdHeightintegerWhen and in which block the account was created.
referrerstringWho referred it, if anyone.
nodesinteger[]Ids of the dedicated seats it holds.
earnedstringMLX from up-front seat rewards and referrals (the old model), base units.
referralsintegerWallets it referred.
systemtrueOn protocol accounts.
locksarrayLocked MLX: amount (base units), until (unlock time, ms), kind (compute for mined MLX, node or referral for old up-front rewards, swap), node (the seat id, 0 when none) and, on mined MLX, from (the UTC day it was mined). Mined MLX is one lock per day. See Lock-ins.
devicesarrayLinked Macs: pk (the Mac's own key), name (the kind of Mac, never its own name), chip, memoryGB, os, at (when linked, ms) and height (the block it was linked in).
issuedstringbridge.mlx only: USDC issued for deposits and liquidity, base units.

A lock whose until has passed stays listed until the account's next transaction folds it into bal.MLX; it is spendable from its until. To get what is locked right now, add up the locks with until in the future, or read locked from the mining endpoint.

The history in txs is the ledger's per-account list, which keeps only the newest transactions. Hourly compute rewards aren't added to it (there would be one an hour); mined MLX shows in locks, in /api/compute and in live mining.

GET /api/account/{name}/mining

GEThttps://mlx.app/api/account/treasury.mlx/mining

Live mining for one wallet: MLX earned in hours not yet paid, how fast it is growing, and the locked MLX read at the same moment. This is what the MLX Wallet counts up from. Not cached; poll it.

ParameterTypeNotes
namestring (path)The full wallet name.
Response (GET /api/account/luca.mlx/mining)
{
  "at": 1793116884577,
  "locked": "98999505",
  "pending": "791666",
  "rate": 0.00023147916666666667,
  "active": true,
  "macs": 1,
  "state": "mining",
  "kinds": {
    "02f9b1f9aec77a141ae279d386cc1cd8f9c940b3102329b27af9ae5c018cfd185d": "macbook-pro"
  },
  "models": {
    "02f9b1f9aec77a141ae279d386cc1cd8f9c940b3102329b27af9ae5c018cfd185d": { "name": "MacBook Pro 14-inch", "art": "macbook-pro" }
  }
}
FieldTypeNotes
atintegerWhen it was read, ms.
lockedstringMLX locked right now (every lock with until in the future), base units.
pendingstringMLX earned in the running hour (and an hour that just ended but isn't settled yet), base units. It moves into locked when the hour is paid.
ratenumberGrowth of pending in whole MLX per second, while a Mac is working. 0 when nothing is.
activebooleanA linked Mac is working or ready now and the hour has earned something.
macsintegerLinked Macs that count as mining right now.
statestringmining, paused (the online Macs are paused or stopped), waiting (online but not eligible) or idle (no Mac online, or none linked).
kindsobjectPer linked Mac's key: what kind of Mac it is (macbook-pro, mac-mini…), when known.
modelsobjectPer linked Mac's key: the model (name) and the drawing used for it (art, a file under mlx.app/macs/<art>.svg), when known.

To show a live number, add rate × (now − at) / 1000 to pending between polls. The rewards themselves are explained on Rewards.

GET /api/name/{name}

GEThttps://mlx.app/api/name/luca

Whether a wallet name can be registered. .mlx is added when missing, and the name is lower-cased.

ParameterTypeNotes
namestring (path)With or without .mlx.
Response
{ "name": "treasury.mlx", "available": false, "reason": "That name is reserved." }
FieldTypeNotes
namestringThe name as it would be registered.
availablebooleanFree to take right now. Nothing is held for you: the first create_account to be sealed wins.
reasonstring or nullWhy not: a rule it breaks (length, characters, reserved names and look-alikes of protocol names) or "<name> is taken".

GET /api/key/{pk}

GEThttps://mlx.app/api/key/53fbe3a2e4ee9ee2ad907174562e8f2fc9b2bb3e1074f8ce274935439422c4ab

The account behind a Public Wallet key (the wallet's Ed25519 public key, 64 hex characters). Returns { "account": … } in the format above, with Macs by kind.

ParameterTypeNotes
pkstring (path)Hex, any case.
GEThttps://mlx.app/api/search?q=%232

Resolves what someone typed into the explorer's search box to a page on explorer.mlx.app.

ParameterTypeNotes
qstring#12 (a seat), 12 (a block height, else a seat id), a 64-hex hash (a transaction, else a wallet key) or a wallet name with or without .mlx.
Response
{ "to": "/node/2" }

to is a path on explorer.mlx.app (/block/<height>, /node/<id>, /tx/<hash>, /account/<name>), or null when nothing matched.

Errors

StatusWhen
404/api/account/{name} and /mining: "Account not found". /api/key/{pk}: "No account uses this key".
500The ledger couldn't be read.

/api/name and /api/search always answer 200: an invalid name comes back with available: false and its reason, and no match is { "to": null }.

Suspicious accounts

explorer.mlx.app/accounts → Suspicious accounts lists wallets whose behaviour looks automated or abusive. Each flag says what was seen; none is a verdict about who runs the wallet. A wallet is listed with one strong flag or two weak ones, recomputed every few minutes.

Flag (id)StrongWhen
probing2 or moreTransactions sealed as failed with errors no wallet or app produces (unknown type, malformed amount, unknown token). One is a weak flag.
door3 or moreSigned transactions refused at POST /api/tx as malformed. Fewer are weak.
failures / failing10 or more failedMany failed transactions (strong); 3 or more failed and more failed than successful (weak).
lookalikeyesThe name has a staff word as one of its parts (official-…, …-support). New names like this can't be registered.
machinenoA random hex tail (…-3f3fa1), as scripts name wallets.
burstyesA machine-made name, opened within 15 minutes of 3 or more wallets flagged on their own.
networknoOpened from one network with 4 or more other wallets within an hour (the network is kept only as a one-way hash, for 30 days).
referrednoReferred by a listed wallet.
mac-execyesA linked Mac failed most of its execution checks (2 or more failed).
mac-chipyesA linked Mac reports a chip its model identifier never shipped with (chip checks).
mac-hopsnoA linked Mac was linked to 3 or more different wallets in 30 days (Fair use).
mac-keysnoThe same Mac (by its hardware ID) used 4 or more device keys in 30 days.
mac-hwid2 or moreA linked Mac's device key reported a different hardware ID than its first. One is a weak flag.
mac-speed, mac-answersnoA linked Mac far slower than its chip, or whose answers mostly disagree with its GPU group's.
manualyesFlagged by MLX Network after a review, with the reason. MLX Network can also clear a wallet the rules flag by mistake.

Write to support@mlx.app if you think a wallet is listed by mistake.