The Stock Token API is a Quicknode add-on that provides real-time access to Robinhood Chain stock token data through JSON-RPC. It enables applications to query wallet balances in shares (with stock splits and dividends already applied), value holdings in USD using Chainlink price feeds, and monitor transaction finality from sequencer inclusion through Ethereum finalization.
Key capabilities
This add-on provides five JSON-RPC methods that address common application requirements:
- Portfolio holdings — Retrieve share balances with multipliers correctly applied, plus USD valuations where Chainlink prices are available
- Token discovery — List official Robinhood stock tokens with live multipliers, pending corporate actions, and oracle status
- Corporate actions — Access the history of stock splits and reinvested dividends, matched to Robinhood records when available
- Transaction finality — Track transactions through each stage (soft, posted, safe, finalized) with time estimates
- Oracle health — Inspect Chainlink feed freshness, pause status, and market session context before using prices
All responses include the block number and hash for the on-chain read. Amounts use exact integer strings to preserve precision.
Supported network
| Chain | Network | Chain ID | Support |
|---|---|---|---|
| Robinhood Chain | Mainnet | 4663 | All methods |
| Robinhood Chain | Testnet | 46630 | Not supported |
This add-on is available exclusively on Robinhood Chain mainnet.
Enable the add-on
- Open your Robinhood Chain mainnet endpoint in the Quicknode dashboard.
- Enable Stock Token API from the endpoint's add-ons tab.
- Send JSON-RPC POST requests to your endpoint URL. No additional path is required.
Supported methods
| Method | Description | Historical reads |
|---|---|---|
qn_getStockTokens | Returns token addresses, multipliers, supply, price feeds, and trading capabilities. | Yes |
qn_getStockTokenBalances | Returns wallet holdings in shares and USD values where prices are available. | Yes |
qn_getCorporateActions | Returns past and scheduled multiplier changes, including splits and dividends. | No |
qn_getOracleHealth | Returns feed freshness, pause status, market sessions, and sequencer signals. | Yes |
qn_getTransactionFinality | Returns finality stage of a transaction with estimates for safe/finalized status. | No |
Understanding shares and multipliers
Stock tokens use a multiplier mechanism that allows stock splits and reinvested dividends to adjust share counts without modifying raw balances. Token amounts and multipliers are represented as integer strings scaled by 10^18.
Key formulas:
balanceUi = floor(balanceRaw × uiMultiplier / 10^18)— Share balance in 18-decimal units (matches the contract'sbalanceOfUI)- A multiplier of
4000000000000000000indicates each raw token represents 4 shares
USD valuation:
Chainlink prices already incorporate the multiplier. USD value is calculated using the raw token balance (converted from 18 decimals) multiplied by priceUsd. The API performs this calculation with integer arithmetic and rounds down to 8 decimal places.
Use integer or decimal arithmetic for calculations. Converting large integer strings to floating-point numbers may cause precision loss.
Request conventions
| Convention | Details |
|---|---|
| Parameters | Positional array. Methods with options accept a final object. Unknown keys return -32602. |
| Block pinning | Use hex block number, block hash, latest, safe, or finalized as blockTag. All reads use the resolved block, reported in blockNumber and blockHash. |
| Filters | symbols and addresses form a union. Symbols are case-insensitive; unknown tickers are skipped. |
| Pagination | Corporate actions use cursor-based pagination. Pass nextCursor as cursor; null indicates the last page. |
| Number formats | Amounts, multipliers, and prices are decimal strings. Block numbers are hex at top level, integers when nested. |
| Batching | JSON-RPC batches can mix qn_ and eth_ methods. Rate limits apply per request. |
| Warnings | Every response includes a warnings array. Check it even on success—data may be partial. |
Data coverage
Price feeds
Not every stock token has a Chainlink price feed. Tokens without feeds return balances but set USD values to null. The field totalValueUsdComplete: false indicates the total excludes unpriced holdings.
Robinhood reference data
The name and tradingCapabilities fields refresh every 10 minutes and reflect current values even for historical block reads. The referenceObservedAt field records when the data was fetched.
| Warning | Meaning |
|---|---|
RH_DATA_STALE | Reference data is over 30 minutes old |
RH_DATA_UNAVAILABLE | Reference data is missing or over 24 hours old; fields are null |
Sequencer status
Robinhood Chain does not yet have a Chainlink sequencer uptime feed. Oracle health returns SEQUENCER_STATUS_UNKNOWN and provides alternative signals including block age and operator status.
Error codes
All errors follow the JSON-RPC 2.0 format. Inspect error.code, error.message, and error.data for details.
| Code | Meaning | Resolution |
|---|---|---|
| -32700 | Parse error | Send valid JSON. |
| -32600 | Invalid request | Use valid JSON-RPC 2.0 format. |
| -32601 | Method not found | Verify method name and that the add-on is enabled. |
| -32602 | Invalid params | Check the field in error.data (address, hash, option, etc.). |
| -32001 | Not a stock token | Verify the token address exists at the requested block. |
| -32002 | Block unavailable | Use latest or wait for the chain to reach that block. |
| -32004 | Upstream unavailable | Retry after error.data.retryAfterMs. |
| -32007 | Rate limit exceeded | Reduce concurrency and retry with backoff. |
| -32010 | Transaction not found | Verify the transaction hash and network. |
| -32603 | Internal error | Retry; contact support if persistent. |