Skip to content

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}/nfts

Base URL

text
https://api.fluid.instadapp.io

Path Parameters

ParameterTypeRequiredDescription
chainIdintegerYesThe chain ID (e.g., 1 for Ethereum mainnet).
userAddressstringYesThe 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

FieldTypeDescription
idstringNFT ID for the position (this is the position identifier you pass to on-chain operate).
supplystringCurrent collateral amount for this position (in collateral token decimals).
beforeSupplystringPrevious collateral amount before the last update (in collateral token decimals).
borrowstringCurrent borrowed amount for this position (in borrow token decimals).
beforeBorrowstringPrevious borrowed amount before the last update (in borrow token decimals).
isLiquidatedbooleanWhether this position has been liquidated.
supplyLiquidationstringCollateral amount involved in liquidation, if any.
borrowLiquidationstringBorrow amount involved in liquidation, if any.
isSupplyPositionbooleantrue if the NFT represents a supply/collateral position; false for pure borrow cases.
tickstringInternal protocol tick value for this position (pricing/interest bucket).
tickIdstringIdentifier for the tick bucket this position belongs to.
dustBorrowstringSmall residual borrow amount (dust) for accounting.
ownerAddressstringOwner address of the NFT (should match the userAddress you queried).
vaultobjectVault 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.

FieldTypeDescription
idstringVault identifier used by the API.
typestringVault type/category (e.g., 1, 2, 3, 4).
addressstringVault contract address.
supplyTokenobjectCollateral token pair (see Token Pair Object).
borrowTokenobjectBorrow token pair (see Token Pair Object).
collateralFactorintegerMaximum borrowable percentage of collateral in basis points.
liquidationThresholdintegerHealth factor threshold for liquidation, in basis points.
liquidationPenaltyintegerLiquidation penalty or fee in basis points.
withdrawablestringVault-level withdrawable collateral (not specific to this NFT).
borrowablestringVault-level borrowable amount (not specific to this NFT).
oraclestringOracle contract address.
oraclePriceLiquidatestringPrice used for liquidation checks.
oraclePriceOperatestringPrice 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:

FieldTypeDescription
token0objectPrimary token for this side (collateral or borrow).
token1objectSecondary token for this side; frequently the zero address placeholder.

Each token uses the same Asset Object as in the vaults endpoint.

Asset Object

FieldTypeDescription
addressstringToken contract address (or 0xeeee... sentinel for native ETH-like tokens).
namestringToken name.
symbolstringToken symbol.
decimalsintegerNumber of decimals the token uses.
pricestringCurrent token price in USD.
chainIdstringChain ID as a string.
logoUrlstringURL for the token logo.
coingeckoIdstringCoinGecko identifier, if available.
updatedAtstringISO 8601 timestamp of the last price update.
stakingAprstring(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.
  • id is the NFT ID you use in on-chain calls such as operate(nftId, ...).
  • The same user can have multiple NFTs in the same vault or across different vaults.
  • isSupplyPosition tells 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.