A valid request URL is required to generate request examples{
"data": {
"type": "DEPOSIT",
"slug": "stable-vault",
"chainId": 1,
"blockNumber": 26147329,
"vault": {
"address": "0xcDA323c2DF692d989B24BA51D0aCCa924cf9a344",
"symbol": "USDst",
"shareDecimals": 18
},
"depositAsset": {
"address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"symbol": "USDC",
"decimals": 6
},
"amount": "1000000000",
"expectedShares": "997382077837769004220",
"fees": {
"entryBps": 0
},
"steps": [
"deposit"
],
"notes": [
"A quote runs no wallet checks and builds no transaction. Call transaction.build with a sender to get the transactions."
],
"sender": null,
"availability": {
"depositsOpen": true,
"reason": null
}
},
"asOf": 1791458270
}Quote a transaction
Prices a DEPOSIT or a REDEEM_REQUEST for the vault slug names, at one block (blockNumber). It builds no transaction.
DEPOSIT:expectedSharesispreviewSyncDeposit(amount), after any entry fee (null when the vault cannot quote now).availabilitysays whether the vault takes the deposit now: it is not paused, accepts synchronous deposits with a valid NAV, and has room under its cap, counting the deposits waiting for settlement. It runs no wallet check. With asender,stepsincludesapprovewhen its allowance is short.REDEEM_REQUEST:expectedAssetsis the shares’ value at the current price, net of the exit fee as the vault settles it; the final amount is fixed at settlement.window.maxDaysis how long settlement usually takes. With asender,availabilityalso checks the vault’s allow list, the share balance and a pending redeem request, andclaimFirstshows a settled redeem request the new one would pay out first.- A
DEPOSITamount below the minimum or above the per-request limit answers 400 (amount_below_minimum,invalid_amount). - A legacy slug resolves to its canonical vault, and the response carries the canonical slug.
- Transaction building must be enabled for your API client (403
actions_not_enabled) and can be switched off (503actions_disabled).
A valid request URL is required to generate request examples{
"data": {
"type": "DEPOSIT",
"slug": "stable-vault",
"chainId": 1,
"blockNumber": 26147329,
"vault": {
"address": "0xcDA323c2DF692d989B24BA51D0aCCa924cf9a344",
"symbol": "USDst",
"shareDecimals": 18
},
"depositAsset": {
"address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"symbol": "USDC",
"decimals": 6
},
"amount": "1000000000",
"expectedShares": "997382077837769004220",
"fees": {
"entryBps": 0
},
"steps": [
"deposit"
],
"notes": [
"A quote runs no wallet checks and builds no transaction. Call transaction.build with a sender to get the transactions."
],
"sender": null,
"availability": {
"depositsOpen": true,
"reason": null
}
},
"asOf": 1791458270
}Authorizations
The client's own API key (kmi_<id>_<secret>), issued by Kamui. A missing, malformed, unknown, revoked or expired key answers 401 unauthorized.
Headers
Your id for this request: 1 to 128 letters, digits, ., _, : or -. It is echoed in the response. Any other value is replaced with a new UUID.
^[A-Za-z0-9._:-]{1,128}$Body
- DEPOSIT
- REDEEM_REQUEST
"DEPOSIT"Vault slug, matched exactly: lowercase letters, digits and single hyphens (stable-vault). Case and whitespace count, so Stable-Vault and stable-vault answer 400. A legacy slug works; the response carries the canonical one.
1 - 64^[a-z0-9]+(?:-[a-z0-9]+)*$"stable-vault"
1 - 30^[1-9][0-9]{0,29}$"1000000000"
Ethereum address: 0x and 40 hex characters, in lowercase or with a valid EIP-55 checksum. Other mixed case, all-uppercase hex, a 0X prefix and the zero address answer 400.
42^0x[0-9a-fA-F]{40}$