Pricing
What is Indicative Pricing?
Indicative Pricing allows players to learn valuation and market data for a particular asset without requiring the orderbook.
Players often struggle with price discovery when listing assets, which affects liquidity. By offering indicative prices based on market data such as last trade and floor price, games can provide accurate pricing tailored to their unique economic models. Ultimately, this means players can learn the value of a particular asset, without needing to study the orderbook each time.
How does Indicative Pricing work?
Indicative Pricing is powered by our Marketplace API endpoints. See below for usage information.
Why use Indicative Pricing?
Indicative Pricing simplifies the listing process, improves liquidity and encourages players to engage more frequently in transactions, ultimately enhancing royalty fee generation.
Limitations
Only ERC-20s that are listed on CoinGecko’s Immutable ERC-20 List can be fully supported by the Indicative Pricing feature. For more information on how to get your custom ERC-20 on Immutable’s API endpoint, please reach out to your account representative.
How do I implement Indicative Pricing?
Indicative Pricing utilises 2 key endpoints described below. You can leverage each one for your specific use case:
1. Get pricing data for a list of Stack IDs
Given a particular Metadata Stack ID for a collection, get market listing and pricing details. The pricing details returned are for both floor listing and last trade.
Use cases
- Show pricing details for a specific Metadata Stack
- Show pricing details for a collection
Request Parameters
Parameter | Description | Required |
---|---|---|
chainName | String representing the name of the chain. A list of available chains can be found here | Yes |
contractAddress | The contract address of ERC721 contract you want to filter by | Yes |
stackId | Metadata Stack ID to filter by | Yes |
Pagination parameters | Parameters such as page_size and page_cursor that allow you to control the size and order of the data retrieved | No |
- SDK
- API
import { blockchainData } from '@imtbl/sdk';
import { client } from '../lib';
export async function quotesForStacks(
chainName: string,
contractAddress: string,
stackId: string[],
): Promise<blockchainData.Types.QuotesForStacksResult> {
return await client.quotesForStacks({
chainName,
contractAddress,
stackId,
});
}
GET /chains/{chain_name}/quotes/{contract_address}/stacks
Example response
{
"result": [
{
"chain": {
"id": "eip155:13372",
"name": "imtbl-zkevm-testnet"
},
"stack_id": "8d268dcf-caa3-4f85-9d09-6ac2a48a6fde",
"market_stack": {
"floor_listing": {
"listing_id": "018792C9-4AD7-8EC4-4038-9E05C598534A",
"price_details": {
"token": {
"type": "NATIVE",
"symbol": "IMX"
},
"amount": "9750000000000000000",
"fee_inclusive_amount": "9750000000000000000",
"fees": [
{
"type": "TAKER_ECOSYSTEM",
"recipient_address": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92233",
"amount": "1000000000000000000"
}
],
"converted_prices": {
"ETH": "0.0058079775",
"USD": "15.89"
}
},
"token_id": "1",
"contract_address": "0xe9b00a87700f660e46b6f5deaa1232836bcc07d3",
"creator": "0xe9b00a87700f660e46b6f5deaa1232836bcc07d3",
"amount": "1"
},
"last_trade": {
"trade_id": "4e28df8d-f65c-4c11-ba04-6a9dd47b179b",
"contract_address": "0xe9b00a87700f660e46b6f5deaa1232836bcc07d3",
"token_id": "1",
"price_details": [
{
"token": {
"type": "NATIVE",
"symbol": "IMX"
},
"amount": "9750000000000000000",
"fee_inclusive_amount": "9750000000000000000",
"fees": [
{
"type": "TAKER_ECOSYSTEM",
"recipient_address": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92233",
"amount": "1000000000000000000"
}
],
"converted_prices": {
"ETH": "0.0058079775",
"USD": "15.89"
}
}
],
"amount": "1",
"created_at": "2022-08-16T17:43:26.991388Z"
}
},
"market_collection": {}
}
],
"page": {
"previous_cursor": "ewogICJ0eXBlIjogInByZXYiLAogICJpdGVtIjogewogICAgImlkIjogNjI3NTEzMCwKICAgICJjcmVhdGVkX2F0IjogIjIwMjItMDktMTNUMTc6MDQ6MTIuMDI0MTI2WiIKICB9Cn0=",
"next_cursor": "ewogICJ0eXBlIjogInByZXYiLAogICJpdGVtIjogewogICAgImlkIjogNjI3NTEzMCwKICAgICJjcmVhdGVkX2F0IjogIjIwMjItMDktMTNUMTc6MDQ6MTIuMDI0MTI2WiIKICB9Cn0="
}
}
2. Get pricing data for a list of Token IDs
Given a specific token ID, get last trade details for the asset as well as market details for its related metadata stack and collection (particularly last trade and floor listing).
Use cases
- Create a deeper asset details page to display market and pricing data for the Token ID
- Get the last trade for a particular asset
- Show pricing details for an asset’s collection
Request Parameters
Parameter | Description | Required |
---|---|---|
chainName | String representing the name of the chain. A list of available chains can be found here | Yes |
contractAddress | The contract address of ERC721 contract you want to filter by | Yes |
tokenId | Asset Token ID to filter by | Yes |
Pagination parameters | Parameters such as page_size and page_cursor that allow you to control the size and order of the data retrieved | No |
- SDK
- API
import { blockchainData } from '@imtbl/sdk';
import { client } from '../lib';
export async function quotesForNFTs(
chainName: string,
contractAddress: string,
tokenId: string[],
): Promise<blockchainData.Types.QuotesForNFTsResult> {
return await client.quotesForNFTs({
chainName,
contractAddress,
tokenId,
});
}
GET /chains/{chain_name}/quotes/{contract_address}/nfts
Example response
{
"result": [
{
"chain": {
"id": "eip155:13372",
"name": "imtbl-zkevm-testnet"
},
"token_id": "string",
"market_stack": {
"floor_listing": {
"listing_id": "018792C9-4AD7-8EC4-4038-9E05C598534A",
"price_details": {
"token": {
"type": "NATIVE",
"symbol": "IMX"
},
"amount": "9750000000000000000",
"fee_inclusive_amount": "9750000000000000000",
"fees": [
{
"type": "TAKER_ECOSYSTEM",
"recipient_address": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92233",
"amount": "1000000000000000000"
}
],
"converted_prices": {
"ETH": "0.0058079775",
"USD": "15.89"
}
},
"token_id": "1",
"contract_address": "0xe9b00a87700f660e46b6f5deaa1232836bcc07d3",
"creator": "0xe9b00a87700f660e46b6f5deaa1232836bcc07d3",
"amount": "1"
},
"last_trade": {
"trade_id": "4e28df8d-f65c-4c11-ba04-6a9dd47b179b",
"contract_address": "0xe9b00a87700f660e46b6f5deaa1232836bcc07d3",
"token_id": "1",
"price_details": [
{
"token": {
"type": "NATIVE",
"symbol": "IMX"
},
"amount": "9750000000000000000",
"fee_inclusive_amount": "9750000000000000000",
"fees": [
{
"type": "TAKER_ECOSYSTEM",
"recipient_address": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92233",
"amount": "1000000000000000000"
}
],
"converted_prices": {
"ETH": "0.0058079775",
"USD": "15.89"
}
}
],
"amount": "1",
"created_at": "2022-08-16T17:43:26.991388Z"
}
},
"market_nft": {
"last_trade": {
"trade_id": "4e28df8d-f65c-4c11-ba04-6a9dd47b179b",
"contract_address": "0xe9b00a87700f660e46b6f5deaa1232836bcc07d3",
"token_id": "1",
"price_details": [
{
"token": {
"type": "NATIVE",
"symbol": "IMX"
},
"amount": "9750000000000000000",
"fee_inclusive_amount": "9750000000000000000",
"fees": [
{
"type": "TAKER_ECOSYSTEM",
"recipient_address": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92233",
"amount": "1000000000000000000"
}
],
"converted_prices": {
"ETH": "0.0058079775",
"USD": "15.89"
}
}
],
"amount": "1",
"created_at": "2022-08-16T17:43:26.991388Z"
}
},
"market_collection": {}
}
],
"page": {
"previous_cursor": "ewogICJ0eXBlIjogInByZXYiLAogICJpdGVtIjogewogICAgImlkIjogNjI3NTEzMCwKICAgICJjcmVhdGVkX2F0IjogIjIwMjItMDktMTNUMTc6MDQ6MTIuMDI0MTI2WiIKICB9Cn0=",
"next_cursor": "ewogICJ0eXBlIjogInByZXYiLAogICJpdGVtIjogewogICAgImlkIjogNjI3NTEzMCwKICAgICJjcmVhdGVkX2F0IjogIjIwMjItMDktMTNUMTc6MDQ6MTIuMDI0MTI2WiIKICB9Cn0="
}
}