Skip to Content
API ReferenceMarketplaceOverview

Marketplace

Marketplace exposes published contracts as Spectrum JSON-RPC methods. Contract addresses and ABIs come from the marketplace catalog — each selected ABI item is callable by its own method name:

spectrum_<appId>_<chain>_<deploymentName>_<operation>_<abiName>

  • Concrete deployments bake chain and contract address into that name, so callers do not pass them.
  • Template apps omit the chain segment (spectrum_<appId>_<deploymentName>_<operation>_<abiName>). Callers must supply chain and address in the call body.
  • The same deployment name may be reused on other chains (names are unique per chain within an app).
  • operation encodes how the ABI item is invoked, keeping reads, simulations, and log queries distinct:
OperationKindBehavior
callFunction (view / pure)Read via eth_call. Returns positional outputs.
simulateCallFunction (state-changing)Simulated via eth_simulateV1, so nothing is broadcast on-chain. Response adds status, gasUsed, and logs.
getLogsEventQueried via eth_getLogs with decoded args. Same block-window / cursor pagination as getLogs (max 10,000 blocks).

EVM chains only. Argument mismatches and overloaded names return 400. Unpublished method names return 404.

SDK: spectrum.marketplace — see Namespaces.

Published apps

Open an app for its deployments and a request example per published method. The endpoints further down return the same catalog programmatically.

Lido API logo
Lido API
45 methods · 3 deployments

API for Lido contracts

Staking
ERC721 API logo
ERC721 API
10 methods

API for ERC721 (NFT) Contracts

NFT
ERC20 API logo
ERC20 API
8 methods

API for ERC20 Contracts

Tokens
ether.fi weETH API logo
ether.fi weETH API
10 methods

API for ether.fi weETH contracts

Staking
Ethena sUSDe API logo
Ethena sUSDe API
11 methods

API for Ethena sUSDe contracts

Staking
cbETH API logo
cbETH API
10 methods

API for cbETH contracts

Staking
Rocket Pool Contracts API logo
Rocket Pool Contracts API
13 methods

API for Rocket Pool Contracts

Staking
1Inch Contracts API logo
1Inch Contracts API
18 methods · 6 deployments

API for 1Inch contracts

DEX
Safe Multisig API logo
Safe Multisig API
8 methods

API for Safe Multisig

Wallets

List methods

Discover published functions and events. Filter by chain, appId, and/or abiType.

listMarketplaceMethods

Lists published marketplace methods: functions and events. Each entry is uniquely callable by its `method` name (`spectrum_<appId>_<chain>_<deploymentName>_<operation>_<abiName>`, where `operation` is `call`, `simulateCall`, or `getLogs`). Concrete deployments bake chain and address into that name; template methods (no chain segment) require `chain` and `address` when called.

curl -X POST https://your-endpoint.simplystaking.xyz/v1 \
  -H "Content-Type: application/json" \
{
  "jsonrpc": "2.0",
  "method": "listMarketplaceMethods",
  "params": {
    "chain": "ethereum",
    "appId": "lido"
  },
  "id": 1
}

Parameters

NameRequiredDescription
chainnoFilter by marketplace chain slug
e.g. ethereum
appIdnoFilter by marketplace app id
e.g. lido
abiTypenoFilter by ABI item type
Options: function, event

Response Fields

FieldType
data.methodsarray
data.methods[].methodstring
data.methods[].abiNamestring
data.methods[].abiTypestring
data.methods[].paramsarray
data.methods[].appIdstring
data.methods[].deploymentNamestring
data.methods[].isTemplateboolean
data.methods[].chainstring | null
data.methods[].addressstring | null
Try It
Demo endpoint: one request per second. Get your own endpoint for higher limits.
{
  "jsonrpc": "2.0",
  "method": "listMarketplaceMethods",
  "params": {
    "chain": "ethereum",
    "appId": "lido"
  },
  "id": 1
}

Get contract

