STRATOscan API
Etherscan-compatible HTTP API for STRATO mainnet. No API key required.
Overview
The STRATOscan API follows the Etherscan API’s request and response format, so tools written for Etherscan work against STRATO by changing the base URL. It serves the same chain data as the explorer.
- Base URL
- https://stratoscan.strato.nexus/api
- Etherscan v2 style
- https://stratoscan.strato.nexus/v2/api?chainid=123354377739506
- Chain ID
- 123354377739506 (0x7030addddcf2)
- Method
GETwith query parameters. CORS is open (Access-Control-Allow-Origin: *).- API key
- Not required. An
apikeyparameter is accepted and ignored. - JSON-RPC
- https://app.strato.nexus/rpc
chainid is optional on both base URLs. If you send it, it must be 123354377739506. Any other value is an error. net_version on STRATO is the network name as a number, not the chain ID. Use eth_chainId.
curl "https://stratoscan.strato.nexus/api?module=account&action=balance&address=0x000000000000000000000000000000000000100d&tag=latest"Response format
Every response is HTTP 200 with Etherscan’s envelope. status is "1" on success and "0" otherwise. On an error, result is the error message. An empty list is status 0 with an empty array.
Success
{
"status": "1",
"message": "OK",
"result": "…"
}Error
{
"status": "0",
"message": "NOTOK",
"result": "Error! Invalid address format"
}Empty list
{
"status": "0",
"message": "No transactions found",
"result": []
}- Numbers are decimal strings in base units (no
0x). USDST and most tokens use 18 decimals. - Addresses and hashes are lowercase and 0x-prefixed.
- Timestamps are unix seconds, as strings.
- A field STRATO can’t provide is an empty string. Nothing is estimated or filled in.
- The
proxymodule answers in JSON-RPC shape instead, as Etherscan’s does.
Rate limits
Limits are per client IP and shared with the rest of the explorer’s API. Past a limit, the response is {"status":"0","message":"NOTOK","result":"Max rate limit reached"} with a Retry-After header in seconds.
| Tier | Actions | Limit |
|---|---|---|
| Single read | balance, tokenbalance, getabi, getstatus, gettxreceiptstatus, proxy | 60 requests per minute, burst 60 |
| List | txlist, tokentx, balancemulti, getblocknobytime | 30 credits per minute, burst 30. txlist and tokentx cost 1 credit per 100 rows requested (offset=1000 costs 10); the others cost 1. |
Accounts
GET /api?module=account&action=balanceBalance of the chain's native token for one address, in base units (18 decimals). On STRATO the native token is USDST, and this is exactly what eth_getBalance and MetaMask report.
| Parameter | Required | Description |
|---|---|---|
| address | yes | Account address. |
| tag | no | Only latest (the default) is supported. STRATO has no historical state reads. |
Example request
curl "https://stratoscan.strato.nexus/api?module=account&action=balance&address=0x000000000000000000000000000000000000100d&tag=latest"Example response
{
"status": "1",
"message": "OK",
"result": "59918362825378007997583"
}GET /api?module=account&action=balancemultiSame as balance for up to 20 addresses in one call.
| Parameter | Required | Description |
|---|---|---|
| address | yes | Comma-separated addresses, at most 20. |
| tag | no | Only latest (the default) is supported. STRATO has no historical state reads. |
Example request
curl "https://stratoscan.strato.nexus/api?module=account&action=balancemulti&address=0x000000000000000000000000000000000000100d,0x0000000000000000000000000000000000001005&tag=latest"Example response
{
"status": "1",
"message": "OK",
"result": [
{
"account": "0x000000000000000000000000000000000000100d",
"balance": "59918362825378007997583"
},
{
"account": "0x0000000000000000000000000000000000001005",
"balance": "0"
}
]
}GET /api?module=account&action=txlistTransactions sent from or to an address.
| Parameter | Required | Description |
|---|---|---|
| address | yes | Account address. |
| startblock | no | First block to include. Default 0. |
| endblock | no | Last block to include. Default latest; latest is accepted. |
| page | no | 1-based page number. Default 1. |
| offset | no | Rows per page. Default 100, maximum 1000 (larger values are clamped). page × offset may not exceed 10,000. |
| sort | no | asc (default) or desc by block, then position in block. |
inputis the raw calldata. SolidVM function calls carry a function name and arguments instead of ABI calldata, so for theminputandmethodIdare0xandfunctionNameholds the bare function name (no parameter list).gasis the gas limit.gasUsedis what STRATO reports, which today echoes the gas limit.cumulativeGasUsedis the sum of STRATO-reportedgasUsedup to and including this transaction in its block.gasPriceis 0: fees are a flat 0.01 USDST per transaction, charged as a USDST transfer to the FeeCollector.contractAddressis set only for contract-creation transactions.confirmationsis latest block − blockNumber + 1.
Example request
curl "https://stratoscan.strato.nexus/api?module=account&action=txlist&address=0x523fef378674d39363aa8b6ac5122e301c528432&startblock=385870&endblock=385870&page=1&offset=10&sort=asc"Example response
{
"status": "1",
"message": "OK",
"result": [
{
"blockNumber": "385870",
"timeStamp": "1790438342",
"hash": "0x4a9b8b9481d0d45e9bb81a7b3ddf67dff316692a48b3ad29111dfcfcb645e966",
"nonce": "66966",
"blockHash": "0xf732508b8cf3736fbee106006dbf80c13c7a2d57920d00f94d0ab7af25ba744c",
"transactionIndex": "0",
"from": "0x523fef378674d39363aa8b6ac5122e301c528432",
"to": "0x0000000000000000000000000000000000001002",
"value": "0",
"gas": "32100000000",
"gasPrice": "0",
"isError": "0",
"txreceipt_status": "1",
"input": "0x",
"contractAddress": "",
"cumulativeGasUsed": "32100000000",
"gasUsed": "32100000000",
"confirmations": "286",
"methodId": "0x",
"functionName": "setExchangeRates"
},
{
"blockNumber": "385870",
"timeStamp": "1790438342",
"hash": "0x0102d4a30f3c5920abe5c1f0c25fd91078b1e7f1a42a99aa604afcb89a34b884",
"nonce": "66967",
"blockHash": "0xf732508b8cf3736fbee106006dbf80c13c7a2d57920d00f94d0ab7af25ba744c",
"transactionIndex": "1",
"from": "0x523fef378674d39363aa8b6ac5122e301c528432",
"to": "0x0000000000000000000000000000000000001002",
"value": "0",
"gas": "32100000000",
"gasPrice": "0",
"isError": "0",
"txreceipt_status": "1",
"input": "0x",
"contractAddress": "",
"cumulativeGasUsed": "64200000000",
"gasUsed": "32100000000",
"confirmations": "286",
"methodId": "0x",
"functionName": "setAssetPrices"
},
{
"blockNumber": "385870",
"timeStamp": "1790438342",
"hash": "0x6476a87049a13cb6ccedbabcdd7d85c06514b1fe3fed326843403151918ae81f",
"nonce": "66968",
"blockHash": "0xf732508b8cf3736fbee106006dbf80c13c7a2d57920d00f94d0ab7af25ba744c",
"transactionIndex": "2",
"from": "0x523fef378674d39363aa8b6ac5122e301c528432",
"to": "0x0000000000000000000000000000000000001002",
"value": "0",
"gas": "32100000000",
"gasPrice": "0",
"isError": "0",
"txreceipt_status": "1",
"input": "0x",
"contractAddress": "",
"cumulativeGasUsed": "96300000000",
"gasUsed": "32100000000",
"confirmations": "286",
"methodId": "0x",
"functionName": "setRebaseFactors"
}
]
}GET /api?module=account&action=tokentxERC-20 Transfer events where the address is the sender or recipient. Pass contractaddress to restrict to one token, or pass only contractaddress to list every transfer of that token.
| Parameter | Required | Description |
|---|---|---|
| address | no | Account address. Required unless contractaddress is given. |
| contractaddress | no | Token contract to filter by. |
| startblock | no | First block to include. Default 0. |
| endblock | no | Last block to include. Default latest; latest is accepted. |
| page | no | 1-based page number. Default 1. |
| offset | no | Rows per page. Default 100, maximum 1000 (larger values are clamped). page × offset may not exceed 10,000. |
| sort | no | asc (default) or desc by block, then position in block. |
- Token name, symbol and decimals come from the STRATO token registry, falling back to the token's own name()/symbol()/decimals(). A value neither can provide is an empty string.
- Transaction-level fields (nonce, gas, gasPrice, gasUsed, input) follow the txlist notes above.
- Pages whose transfers are spread across many blocks cost one block read per distinct block, so offset=1000 over scattered history can take several seconds. Keep offset at or below 100 where you can.
Example request
curl "https://stratoscan.strato.nexus/api?module=account&action=tokentx&address=0x000000000000000000000000000000000000100d&contractaddress=0x937efa7e3a77e20bbdbd7c0d32b6514f368c1010&startblock=385869&endblock=385869&page=1&offset=10&sort=asc"Example response
{
"status": "1",
"message": "OK",
"result": [
{
"blockNumber": "385869",
"timeStamp": "1790438340",
"hash": "0x9d851e17e1311f427ad519dba084225cac8a1984927e9311218e875f9823dbf2",
"nonce": "54429",
"blockHash": "0xd0d7f2ee1eb7d3ae428529feb797097d3230dda3f64cda0445eed90d063ca5ab",
"from": "0x96156a5303cb2b54d983122cdf1ce809aa2e889f",
"contractAddress": "0x937efa7e3a77e20bbdbd7c0d32b6514f368c1010",
"to": "0x000000000000000000000000000000000000100d",
"value": "10000000000000000",
"tokenName": "USDST",
"tokenSymbol": "USDST",
"tokenDecimal": "18",
"transactionIndex": "0",
"gas": "1000000",
"gasPrice": "0",
"gasUsed": "1000000",
"cumulativeGasUsed": "1000000",
"input": "0x",
"confirmations": "287"
}
]
}GET /api?module=account&action=tokenbalancebalanceOf(address) on a token contract, in the token's base units.
| Parameter | Required | Description |
|---|---|---|
| contractaddress | yes | Token contract address. |
| address | yes | Holder address. |
| tag | no | Only latest (the default) is supported. STRATO has no historical state reads. |
- If the contract doesn't answer balanceOf, the result is an error rather than 0.
Example request
curl "https://stratoscan.strato.nexus/api?module=account&action=tokenbalance&contractaddress=0x937efa7e3a77e20bbdbd7c0d32b6514f368c1010&address=0x000000000000000000000000000000000000100d&tag=latest"Example response
{
"status": "1",
"message": "OK",
"result": "59918362825378007997583"
}Contracts
GET /api?module=contract&action=getabiThe contract's ABI as a JSON string (Etherscan convention: parse result with JSON.parse). Built from the metadata STRATO keeps for every SolidVM contract. There's no separate verification step.
| Parameter | Required | Description |
|---|---|---|
| address | yes | Contract address. |
- Includes public/external functions, the constructor, events, custom errors, and getters for public state variables with elementary types. Structs become
tuples. - SolidVM-only
Decimalvalues are reported as uint256. - BLOC's metadata doesn't say whether a named type from another file is a contract or an enum. Names that match a deployed contract, or follow the
I…interface convention, are typedaddress; the rest are typed as enums (uint8). - Returns
Contract source code not verifiedwhen STRATO has no metadata for the address (for example, an externally owned account).
Example request
curl "https://stratoscan.strato.nexus/api?module=contract&action=getabi&address=0x0000000000000000000000000000000000001012"Example response (result truncated)
{
"status": "1",
"message": "OK",
"result": "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_logicContract\",\"type\":\"address\"},{\"name\":\"_initialOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"cdpEngine\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contract CDPEngine\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"cdpReserve\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contract C…"
}Transactions
GET /api?module=transaction&action=getstatusisError is 1 when the transaction failed; errDescription carries the VM's reason.
| Parameter | Required | Description |
|---|---|---|
| txhash | yes | Transaction hash. |
Example request
curl "https://stratoscan.strato.nexus/api?module=transaction&action=getstatus&txhash=0x4a9b8b9481d0d45e9bb81a7b3ddf67dff316692a48b3ad29111dfcfcb645e966"Example response
{
"status": "1",
"message": "OK",
"result": {
"isError": "0",
"errDescription": ""
}
}GET /api?module=transaction&action=gettxreceiptstatusstatus is 1 for success, 0 for failure, empty for an unknown hash.
| Parameter | Required | Description |
|---|---|---|
| txhash | yes | Transaction hash. |
Example request
curl "https://stratoscan.strato.nexus/api?module=transaction&action=gettxreceiptstatus&txhash=0x4a9b8b9481d0d45e9bb81a7b3ddf67dff316692a48b3ad29111dfcfcb645e966"Example response
{
"status": "1",
"message": "OK",
"result": {
"status": "1"
}
}Blocks
GET /api?module=block&action=getblocknobytimeThe last block at or before (or the first at or after) a unix timestamp.
| Parameter | Required | Description |
|---|---|---|
| timestamp | yes | Unix time in seconds. |
| closest | no | before (default) or after. |
Example request
curl "https://stratoscan.strato.nexus/api?module=block&action=getblocknobytime×tamp=1790438340&closest=before"Example response
{
"status": "1",
"message": "OK",
"result": "385869"
}Geth proxy
GET /api?module=proxy&action=eth_blockNumberJSON-RPC passthrough. Like Etherscan's proxy module, answers in JSON-RPC shape ({jsonrpc, id, result}), not the status envelope.
Example request
curl "https://stratoscan.strato.nexus/api?module=proxy&action=eth_blockNumber"Example response
{
"jsonrpc": "2.0",
"id": 1,
"result": "0x5e46b"
}GET /api?module=proxy&action=eth_getTransactionByHashJSON-RPC passthrough.
| Parameter | Required | Description |
|---|---|---|
| txhash | yes | Transaction hash. |
Example request
curl "https://stratoscan.strato.nexus/api?module=proxy&action=eth_getTransactionByHash&txhash=0x4a9b8b9481d0d45e9bb81a7b3ddf67dff316692a48b3ad29111dfcfcb645e966"Example response
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"blockHash": "0xf732508b8cf3736fbee106006dbf80c13c7a2d57920d00f94d0ab7af25ba744c",
"blockNumber": "0x5e34e",
"from": "0x523fef378674d39363aa8b6ac5122e301c528432",
"gas": "0x7794f2100",
"gasPrice": "0x0",
"hash": "0x4a9b8b9481d0d45e9bb81a7b3ddf67dff316692a48b3ad29111dfcfcb645e966",
"input": "0x",
"nonce": "0x10596",
"r": "0xe146e940711d5407d993d947b17c3df41a6e5ff86cfa8a13110981e8642f04a1",
"s": "0x3f82c5d053641ba96b13a113497893a58d04f31e6af9d52d6832cbe99687754c",
"to": "0x0000000000000000000000000000000000001002",
"transactionIndex": "0x0",
"v": "0x1c",
"value": "0x0"
}
}GET /api?module=proxy&action=eth_getTransactionReceiptJSON-RPC passthrough, returned as the node sends it. Known node issue: transactionIndex is always 0x0 and cumulativeGasUsed equals gasUsed. Use txlist or eth_getTransactionByHash for the index.
| Parameter | Required | Description |
|---|---|---|
| txhash | yes | Transaction hash. |
Example request
curl "https://stratoscan.strato.nexus/api?module=proxy&action=eth_getTransactionReceipt&txhash=0x4a9b8b9481d0d45e9bb81a7b3ddf67dff316692a48b3ad29111dfcfcb645e966"Example response
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"blockHash": "0xf732508b8cf3736fbee106006dbf80c13c7a2d57920d00f94d0ab7af25ba744c",
"blockNumber": "0x5e34e",
"contractAddress": null,
"cumulativeGasUsed": "0x7794f2100",
"from": "0x523fef378674d39363aa8b6ac5122e301c528432",
"gasUsed": "0x7794f2100",
"logs": [
{
"address": "0x000000000000000000000000000000000000100e",
"blockHash": "0xf732508b8cf3736fbee106006dbf80c13c7a2d57920d00f94d0ab7af25ba744c",
"blockNumber": "0x5e34e",
"data": "0x0000000000000000000000000000000000000000000000000de0b6b3a7640000",
"logIndex": "0x1",
"removed": false,
"topics": [
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
"0x000000000000000000000000523fef378674d39363aa8b6ac5122e301c528432",
"0x0000000000000000000000000000000000000000000000000000000000000000"
],
"transactionHash": "0x4a9b8b9481d0d45e9bb81a7b3ddf67dff316692a48b3ad29111dfcfcb645e966",
"transactionIndex": "0x0"
},
{
"address": "0x000000000000000000000000000000000000100c",
"blockHash": "0xf732508b8cf3736fbee106006dbf80c13c7a2d57920d00f94d0ab7af25ba744c",
"blockNumber": "0x5e34e",
"data": "0x0000000000000000000000000000000000000000000000000000000000001002000000000000000000000000523fef378674d39363aa8b6ac5122e301c528432000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000406436356137636331326665633938333234653630316239356530333935316138656435333166326437663864366333626135616230306332306232316631656600000000000000000000000000000000000000000000000000000000000010020000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001073657445786368616e67655261746573000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"logIndex": "0x3",
"removed": false,
"topics": [
"0x92cfc217de862514036b98ee037574b1b32ab8924f553caf2bc18b652fa75092"
],
"transactionHash": "0x4a9b8b9481d0d45e9bb81a7b3ddf67dff316692a48b3ad29111dfcfcb645e966",
"transactionIndex": "0x0"
}
],
"logsBloom": "0x00000000000000000000000000004000000000000000000000000000000000800000000000000000000000000000000000000000400000000000020000000000000000000000000000000008000000000000080000000000000000000000000000000000020000000000000000000800000000000000000000000010200000000000000000000002000000000000000000000002000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000002000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000020000020000000000000800000",
"status": "0x1",
"to": "0x0000000000000000000000000000000000001002",
"transactionHash": "0x4a9b8b9481d0d45e9bb81a7b3ddf67dff316692a48b3ad29111dfcfcb645e966",
"transactionIndex": "0x0",
"type": "0x0"
}
}Differences from Etherscan
- The native balance is USDST. STRATO has no separate gas coin.
eth_getBalance,balanceand MetaMask all report the account’s USDST balance (0x937efa7e3a77e20bbdbd7c0d32b6514f368c1010), and a plain value transfer moves USDST. - Flat fees, no gas price. Every transaction costs 0.01 USDST, charged as a USDST transfer to the FeeCollector (
0x…100d), so fee payments show up intokentx.gasPriceis 0, andgasUsedechoes the gas limit rather than metering execution. - SolidVM contracts. Most transactions are SolidVM function calls identified by name, with no ABI calldata:
inputandmethodIdare0xandfunctionNameis the bare name. ABIs are generated from the metadata STRATO stores for every contract, so there is no separate verification step and no source code in the response. - No historical state. Only
tag=latestis supported for balances. - Page size. Default 100 rows, maximum 1000. page × offset is capped at 10,000 as on Etherscan; use startblock/endblock to go further.
- Not yet available: internal transactions (
txlistinternal), ERC-721/1155 transfer lists, event logs (getLogs), source code (getsourcecode), and stats modules.
Example responses are real STRATO mainnet data, captured on 2026-09-26; confirmations will have grown since. See also the network stats and node info pages.