Skip to main content

qn_getOracleHealth - Stock Token API

Returns Chainlink feed freshness, pause status, market sessions, and sequencer signals on Robinhood Chain.

Updated on
Oct 26, 2026

Requires the Stock Token API add-on on Robinhood Chain mainnet. See additional details below or the full overview.

Parameters

options
object

Optional filters and read options. Unknown keys are rejected with -32602.

symbols
array

Case-insensitive stock tickers. Unknown tickers are skipped. Omit to use all tokens or registered feeds.

feeds
array

Registered Chainlink proxy addresses. Unregistered addresses return -32602. Duplicates are removed.

blockTag
string

Block to read: a hex block number, block hash, latest (default), safe, or finalized. All on-chain reads use this one block.

Returns

result
object

The stock token API result at the reported block.

blockNumber
string

Snapshot block number in hexadecimal. Nested event block numbers are integers.

blockHash
string

Hash of the snapshot block.

sequencer
object

Sequencer uptime status and supplemental live signals.

status
string

Sequencer status from its uptime feed: UP, DOWN, or UNKNOWN. UNKNOWN when no uptime feed is configured.

latestBlockAgeSeconds
integer or null

Seconds since the newest block. Robinhood Chain produces blocks constantly, so a value above ~60 s suggests the sequencer has stopped. May be null when unavailable or not applicable.

operatorStatus
object or null

The chain operator's status page (Offchain Labs runs the sequencer): OPERATIONAL, DEGRADEDPERFORMANCE, PARTIALOUTAGE, MAJOROUTAGE or UNDERMAINTENANCE, with observedAt. It's posted by people, so it can lag an outage. null if we couldn't read it in the last 5 minutes. May be null when unavailable or not applicable.

status
string

Operator status: OPERATIONAL, DEGRADEDPERFORMANCE, PARTIALOUTAGE, MAJOROUTAGE, or UNDERMAINTENANCE.

source
string

Source of the operator status signal.

observedAt
integer

Unix timestamp when operator status was observed.

up
boolean

Present only when sequencer status is known: whether it is up.

since
integer

Present only when sequencer status is known: Unix time of its last status change.

gracePeriodOver
boolean

Present only when sequencer status is known: whether the one-hour recovery grace period is over.

session
object

Equity market session and mint/burn window at the snapshot block time.

name
string

US equity session at the block time: OVERNIGHT, PRE, REGULAR, POST, or CLOSED.

nextChangeAt
integer

When the session next changes (Unix seconds).

mintWindowOpen
boolean

Whether Robinhood's mint and burn window is open (Monday 02:00 to Saturday 02:00, Paris time): when Authorized Participants can create or redeem tokens.

nextMintWindowChangeAt
integer

When that next changes.

calendarCovered
boolean

false if the date is beyond the built-in market holiday calendar (adds the warning MARKET_CALENDAR_NOT_COVERED).

feeds
array

string[]

feed
string or null

The feed's proxy address, or null for a stock token with no feed. May be null when unavailable or not applicable.

symbol
string

Stock ticker or priced asset symbol.

kind
string

EQUITY for stock feeds, CRYPTO for the others (crypto, stablecoin and exchange-rate feeds).

token
string or null

Stock token contract address; null for a feed without a stock token. May be null when unavailable or not applicable.

answer
string or null

The latest price, as an integer string with decimals places: 22266246516 with 8 decimals = $222.66. Stock prices already include the token's multiplier. May be null when unavailable or not applicable.

decimals
integer or null

Number of decimal places in answer; null when no feed is configured or the read is unavailable.

updatedAt
integer or null

When the feed last updated, and how long ago. May be null when unavailable or not applicable.

ageSeconds
integer or null

When the feed last updated, and how long ago. May be null when unavailable or not applicable.

heartbeatSeconds
integer or null

Chainlink's update rules: a new price at least every heartbeat (24 h for Robinhood feeds), or when the price moves by deviationBps (50 = 0.5%). May be null when unavailable or not applicable.

deviationBps
integer or null

Chainlink's update rules: a new price at least every heartbeat (24 h for Robinhood feeds), or when the price moves by deviationBps (50 = 0.5%). May be null when unavailable or not applicable.