Fetch one app by appId: metadata, deployments (ABI + address), and selected methods.

getMarketplaceContract

Returns one marketplace contract by `appId`: metadata, deployments (chain, address, ABI), and selected published methods.

curl -X POST https://your-endpoint.simplystaking.xyz/v1 \
  -H "Content-Type: application/json" \
{
  "jsonrpc": "2.0",
  "method": "getMarketplaceContract",
  "params": {
    "appId": "lido"
  },
  "id": 1
}

Parameters

NameRequiredDescription
appIdyesMarketplace app id
e.g. lido

Response Fields

FieldType
data.appIdstring
data.namestring
data.isTemplateboolean
data.deploymentsarray
data.deployments[].namestring
data.deployments[].chainstring | null
data.deployments[].addressstring | null
data.deployments[].methodsarray
Try It
Demo endpoint: one request per second. Get your own endpoint for higher limits.
{
  "jsonrpc": "2.0",
  "method": "getMarketplaceContract",
  "params": {
    "appId": "lido"
  },
  "id": 1
}

Call a method

Use the method string returned by list / get contract as the JSON-RPC method.

Functionsoutputs is positional (one entry per ABI output). Integers are decimal strings; nested tuples are arrays. Names and types come from the params metadata on list.

Events — response matches getLogs pagination (count, limit, hasMore, cursor, logs). Each log includes positional decoded args. Non-indexed event inputs cannot be used as topic filters and must be null/omitted in args.

Example below calls a published balanceOf function. Swap the method name for any published function or event from list.

spectrum_lido_ethereum_wsteth_call_balanceOf

Calls a published marketplace method by its JSON-RPC name (`spectrum_<appId>_<chain>_<deploymentName>_<operation>_<abiName>` from list). Operation is `call` (view/pure via `eth_call`), `simulateCall` (non-view via `eth_simulateV1`, so nothing is broadcast; response includes `status`/`gasUsed`/`logs`), or `getLogs` (decoded event logs with the same block-window / cursor pagination as `getLogs`, max 10,000 blocks). EVM only. Concrete deployments resolve chain/address from the method name; template methods (no chain segment) require `chain` and `address` in params.

curl -X POST https://your-endpoint.simplystaking.xyz/v1 \
  -H "Content-Type: application/json" \
{
  "jsonrpc": "2.0",
  "method": "spectrum_lido_ethereum_wsteth_call_balanceOf",
  "params": {
    "args": [
      "0x0000000000000000000000000000000000000001"
    ],
    "from": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
    "height": "latest",
    "chain": "ethereum"
  },
  "id": 1
}

Parameters

NameRequiredDescription
argsnoFunction arguments, or positional topic filters for indexed event inputs (default [])
e.g. 0x0000000000000000000000000000000000000001
fromnoSender for function simulation (`msg.sender`)
e.g. 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045
valuenoWei value for payable function simulation
heightnoBlock height for function simulation (`latest` or a block number)
e.g. latest
chainnoRequired for template methods only
addressnoRequired for template methods only
fromBlocknoStart block for event queries (same as getLogs)
toBlocknoEnd block for event queries (default latest)
cursornoPagination cursor for event queries

Response Fields

FieldType
data.operationstring
data.abiTypestring
data.outputsarray
data.statusstring
data.gasUsedstring
data.logsarray
data.countnumber
data.hasMoreboolean
data.cursorstring | number | null

Supported Networks

EthereumPolygonBNB ChainOptimismBaseAvalancheArbitrumGnosisMoonbeamLineaHyperliquidBerachainMonadScrollPlasmaX Layer
Try It
Demo endpoint: one request per second. Get your own endpoint for higher limits.
{
  "jsonrpc": "2.0",
  "method": "spectrum_lido_ethereum_wsteth_call_balanceOf",
  "params": {
    "chain": "ethereum",
    "args": [
      "0x0000000000000000000000000000000000000001"
    ],
    "from": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
    "height": "latest"
  },
  "id": 1
}