Skip to main content
POST
Validates a signed price against the market’s oracle contract and returns the recovered signer. Nothing is submitted and no gas is spent. Use it to confirm a signature before handing it to a borrower, or to diagnose a transaction that reverted on a price signature.
valid: true does not guarantee the price will land. The oracle’s check covers the signature, the signer, expiry and age, but not the deviation limit. It also ignores whether the signature is newer than the price the oracle holds. Inside a lending transaction, a signature dated no later than the stored price is skipped, and a price outside the deviation limit reverts the transaction.

Path Parameters

string
required
The market’s record ID, as id on List Markets, not its contract address. See Market IDs.

Body Parameters

string
required
Price in base units as an integer string, exactly as returned by Sign Price. Decimal points are rejected.
integer
required
Signing timestamp in unix seconds. Must be a positive integer.
integer
required
Expiry in unix seconds. Must be a positive integer.
string
required
0x-prefixed hex signature.

Response Fields

object
valid: false with error: null means the oracle evaluated the signature and rejected it. valid: false with a populated error means the check itself could not run, usually an RPC failure or a signature that cannot be encoded, such as odd-length hex. These are different conditions and should be surfaced differently.

Why a Signature Is Rejected

A rejection with a non-zero signer means the signature recovered to a key that is neither an authorized signer nor the oracle’s owner. Grant it with Set Access Role and ORACLE_SIGNER, or sign with the declared price signer. A rejection with the zero address as signer means the oracle refused before checking the key. Either validUntil has passed, timestamp is in the future or older than maxPriceAge, the price is zero, or the signature does not recover. An ORACLE-priced market rejects every signature this way, because its oracle takes no attested price. So does a FIXED market, whose oracle takes no signed price. A signature the oracle considers valid can still be rejected at execution time if it has expired between verification and submission. Verification is a point-in-time check against validUntil.

Error Codes