Get User Borrow NFTs
Retrieves all borrow position NFTs for a specific user address on a given chain.
Each NFT represents a unique borrow position in a Fluid vault (collateral + debt state).
Endpoint
text
GET /v2/{chainId}/users/{userAddress}/nftsBase URL
text
https://api.fluid.instadapp.ioPath Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
chainId | integer | Yes | The chain ID (e.g., 1 for Ethereum mainnet). |
userAddress | string | Yes | The user's wallet address (must be a valid Ethereum address). |
Example Request
bash
curl -X GET \
"https://api.fluid.instadapp.io/v2/1/users/0xc1490E0489f487477A9B4e52Da19416d21fC09E0/nfts"Response
Returns an array of NFT position objects. Each object corresponds to one borrow position NFT held by the user in a particular vault.
Response Structure
json
[
{
"id": "string",
"supply": "string",
"beforeSupply": "string",
"borrow": "string",
"beforeBorrow": "string",
"isLiquidated": boolean,
"supplyLiquidation": "string",
"borrowLiquidation": "string",
"isSupplyPosition": boolean,
"tick": "string",
"tickId": "string",
"dustBorrow": "string",
"ownerAddress": "string",
"vault": { /* Vault Object */ }
}
]NFT Position Object
| Field | Type | Description |
|---|---|---|
id | string | NFT ID for the position (this is the position identifier you pass to on-chain operate). |
supply | string | Current collateral amount for this position (in collateral token decimals). |
beforeSupply | string | Previous collateral amount before the last update (in collateral token decimals). |
borrow | string | Current borrowed amount for this position (in borrow token decimals). |
beforeBorrow | string | Previous borrowed amount before the last update (in borrow token decimals). |
isLiquidated | boolean | Whether this position has been liquidated. |
supplyLiquidation | string | Collateral amount involved in liquidation, if any. |
borrowLiquidation | string | Borrow amount involved in liquidation, if any. |
isSupplyPosition | boolean | true if the NFT represents a supply/collateral position; false for pure borrow cases. |
tick | string | Internal protocol tick value for this position (pricing/interest bucket). |
tickId | string | Identifier for the tick bucket this position belongs to. |
dustBorrow | string | Small residual borrow amount (dust) for accounting. |
ownerAddress | string | Owner address of the NFT (should match the userAddress you queried). |
vault | object | Vault metadata for this NFT (see Vault Object). |
Vault Object
The vault field has the same structure as a single entry from the /v2/{chainId}/vaults endpoint.
| Field | Type | Description |
|---|---|---|
id | string | Vault identifier used by the API. |
type | string | Vault type/category (e.g., 1, 2, 3, 4). |
address | string | Vault contract address. |
supplyToken | object | Collateral token pair (see Token Pair Object). |
borrowToken | object | Borrow token pair (see Token Pair Object). |
collateralFactor | integer | Maximum borrowable percentage of collateral in basis points. |
liquidationThreshold | integer | Health factor threshold for liquidation, in basis points. |
liquidationPenalty | integer | Liquidation penalty or fee in basis points. |
withdrawable | string | Vault-level withdrawable collateral (not specific to this NFT). |
borrowable | string | Vault-level borrowable amount (not specific to this NFT). |
oracle | string | Oracle contract address. |
oraclePriceLiquidate | string | Price used for liquidation checks. |
oraclePriceOperate | string | Price used for operate-level actions. |
For a full list of vault fields, see the Get Borrow Vaults documentation.
Token Pair Object
vault.supplyToken and vault.borrowToken follow the same structure:
| Field | Type | Description |
|---|---|---|
token0 | object | Primary token for this side (collateral or borrow). |
token1 | object | Secondary token for this side; frequently the zero address placeholder. |
Each token uses the same Asset Object as in the vaults endpoint.
Asset Object
| Field | Type | Description |
|---|---|---|
address | string | Token contract address (or 0xeeee... sentinel for native ETH-like tokens). |
name | string | Token name. |
symbol | string | Token symbol. |
decimals | integer | Number of decimals the token uses. |
price | string | Current token price in USD. |
chainId | string | Chain ID as a string. |
logoUrl | string | URL for the token logo. |
coingeckoId | string | CoinGecko identifier, if available. |
updatedAt | string | ISO 8601 timestamp of the last price update. |
stakingApr | string | (Optional) Staking APR for LST/LRT tokens (basis points). |
Example Response
json
[
{
"id": "8357",
"supply": "1000000000000000000",
"beforeSupply": "1000000000000000000",
"borrow": "0",
"beforeBorrow": "0",
"isLiquidated": false,
"supplyLiquidation": "0",
"borrowLiquidation": "0",
"isSupplyPosition": true,
"tick": "0",
"tickId": "0",
"dustBorrow": "0",
"ownerAddress": "0xc1490E0489f487477A9B4e52Da19416d21fC09E0",
"vault": {
"id": "110",
"type": "1",
"address": "0xee327311D8640156E87eC33ea55FcbF2309e0ce6",
"supplyToken": {
"token0": {
"address": "0x1202f5c7b4b9e47a1a484e8b270be34dbbc75055",
"name": "Wrapped stUSR",
"symbol": "wstUSR",
"decimals": 18,
"price": "1.131108956896",
"chainId": "1",
"logoUrl": "https://coin-images.coingecko.com/coins/images/51880/large/USR_LOGO.png?1732098841",
"coingeckoId": "resolv-wstusr",
"updatedAt": "2026-02-24T08:54:04.000+00:00"
},
"token1": {
"address": "0x0000000000000000000000000000000000000000"
}
},
"borrowToken": {
"token0": {
"address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"name": "USD Coin",
"symbol": "USDC",
"decimals": 6,
"price": "0.999877813172",
"chainId": "1",
"logoUrl": "https://coin-images.coingecko.com/coins/images/6319/large/USDC.png?1769615602",
"coingeckoId": "usd-coin",
"updatedAt": "2026-02-24T08:54:01.000+00:00"
},
"token1": {
"address": "0x0000000000000000000000000000000000000000"
}
},
"totalSupply": "2557199234944628359168",
"totalBorrow": "2340917830",
"collateralFactor": 9200,
"liquidationThreshold": 9400,
"liquidationPenalty": 200,
"withdrawable": "2557196677746467220825",
"borrowLimit": "10275012212642",
"borrowable": "10272664321907",
"oracle": "0x2074A006F4a2e03c78eA90F5033c01E366F216Fd",
"oraclePriceLiquidate": "1130934523069167",
"oraclePriceOperate": "1130934523069167"
}
}
]Notes
- All numeric values are returned as strings to avoid precision loss with large numbers.
idis the NFT ID you use in on-chain calls such asoperate(nftId, ...).- The same user can have multiple NFTs in the same vault or across different vaults.
isSupplyPositiontells you whether this NFT currently represents a collateral/supply position; vaults can also create borrow-only positions.- Vault-level liquidity fields (e.g.,
withdrawable,borrowable) are global to the vault, not specific to a single NFT.
Error Responses
The API may return standard HTTP error codes:
400 Bad Request– Invalid parameters (e.g., malformed address or chain ID).404 Not Found– Chain ID or endpoint not found.500 Internal Server Error– Server error.

