SKILL.md
Binance Tokenized Securities Info Skill
Overview
API
Function
Use Case
Token Symbol List
List all tokenized stocks
Browse Ondo supported tickers, filter by type
RWA Meta
Tokenized stock metadata
Company info, concepts, attestation reports
Market Status
Overall market open/close
Check if Ondo market is currently trading
Asset Market Status
Per-asset trading status
Detect corporate actions (earnings, dividends, splits, mergers)
RWA Dynamic V2
Full real-time data
On-chain price, holders, US stock fundamentals, order limits
Token K-Line
Candlestick charts
OHLC data for on-chain token price technical analysis
Recommended Workflows
Scenario
Steps
Look up a stock's fundamentals and on-chain data
API 1 (get chainId + contractAddress by ticker) → API 5 (dynamic data)
Check if a stock token is tradable
API 3 (overall market status) → API 4 (per-asset status with reason code)
Research a tokenized stock
API 1 (find token) → API 2 (company metadata + attestation reports)
Get K-Line chart data
API 1 (find token) → API 6 (K-Line with interval)
Use Cases
- List Supported Stocks: Get all Ondo tokenized tickers with chain and contract info
- Company Research: Get company metadata, CEO, industry, concept tags, and attestation reports
- Market Status Check: Determine if the Ondo market is open, closed, or in pre/post-market session
- Corporate Action Detection: Check if a specific asset is paused or limited due to earnings, dividends, stock splits, mergers, or maintenance
- Real-Time Data: Get on-chain price, holder count, circulating supply, US stock P/E, dividend yield, 52-week range, and order limits
- Technical Analysis: Fetch token K-Line (candlestick) data with configurable intervals and time ranges
Key Concept: Token ≠ Share
Each token represents multiplier shares of the underlying stock, not exactly 1 share. Most tokens have a multiplier near 1.0 (cumulative dividend adjustment), but stock-split tokens can be 5.0 or 10.0 (e.g. multiplier = 10.0 means 1 token = 10 shares).
referencePrice = tokenInfo.price ÷ sharesMultiplier
See Notes §6 for common multiplier categories.
Supported Chains
Chain
chainId
Ethereum
1
BSC
56
API 1: Token Symbol List
Method: GET
URL:
https://www.binance.com/bapi/defi/v1/public/wallet-direct/buw/wallet/market/token/rwa/stock/detail/list/ai
Request Parameters:
Parameter
Type
Required
Description
type
integer
No
Filter by platform: 1 = Ondo Finance (currently the only supported tokenized stock provider). Omit to return all platforms. **Use type=1 to retrieve only Ondo tokens.**
Headers: Accept-Encoding: identity
Example:
curl 'https://www.binance.com/bapi/defi/v1/public/wallet-direct/buw/wallet/market/token/rwa/stock/detail/list/ai' \
-H 'Accept-Encoding: identity' \
-H 'User-Agent: binance-web3/1.1 (Skill)'
Response:
{
"code": "000000",
"data": [
{
"chainId": "1",
"contractAddress": "<CONTRACT_ADDRESS>",
"symbol": "<TOKEN_SYMBOL_ON>",
"ticker": "<UNDERLYING_TICKER>",
"type": 1,
"multiplier": "1.021663864228987186"
},
{
"chainId": "56",
"contractAddress": "<CONTRACT_ADDRESS>",
"symbol": "<TOKEN_SYMBOL_ON>",
"ticker": "<UNDERLYING_TICKER>",
"type": 1,
"multiplier": "1.010063782256545489"
}
],
"success": true
}
Response Fields (each item in data):
Field
Type
Description
chainId
string
Chain ID (1 = Ethereum, 56 = BSC)
contractAddress
string
Token contract address
symbol
string
Token symbol (ticker + on suffix, e.g. <TOKEN_SYMBOL_ON>)
ticker
string
Underlying US stock ticker
type
integer
Platform type: 1 = Ondo
multiplier
string
Shares multiplier (see Key Concept above, Notes §6)
API 2: RWA Meta
Method: GET
URL:
https://www.binance.com/bapi/defi/v1/public/wallet-direct/buw/wallet/market/token/rwa/meta/ai
Request Parameters:
Parameter
Type
Required
Description
chainId
string
Yes
Chain ID (e.g. 56 for BSC, 1 for Ethereum)
contractAddress
string
Yes
Token contract address
Headers: Accept-Encoding: identity
Example:
curl 'https://www.binance.com/bapi/defi/v1/public/wallet-direct/buw/wallet/market/token/rwa/meta/ai?chainId=56&contractAddress=<CONTRACT_ADDRESS>' \
-H 'Accept-Encoding: identity' \
-H 'User-Agent: binance-web3/1.1 (Skill)'
Response:
{
"code": "000000",
"data": {
"tokenId": "<TOKEN_ID>",
"name": "<TOKEN_DISPLAY_NAME>",
"symbol": "<TOKEN_SYMBOL_ON>",
"ticker": "<UNDERLYING_TICKER>",
"icon": "/images/web3-data/public/token/logos/<TOKEN_ID>.png",
"dailyAttestationReports": "/images/web3-data/public/token/ondo/pdf/daily-<DATE>.pdf",
"monthlyAttestationReports": "/images/web3-data/public/token/ondo/pdf/monthly-<MONTH>.pdf",
"companyInfo": {
"companyName": "<COMPANY_NAME_EN>",
"companyNameZh": "<公司名称>",
"homepageUrl": "",
"description": "<COMPANY_DESCRIPTION_EN>",
"descriptionZh": "<COMPANY_DESCRIPTION_CN>",
"ceo": "<CEO_NAME>",
"industry": "<INDUSTRY>",
"industryKey": "<INDUSTRY_KEY>",
"conceptsCn": ["概念标签A", "概念标签B", "概念标签C"],
"conceptsEn": ["Concept Tag A", "Concept Tag B", "Concept Tag C"]
},
"decimals": 18
},
"success": true
}
Response Fields (data):
Field
Type
Description
tokenId
string
Token unique ID
name
string
Full token name (e.g. <TOKEN_DISPLAY_NAME>)
symbol
string
Token symbol (e.g. <TOKEN_SYMBOL_ON>)
ticker
string
Underlying stock ticker (e.g. <UNDERLYING_TICKER>)
icon
string
Icon image relative path. To get the full URL, prepend https://bin.bnbstatic.com (e.g. https://bin.bnbstatic.com/images/web3-data/public/token/logos/<TOKEN_ID>.png)
dailyAttestationReports
string
Daily attestation report relative path. Prepend https://bin.bnbstatic.com to get the full URL
monthlyAttestationReports
string
Monthly attestation report relative path. Prepend https://bin.bnbstatic.com to get the full URL
companyInfo
object
Company details (see below)
decimals
integer
Token decimals (typically 18)
Company Info Fields (data.companyInfo):
Field
Type
Description
companyName
string
Company name in English
companyNameZh
string
Company name in Chinese
homepageUrl
string
Company homepage URL
description
string
Company description (English)
descriptionZh
string
Company description (Chinese)
ceo
string
CEO name
industry
string
Industry classification
industryKey
string
Industry i18n key
conceptsCn
string[]
Concept/theme tags in Chinese
conceptsEn
string[]
Concept/theme tags in English (e.g. Concept Tag A, Concept Tag B)
API 3: Market Status
Method: GET
URL:
https://www.binance.com/bapi/defi/v1/public/wallet-direct/buw/wallet/market/token/rwa/market/status/ai
Request Parameters: None
Headers: Accept-Encoding: identity
Example:
curl 'https://www.binance.com/bapi/defi/v1/public/wallet-direct/buw/wallet/market/token/rwa/market/status/ai' \
-H 'Accept-Encoding: identity' \
-H 'User-Agent: binance-web3/1.1 (Skill)'
Response:
{
"code": "000000",
"data": {
"openState": false,
"reasonCode": "MARKET_PAUSED",
"reasonMsg": "Paused for session transition",
"nextOpen": "2026-03-23T08:01:00Z",
"nextClose": "2026-03-23T13:29:00Z",
"nextOpenTime": 1774252860000,
"nextCloseTime": 1774272540000
},
"success": true
}
Note: The sample above is captured with openState=false (market closed/paused), so nextOpen is earlier than nextClose.
Response Fields (data):
Field
Type
Description
openState
boolean
Whether the Ondo market is currently open for trading
reasonCode
string|null
Reason code if market is not in normal trading state (see Reason Codes)
reasonMsg
string|null
Human-readable reason message
nextOpen
string
Next market open time from current state (ISO 8601 UTC)
nextClose
string
Next market close time from current state (ISO 8601 UTC)
nextOpenTime
number
Next market open time from current state (Unix timestamp in ms)
nextCloseTime
number
Next market close time from current state (Unix timestamp in ms)
Interpretation: These fields are state-dependent. When openState=true, nextClose is expected to be earlier than nextOpen (market closes before the next open). When openState=false, nextOpen is expected to be earlier than nextClose (market opens before the next close).
API 4: Asset Market Status
Method: GET
URL:
https://www.binance.com/bapi/defi/v1/public/wallet-direct/buw/wallet/market/token/rwa/asset/market/status/ai
Request Parameters:
Parameter
Type
Required
Description
chainId
string
Yes
Chain ID
contractAddress
string
Yes
Token contract address
Headers: Accept-Encoding: identity
Example:
curl 'https://www.binance.com/bapi/defi/v1/public/wallet-direct/buw/wallet/market/token/rwa/asset/market/status/ai?chainId=56&contractAddress=<CONTRACT_ADDRESS>' \
-H 'Accept-Encoding: identity' \
-H 'User-Agent: binance-web3/1.1 (Skill)'
Response:
{
"code": "000000",
"data": {
"openState": false,
"marketStatus": "closed",
"reasonCode": "MARKET_CLOSED",
"reasonMsg": null,
"nextOpenTime": 1774252860000,
"nextCloseTime": 1774272540000
},
"success": true
}
Response Fields (data):
Field
Type
Description
openState
boolean
Whether this specific asset is available for trading
marketStatus
string
Current session: premarket, regular, postmarket, overnight, closed, pause
reasonCode
string
Status reason code (see Reason Codes below)
reasonMsg
string|null
Human-readable reason message (populated when paused/limited)
nextOpenTime
number
Next open time (Unix timestamp in ms)
nextCloseTime
number
Next close time (Unix timestamp in ms)
Reason Codes
reasonCode
Description
TRADING
Normal trading
MARKET_CLOSED
Market is closed (outside trading hours)
MARKET_PAUSED
Market-wide trading halt
ASSET_PAUSED
This specific asset is paused (see Corporate Actions below)
ASSET_LIMITED
This specific asset has trading restrictions (see Corporate Actions below)
UNSUPPORTED
Asset is not supported
MARKET_MAINTENANCE
System maintenance
Corporate Actions (when ASSET_PAUSED or ASSET_LIMITED )
When an asset is paused or limited, the reasonMsg field indicates the specific corporate action:
reasonCode
reasonMsg
Description
ASSET_PAUSED
cash_dividend
Cash dividend distribution
ASSET_PAUSED
stock_dividend
Stock dividend distribution
ASSET_PAUSED
stock_split
Stock split
ASSET_PAUSED
merger
Company merger
ASSET_PAUSED
acquisition
Company acquisition
ASSET_PAUSED
spinoff
Corporate spinoff
ASSET_PAUSED
maintenance
Asset-level maintenance
ASSET_PAUSED
corporate action
Other corporate action
ASSET_LIMITED
earnings
Earnings release — trading restricted but not fully paused
API 5: RWA Dynamic V2
Method: GET
URL:
https://www.binance.com/bapi/defi/v2/public/wallet-direct/buw/wallet/market/token/rwa/dynamic/ai
Request Parameters:
Parameter
Type
Required
Description
chainId
string
Yes
Chain ID
contractAddress
string
Yes
Token contract address
Headers: Accept-Encoding: identity
Example:
curl 'https://www.binance.com/bapi/defi/v2/public/wallet-direct/buw/wallet/market/token/rwa/dynamic/ai?chainId=56&contractAddress=<CONTRACT_ADDRESS>' \
-H 'Accept-Encoding: identity' \
-H 'User-Agent: binance-web3/1.1 (Skill)'
Response:
{
"code": "000000",
"data": {
"symbol": "<TOKEN_SYMBOL_ON>",
"ticker": "<UNDERLYING_TICKER>",
"tokenInfo": {
"price": "310.384196924055952519",
"priceChange24h": "1.09518626611014170",
"priceChangePct24h": "0.354098021064624509",
"totalHolders": "1023",
"sharesMultiplier": "1.001084338309087472",
"volume24h": "8202859508.959922580629343392",
"marketCap": "7116321.021286604958613714702150000306622972",
"fdv": "7116321.021286604958613714702150000306622972",
"circulatingSupply": "22927.459232171569002788",
"maxSupply": "22927.459232171569002788"
},
"stockInfo": {
"price": null,
"priceHigh52w": "328.83",
"priceLow52w": "140.53",
"volume": "26429618",
"averageVolume": "36255295",
"sharesOutstanding": "5818000000",
"marketCap": "1805815257704.157531755542",
"turnoverRate": "0.4543",
"amplitude": null,
"priceToEarnings": "29.93",
"dividendYield": "0.27",
"priceToBook": null,
"lastCashAmount": null
},
"statusInfo": {
"openState": null,
"marketStatus": null,
"reasonCode": null,
"reasonMsg": null,
"nextOpenTime": null,
"nextCloseTime": null
},
"limitInfo": {
"maxAttestationCount": "1500",
"maxActiveNotionalValue": "450000"
}
},
"success": true
}
Response Fields
Top-level (data):
Field
Type
Description
symbol
string
Token symbol (e.g. <TOKEN_SYMBOL_ON>)
ticker
string
Underlying stock ticker (e.g. <UNDERLYING_TICKER>)
tokenInfo
object
On-chain token data
stockInfo
object
US stock fundamentals
statusInfo
object
Market/asset trading status (same schema as API 4)
limitInfo
object
Order limit information
Token Info (data.tokenInfo):
Field
Type
Description
price
string
On-chain token price (USD) — per-token, not per-share (see Key Concept above)
priceChange24h
string
24h price change (USD)
priceChangePct24h
string
24h price change (%)
totalHolders
string
Number of on-chain holders
sharesMultiplier
string
Same as multiplier in API 1 (see Key Concept above, Notes §6)
volume24h
string
⚠️ Misleading: This is the US stock trading volume in USD, NOT on-chain DEX volume
marketCap
string
On-chain market cap (USD) = circulatingSupply × price
fdv
string
Fully diluted valuation (USD)
circulatingSupply
string
Circulating supply (token units)
maxSupply
string
Maximum supply (token units)
Stock Info (data.stockInfo):
Field
Type
Description
price
string|null
US stock price (USD). May be null outside trading hours
priceHigh52w
string
52-week high price (USD)
priceLow52w
string
52-week low price (USD)
volume
string
⚠️ US stock volume in shares (not USD). Multiply by price to get USD value
averageVolume
string
Average daily volume (shares)
sharesOutstanding
string
Total shares outstanding
marketCap
string
US stock total market cap (USD)
turnoverRate
string
Turnover rate (%)
amplitude
string|null
Intraday amplitude (%)
priceToEarnings
string
P/E ratio (TTM)
dividendYield
string
Dividend yield (TTM, percentage value: 0.27 means 0.27%)
priceToBook
string|null
P/B ratio
lastCashAmount
string|null
Most recent cash dividend amount per share (USD)
Status Info (data.statusInfo):
Same schema as API 4 response. See [Asset Market Status](#api-4-asset-market-status) for field details and reason codes.
Limit Info (data.limitInfo):
Field
Type
Description
maxAttestationCount
string
Maximum attestation count for orders
maxActiveNotionalValue
string
Maximum active notional value for orders (USD)
API 6: Token K-Line
Method: GET
URL:
https://www.binance.com/bapi/defi/v1/public/wallet-direct/buw/wallet/dex/market/token/kline/ai
Request Parameters:
Parameter
Type
Required
Default
Description
chainId
string
Yes
-
Chain ID (e.g. 56 for BSC, 1 for Ethereum)
contractAddress
string
Yes
-
Token contract address
interval
string
Yes
-
K-Line interval (see Interval Reference)
limit
integer
No
300
Number of candles to return (max 300)
startTime
long
No
-
Start timestamp (ms), based on candle open time
endTime
long
No
-
End timestamp (ms), based on candle open time minus 1ms
**Note on startTime / endTime**: Both reference the candle's open time. If omitted, returns the latest candles. When both are provided, endTime should be the target candle's open time minus 1ms.
Interval Reference:
Interval
Description
1m
1 minute
5m
5 minutes
15m
15 minutes
1h
1 hour
4h
4 hours
12h
12 hours
1d
1 day
Headers: Accept-Encoding: identity
Example:
curl 'https://www.binance.com/bapi/defi/v1/public/wallet-direct/buw/wallet/dex/market/token/kline/ai?chainId=56&contractAddress=<CONTRACT_ADDRESS>&interval=1d&limit=5' \
-H 'Accept-Encoding: identity' \
-H 'User-Agent: binance-web3/1.1 (Skill)'
Response:
{
"code": "000000",
"data": {
"klineInfos": [
[1773619200000, "302.935406291919976543", "306.960384694362870577", "302.25959298411397863", "305.249336787737745037", "0", 1773705599999],
[1773705600000, "305.644964527245747627", "311.890874865402466994", "303.302517784917770672", "311.028506552196415779", "0", 1773791999999]
],
"decimals": 5
},
"success": true
}
Candle Array Format (each element in data.klineInfos[]):
Index
Field
Type
Description
0
openTime
number
Candle open timestamp (ms)
1
open
string
Open price (USD)
2
high
string
High price (USD)
3
low
string
Low price (USD)
4
close
string
Close price (USD)
5
-
string
Reserved field
6
closeTime
number
Candle close timestamp (ms)
Response Fields:
Field
Type
Description
klineInfos
array
Array of candle arrays (see format above)
decimals
integer
Price decimal precision hint
User Agent Header
Include User-Agent header with the following string: binance-web3/1.1 (Skill)
Notes
-
**volume24h in tokenInfo is misleading**: tokenInfo.volume24h from the RWA Dynamic API returns the US stock daily trading volume in USD, not the on-chain DEX trading volume. For actual on-chain buy/sell volume, use the Binance on-chain dynamic API (/market/token/dynamic/info) with volume24hBuy + volume24hSell fields instead.
-
**dividendYield is a percentage value, not a raw decimal**: A value of 0.27 means 0.27% dividend yield.
-
Icon and report URLs are relative paths — prepend domain to use: The API returns relative paths for icon, dailyAttestationReports, and monthlyAttestationReports (e.g. /images/web3-data/public/token/logos/...). To construct the full URL, prepend https://bin.bnbstatic.com. Example: /images/web3-data/public/token/logos/<TOKEN_ID>.png → https://bin.bnbstatic.com/images/web3-data/public/token/logos/<TOKEN_ID>.png.
-
No API key required: All endpoints are public APIs. No authentication needed.
-
Multi-chain deployments: Each supported stock may be deployed on multiple chains (e.g. both Ethereum and BSC). stockInfo and tokenInfo.price are identical across chains. tokenInfo.totalHolders is aggregated cross-chain. tokenInfo.circulatingSupply and tokenInfo.marketCap are chain-specific.
-
**multiplier / sharesMultiplier — critical for price comparison**: Each token represents multiplier shares of the underlying stock, not exactly 1 share. The multiplier starts at 1.0 and increases over time as cash dividends are reinvested (cumulative dividend adjustment). Some tokens also reflect stock splits (e.g. multiplier = 10.0 means 1 token = 10 shares).
Formula:
referencePrice = tokenInfo.price ÷ sharesMultiplier
tokenInfo.price and stockInfo.price come from different sources (on-chain oracle vs stock feed) and update at different frequencies, so a small premium/discount (typically within ±0.1%) is normal.
Common multiplier categories:
Multiplier
Cause
Exactly 1.0
No dividends paid yet, or newly listed
Slightly above 1.0
Cumulative cash dividend reinvestment (grows over time)
5.0, 10.0
Stock split reflected in token structure
The exact multiplier value changes over time as dividends accumulate. Always read it from the API at query time — never hardcode.