Skip to main content
POST
Writes a new price to the market’s oracle. This is how external securities markets are priced: the issuer publishes a net asset value and pushes it here. There is no automatic price feed for these markets. price is required on every call. If you omit it or send a non-positive value the request is rejected. Like every other write on this surface, nothing is submitted for you. The call returns the unsigned updatePrice transaction, you broadcast it from your own wallet, then confirm it with txHash.
The wallet that signs must be an authorized signer on the oracle, which the oracle owner grants. The API checks the resolved signer before building the calldata and refuses with SIGNER_NOT_AUTHORIZED if it is not authorized. Check signerAuthorized and priceSignerAuthorized on Get Oracle Status first.
Price authority does not have to be your instance’s primary wallet. When the lender of record took the role it declared a priceSigner, and that address is what this endpoint resolves to when you name none. Pass signerAddress to check against a different key.

Path Parameters

string
required
Market ID.

Body Parameters

number
required
Net asset value per collateral token, denominated in the market’s borrow asset. Must be greater than zero.
string
Wallet the authorization check runs against. Omit it and the market’s declared priceSigner is used; when the market declares none, the instance’s registered wallet is. Ignored when confirming with txHash, where the signer is taken from the receipt.
string
Hash of the transaction you broadcast for this operation. Send it to confirm the transaction and record the result. Omit it to receive the calldata.

Response Fields

object

Circuit Breaker

The oracle rejects a price that deviates from the current price by more than maxDeviationBps, defaulting to 5000 basis points, which is 50 percent. This guards against a fat-fingered NAV wiping out healthy loans in one transaction. The check is skipped when the oracle has never been priced, so the first push after deployment can be any positive value. When the breaker trips, the error carries currentPrice, newPrice, and maxDeviationPercent so you can present the comparison. A genuine repricing beyond the limit requires the oracle owner to widen maxDeviationBps, or a sequence of smaller steps. Do not retry a rejected push unchanged. Surface the deviation to an operator, because a retry sends the same price into the same breaker.
Successful pushes are recorded on the market as an ORACLE_SYNC transaction, visible through List Transactions, and update lastOracleUpdate on the market record.

Error Codes