thresholdSeconds
integer or null

When a feed counts as stale: 1.5 × Chainlink's heartbeat (chainlink_heartbeat, every Robinhood feed today), or, for a feed with no published heartbeat, twice its observed 95th-percentile update gap (observed_p95). none when neither is available. May be null when unavailable or not applicable.

thresholdSource
string

When a feed counts as stale: 1.5 × Chainlink's heartbeat (chainlink_heartbeat, every Robinhood feed today), or, for a feed with no published heartbeat, twice its observed 95th-percentile update gap (observed_p95). none when neither is available.

expectedUpdating
boolean

Whether the feed should be updating now. Always for crypto; for equity feeds, during any session (Sunday 20:00 to Friday 20:00 ET, excluding holidays).

stale
boolean

expectedUpdating and older than the threshold.

oraclePaused
boolean or null

Robinhood has paused the token's feed (usually around a corporate action); it holds its last price. null for feeds not mapped to a stock token (crypto, stablecoin, exchange rates) or if the read failed. May be null when unavailable or not applicable.

status
string

Feed status: OK, STALE, PAUSED, MARKET_CLOSED, SEQUENCER_DOWN, INVALID_ANSWER, NOT_CONFIGURED, or UNKNOWN.

warnings
array

Warning code strings describing partial data or unavailable signals; empty when there are no warnings.

Request
Response
1
{
2
"jsonrpc": "2.0",
3
"id": 1,
4
"result": {
5
"blockNumber": "0x5b9ec0b",
6
"blockHash": "0x774ae99a2fdaef91caf90e53a4a3f8d2d95857d524ea5645f2fc5652f37fa4cc",
7
"sequencer": {
8
"status": "UNKNOWN",
9
"latestBlockAgeSeconds": 1,
10
"operatorStatus": {
11
"status": "OPERATIONAL",
12
"source": "status.robinhoodchain.offchain.io",
13
"observedAt": 1792772070
14
}
15
},
16
"session": {
17
"name": "REGULAR",
18
"nextChangeAt": 1792785600,
19
"mintWindowOpen": true,
20
"nextMintWindowChangeAt": 1792800000,
21
"calendarCovered": true
22
},
23
"feeds": [
24
{
25
"feed": null,
26
"symbol": "CRWD",
27
"kind": "EQUITY",
28
"token": "0xea72Ecca2d0f6bFA1394DBBCff85b52CD4233931",
29
"answer": null,
30
"decimals": null,
31
"updatedAt": null,
32
"ageSeconds": null,
33
"heartbeatSeconds": null,
34
"deviationBps": null,
35
"thresholdSeconds": null,
36
"thresholdSource": "none",
37
"expectedUpdating": false,
38
"stale": false,
39
"oraclePaused": false,
40
"status": "NOT_CONFIGURED"
41
},
42
{
43
"feed": "0x379EC4f7C378F34a1B47E4F3cbeBCbAC3E8E9F15",
44
"symbol": "NVDA",
45
"kind": "EQUITY",
46
"token": "0xd0601CE157Db5bdC3162BbaC2a2C8aF5320D9EEC",
47
"answer": "21223688993",
48
"decimals": 8,
49
"updatedAt": 1792769036,
50
"ageSeconds": 3051,
51
"heartbeatSeconds": 86400,
52
"deviationBps": 50,
53
"thresholdSeconds": 129600,
54
"thresholdSource": "chainlink_heartbeat",
55
"expectedUpdating": true,
56
"stale": false,
57
"oraclePaused": false,
58
"status": "OK"
59
}
60
],
61
"warnings": [
62
"SEQUENCER_STATUS_UNKNOWN"
63
]
64
}
65
}
1
{
2
"jsonrpc": "2.0",
3
"id": 1,
4
"result": {
5
"blockNumber": "0x5b9ec0b",
6
"blockHash": "0x774ae99a2fdaef91caf90e53a4a3f8d2d95857d524ea5645f2fc5652f37fa4cc",
7
"sequencer": {
8
"status": "UNKNOWN",
9
"latestBlockAgeSeconds": 1,
10
"operatorStatus": {
11
"status": "OPERATIONAL",
12
"source": "status.robinhoodchain.offchain.io",
13
"observedAt": 1792772070
14
}
15
},
16
"session": {
17
"name": "REGULAR",
18
"nextChangeAt": 1792785600,
19
"mintWindowOpen": true,
20
"nextMintWindowChangeAt": 1792800000,
21
"calendarCovered": true
22
},
23
"feeds": [
24
{
25
"feed": null,
26
"symbol": "CRWD",
27
"kind": "EQUITY",
28
"token": "0xea72Ecca2d0f6bFA1394DBBCff85b52CD4233931",
29
"answer": null,
30
"decimals": null,
31
"updatedAt": null,
32
"ageSeconds": null,
33
"heartbeatSeconds": null,
34
"deviationBps": null,
35
"thresholdSeconds": null,
36
"thresholdSource": "none",
37
"expectedUpdating": false,
38
"stale": false,
39
"oraclePaused": false,
40
"status": "NOT_CONFIGURED"
41
},
42
{
43
"feed": "0x379EC4f7C378F34a1B47E4F3cbeBCbAC3E8E9F15",
44
"symbol": "NVDA",
45
"kind": "EQUITY",
46
"token": "0xd0601CE157Db5bdC3162BbaC2a2C8aF5320D9EEC",
47
"answer": "21223688993",
48
"decimals": 8,
49
"updatedAt": 1792769036,
50
"ageSeconds": 3051,
51
"heartbeatSeconds": 86400,
52
"deviationBps": 50,
53
"thresholdSeconds": 129600,
54
"thresholdSource": "chainlink_heartbeat",
55
"expectedUpdating": true,
56
"stale": false,
57
"oraclePaused": false,
58
"status": "OK"
59
}
60
],
61
"warnings": [
62
"SEQUENCER_STATUS_UNKNOWN"
63
]
64
}
65
}
Don't have an account yet?
Create your Quicknode endpoint in seconds and start building
Get started for free

