Skip to main content
POST
Writes the market’s full config struct. Every field is required on every call, so read the current values with Get Market Config first and send them back with your changes applied. Partial updates are not supported: an omitted field fails validation rather than retaining its current value. Requires ISSUER_ROLE on the market contract. The lender of record names the wallet that holds it when it takes the market, so that wallet may sit outside your instance. heldByThisInstance on the calldata response says whether it does. The market brings its interest accrual up to date under the old values before the new ones apply.
Changing liquidationThreshold moves the point at which existing loans become liquidatable. Lowering it immediately puts loans at risk that were healthy a moment earlier. The contract caps each change at 10 percent per call. That cap is counted in percentage points of the threshold: from 8500, one call reaches anywhere from 7500 to 9500.

Path Parameters

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

Body Parameters

object
required
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. The confirm call must repeat the full config object, because the body is validated before txHash is read.
maxPriceAge is not part of this struct. It is an oracle setting, not a market setting, and it is read from Get Oracle Status rather than written here. It still interacts directly with your NAV publication cadence. A fund that publishes NAV daily needs maxPriceAge above 86400 seconds. Otherwise opening loans, drawing more, withdrawing collateral against open debt and liquidating revert against a stale price between publications. A FIXED market’s oracle never reports its price as stale, so the window does not apply there.

Checks Run Before a Signature

The per-field ranges above are what the request schema accepts. Before building calldata, the API also runs the contract’s cross-field rules and two checks on the auction venue. No signature is asked for a tuple that would revert with a bare selector. The venue admission check is the API’s own. The contract does not test it, but a venue the collateral token refuses makes every realization revert when seized collateral is delivered to it. A check that has to read the chain, such as the current threshold or the term penalty, is skipped when that read fails. The contract still enforces every rule in the table except venue admission, so a violation that slips through reverts on-chain instead. A market whose priceSource is MARKET cannot run Dutch auctions at all, and needs an auctionMinPremium of at least 9800, refused otherwise with INVALID_CONFIG. Turning auctions on there is refused with AUCTION_MODULE_NOT_SET while no venue is wired, and the API never wires one on such a market. A venue wired by other means leads to AUCTION_UNSUPPORTED_PRICE_SOURCE instead.
Confirming a configuration with useDutchAuction off withdraws the market from the public liquidation feed. Auctions are what makes a realization publicly actionable, so a market without them would otherwise keep advertising a participation route that no longer exists. The confirm response reports it as publicListingWithdrawn. The API decides from the configuration read back from the chain after the transaction, and falls back to the config you sent when that read fails.

Response Fields

object

Error Codes

Confirming with txHash can also return any transaction verification error. On this endpoint every one of them answers 400, including TX_NOT_FOUND.