Additional details​

This method returns oracle health signals for Chainlink price feeds on Robinhood Chain—useful for checking feed freshness before using prices in your application.

Sequencer status​

On L2s, prices can't be trusted while the sequencer is down or for an hour after recovery. Robinhood Chain doesn't have a Chainlink sequencer uptime feed yet, so status is UNKNOWN and every response includes the SEQUENCER_STATUS_UNKNOWN warning. Two live signals are provided instead:

  • latestBlockAgeSeconds — Seconds since the newest block. Values above ~60s suggest the sequencer stopped.
  • operatorStatus — The chain operator's status page (OPERATIONAL, DEGRADEDPERFORMANCE, etc.). Can lag actual outages.

These fields are null when using any blockTag other than latest.

Market sessions​

The session object shows the current US equity market session at the block's timestamp:

SessionHours (ET)
OVERNIGHT20:00–04:00
PRE04:00–09:30
REGULAR09:30–16:00
POST16:00–20:00
CLOSEDWeekends and holidays

mintWindowOpen indicates whether Robinhood's mint/burn window is open (Monday 02:00 to Saturday 02:00 Paris time).

Feed status values​

StatusMeaning
OKUpdating as expected.
STALEShould be updating but older than threshold.
PAUSEDRobinhood paused it (usually for corporate action); holding last price.
MARKET_CLOSEDNo session open; holding last price as expected.
SEQUENCER_DOWNSequencer down or in grace period (requires uptime feed).
INVALID_ANSWERAnswer is zero, negative, or never set.
NOT_CONFIGUREDStock token has no Chainlink feed.
UNKNOWNRead failed or no threshold available.

When multiple conditions apply, status shows the first in priority order: UNKNOWN → INVALID_ANSWER → SEQUENCER_DOWN → PAUSED → MARKET_CLOSED → STALE → OK.

Warnings​

WarningMeaning
SEQUENCER_STATUS_UNKNOWNNo Chainlink sequencer uptime feed exists for Robinhood Chain yet.
MARKET_CALENDAR_NOT_COVEREDBlock date is outside built-in holiday calendar; session may be incorrect.

Errors​

CodeWhen
-32002blockTag is ahead of the chain head.
-32602Unregistered address in feeds, unknown option, or invalid blockTag.

See the overview for setup, conventions, and all error codes.