> For the complete documentation index, see [llms.txt](https://docs.creditcoop.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.creditcoop.xyz/developer-api-docs/depositors.md).

# Depositors

Depositor portfolio and performance metrics

## Get depositor pending deposits

> Get pending deposit requests across all vaults for a given depositor controller address. If networkId is omitted, results span all chains. Requires authentication.

```json
{"openapi":"3.0.3","info":{"title":"Credit Coop API","version":"3.0.0"},"tags":[{"name":"Depositors","description":"Depositor portfolio and performance metrics"}],"servers":[{"url":"https://api.creditcoop.xyz"}],"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]},{"OAuth2":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key","description":"API key in the format: cc_xxx_yyy (for customer API routes)"},"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Clerk authentication token (session JWT or Clerk OAuth access token) used by Credit Coop"},"OAuth2":{"type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://clerk.creditcoop.xyz/oauth/authorize","tokenUrl":"https://clerk.creditcoop.xyz/oauth/token","scopes":{"openid":"OpenID Connect","email":"User email","profile":"User profile"}}},"description":"Credit Coop OAuth"}},"schemas":{"ErrorResponse":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"statusCode":{"type":"integer"}}}}},"paths":{"/v3/depositors/pending-deposits":{"get":{"operationId":"getDepositorPendingDeposits","summary":"Get depositor pending deposits","tags":["Depositors"],"description":"Get pending deposit requests across all vaults for a given depositor controller address. If networkId is omitted, results span all chains. Requires authentication.","parameters":[{"schema":{"type":"string","maxLength":200},"in":"query","name":"address","required":true,"description":"Depositor controller address to look up pending deposits for. The controller is the address that initiated the ERC-7540 async request (pendingDepositRequest / pendingRedeemRequest) and may differ from the eventual share owner — e.g. a smart wallet or router acting on a user's behalf. Example: 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"},{"schema":{"type":"string","maxLength":42,"pattern":"^0x[0-9a-fA-F]{40}$"},"in":"query","name":"vaultAddress","required":false,"description":"Filter to a specific vault address. Example: 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"},{"schema":{"type":"string","maxLength":200},"in":"query","name":"networkId","required":false,"description":"CAIP-2 network ID (e.g., \"eip155:1\", \"eip155:8453\"). If omitted, results span all chains."}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["controllerAddress","pendingDeposits","claimableDeposits"],"properties":{"controllerAddress":{"type":"string","description":"ERC-7540 controller address — the account that initiated the async deposit/redeem request. May differ from the eventual share owner."},"pendingDeposits":{"type":"array","items":{"type":"object","required":["vaultId","vaultAddress","networkId","pendingAssets"],"properties":{"vaultId":{"type":"string","format":"uuid"},"vaultAddress":{"type":"string"},"networkId":{"type":"string"},"pendingAssets":{"type":"string","description":"Pending deposit amount (raw uint256 — divide by 10^decimals to get human-readable value)"},"decimals":{"type":"integer","nullable":true},"assetToken":{"type":"string","nullable":true}}}},"claimableDeposits":{"type":"array","items":{"type":"object","required":["vaultId","vaultAddress","networkId","claimableAssets","claimableShares"],"properties":{"vaultId":{"type":"string","format":"uuid"},"vaultAddress":{"type":"string"},"networkId":{"type":"string"},"claimableAssets":{"type":"string","description":"Claimable asset amount (raw uint256 — divide by 10^decimals to get human-readable value)"},"claimableShares":{"type":"string","description":"Claimable share amount (raw uint256 — divide by 10^decimals to get human-readable value)"},"decimals":{"type":"integer","nullable":true},"assetToken":{"type":"string","nullable":true}}}}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Get depositor pending redemptions

> Get pending redemption requests across all vaults for a given depositor controller address. If networkId is omitted, results span all chains. Requires authentication.

```json
{"openapi":"3.0.3","info":{"title":"Credit Coop API","version":"3.0.0"},"tags":[{"name":"Depositors","description":"Depositor portfolio and performance metrics"}],"servers":[{"url":"https://api.creditcoop.xyz"}],"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]},{"OAuth2":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key","description":"API key in the format: cc_xxx_yyy (for customer API routes)"},"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Clerk authentication token (session JWT or Clerk OAuth access token) used by Credit Coop"},"OAuth2":{"type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://clerk.creditcoop.xyz/oauth/authorize","tokenUrl":"https://clerk.creditcoop.xyz/oauth/token","scopes":{"openid":"OpenID Connect","email":"User email","profile":"User profile"}}},"description":"Credit Coop OAuth"}},"schemas":{"ErrorResponse":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"statusCode":{"type":"integer"}}}}},"paths":{"/v3/depositors/pending-redemptions":{"get":{"operationId":"getDepositorPendingRedemptions","summary":"Get depositor pending redemptions","tags":["Depositors"],"description":"Get pending redemption requests across all vaults for a given depositor controller address. If networkId is omitted, results span all chains. Requires authentication.","parameters":[{"schema":{"type":"string","maxLength":200},"in":"query","name":"address","required":true,"description":"Depositor controller address to look up pending redemptions for. The controller is the address that initiated the ERC-7540 async request (pendingDepositRequest / pendingRedeemRequest) and may differ from the eventual share owner — e.g. a smart wallet or router acting on a user's behalf. Example: 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"},{"schema":{"type":"string","maxLength":42,"pattern":"^0x[0-9a-fA-F]{40}$"},"in":"query","name":"vaultAddress","required":false,"description":"Filter to a specific vault address. Example: 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"},{"schema":{"type":"string","maxLength":200},"in":"query","name":"networkId","required":false,"description":"CAIP-2 network ID (e.g., \"eip155:1\", \"eip155:8453\"). If omitted, results span all chains."}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["controllerAddress","pendingRedemptions","claimableRedemptions"],"properties":{"controllerAddress":{"type":"string","description":"ERC-7540 controller address — the account that initiated the async deposit/redeem request. May differ from the eventual share owner."},"pendingRedemptions":{"type":"array","items":{"type":"object","required":["vaultId","vaultAddress","networkId","pendingShares"],"properties":{"vaultId":{"type":"string","format":"uuid"},"vaultAddress":{"type":"string"},"networkId":{"type":"string"},"pendingShares":{"type":"string","description":"Pending share amount (raw uint256 — divide by 10^decimals to get human-readable value)"},"decimals":{"type":"integer","nullable":true},"shareToken":{"type":"string","nullable":true}}}},"claimableRedemptions":{"type":"array","items":{"type":"object","required":["vaultId","vaultAddress","networkId","claimableShares","claimableAssets"],"properties":{"vaultId":{"type":"string","format":"uuid"},"vaultAddress":{"type":"string"},"networkId":{"type":"string"},"claimableShares":{"type":"string","description":"Claimable share amount (raw uint256 — divide by 10^decimals to get human-readable value)"},"claimableAssets":{"type":"string","description":"Claimable asset amount (raw uint256 — divide by 10^decimals to get human-readable value)"},"decimals":{"type":"integer","nullable":true},"shareToken":{"type":"string","nullable":true}}}}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Get depositor vault balances

> Get vault share balances for a depositor address. Returns vaults where the address holds shares, with current balance and asset value. If networkId is omitted, results span all chains. Requires authentication.

```json
{"openapi":"3.0.3","info":{"title":"Credit Coop API","version":"3.0.0"},"tags":[{"name":"Depositors","description":"Depositor portfolio and performance metrics"}],"servers":[{"url":"https://api.creditcoop.xyz"}],"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]},{"OAuth2":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key","description":"API key in the format: cc_xxx_yyy (for customer API routes)"},"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Clerk authentication token (session JWT or Clerk OAuth access token) used by Credit Coop"},"OAuth2":{"type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://clerk.creditcoop.xyz/oauth/authorize","tokenUrl":"https://clerk.creditcoop.xyz/oauth/token","scopes":{"openid":"OpenID Connect","email":"User email","profile":"User profile"}}},"description":"Credit Coop OAuth"}},"schemas":{"ErrorResponse":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"statusCode":{"type":"integer"}}}}},"paths":{"/v3/depositors/balances":{"get":{"operationId":"getDepositorBalances","summary":"Get depositor vault balances","tags":["Depositors"],"description":"Get vault share balances for a depositor address. Returns vaults where the address holds shares, with current balance and asset value. If networkId is omitted, results span all chains. Requires authentication.","parameters":[{"schema":{"type":"string","maxLength":200},"in":"query","name":"address","required":true,"description":"Depositor owner address — the ERC-4626 holder of vault shares (per balanceOf). Returns balances for shares currently owned by this address. Example: 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"},{"schema":{"type":"string","maxLength":200},"in":"query","name":"networkId","required":false,"description":"CAIP-2 network ID (e.g., \"eip155:1\", \"eip155:8453\"). If omitted, results span all chains."},{"schema":{"type":"boolean"},"in":"query","name":"includeZeroBalances","required":false,"description":"If true, include vaults where the address has historical transfer activity but current balance is 0. Defaults to false."}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["address","vaults"],"properties":{"address":{"type":"string","description":"Depositor owner address queried — the ERC-4626 share holder."},"vaults":{"type":"array","items":{"type":"object","required":["vaultId","vaultAddress","networkId","shares"],"properties":{"vaultId":{"type":"string","format":"uuid","description":"Vault ID"},"vaultAddress":{"type":"string","description":"Vault contract address"},"networkId":{"type":"string","description":"CAIP-2 network ID"},"shares":{"type":"string","description":"Current share balance (raw uint256 — divide by 10^decimals to get human-readable value)"},"assetsValue":{"type":"string","nullable":true,"description":"Shares converted to underlying assets (raw uint256 — divide by 10^decimals to get human-readable value)"},"assetsValueUsd":{"type":"string","nullable":true,"description":"USD value of the depositor's vault position (null if price unavailable)"},"decimals":{"type":"integer","nullable":true,"description":"Token decimals"},"assetToken":{"type":"string","nullable":true,"description":"Underlying asset token address"}}}}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Get depositor portfolio

> Returns a depositor's portfolio broken down by vault and aggregated at the portfolio level. Per-vault data includes: annualized yield (APY calculated as IRR/money-weighted return), holding period, interest earned, start/end position values, total deposited/withdrawn, share balances, and deposit/withdraw counts — all in both native token amounts (raw integer strings) and USD where pricing is available. The portfolio-level summary aggregates these metrics across all vaults in USD, including a combined APY. Use the expand parameter to include per-vault transaction timelines (with running balances), organization details, and daily time series (vault-daily-stats for per-vault, portfolio-daily-stats for portfolio-level, or daily-stats for both). Uses FIFO accounting for cost basis tracking. Supports optional date range filtering — when startDate is provided, all prior transactions are used to compute the opening position. Requires authentication.

```json
{"openapi":"3.0.3","info":{"title":"Credit Coop API","version":"3.0.0"},"tags":[{"name":"Depositors","description":"Depositor portfolio and performance metrics"}],"servers":[{"url":"https://api.creditcoop.xyz"}],"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]},{"OAuth2":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key","description":"API key in the format: cc_xxx_yyy (for customer API routes)"},"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Clerk authentication token (session JWT or Clerk OAuth access token) used by Credit Coop"},"OAuth2":{"type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://clerk.creditcoop.xyz/oauth/authorize","tokenUrl":"https://clerk.creditcoop.xyz/oauth/token","scopes":{"openid":"OpenID Connect","email":"User email","profile":"User profile"}}},"description":"Credit Coop OAuth"}},"schemas":{"Organization":{"type":"object","required":["id","name","slug"],"properties":{"id":{"type":"string","format":"uuid","description":"Organization unique identifier"},"name":{"type":"string","maxLength":255,"description":"Organization display name"},"slug":{"type":"string","maxLength":100,"description":"URL-friendly identifier"},"header":{"type":"string","nullable":true,"description":"Short tagline or headline for the organization profile"},"description":{"type":"string","nullable":true,"description":"Brief summary of the organization"},"overview":{"type":"string","nullable":true,"description":"Long-form organization description (may contain Markdown)"},"links":{"type":"array","description":"Organization links and image assets. Labels starting with \"#\" are image assets (e.g. \"#logo\", \"#header\"); all others are external links (e.g. \"Twitter\", \"Website\").","items":{"type":"object","required":["id","label","url"],"properties":{"id":{"type":"string","format":"uuid","description":"Link unique identifier"},"label":{"type":"string","description":"Link type. \"#logo\" and \"#header\" denote image assets; other values (e.g. \"Twitter\", \"Website\") denote external links."},"linkText":{"type":"string","nullable":true,"description":"Display text for external links (e.g. \"@raincards\", \"rain.xyz\")"},"iconUrl":{"type":"string","nullable":true,"description":"Icon image URL for external links"},"url":{"type":"string","description":"Target URL (image URL for asset links, destination URL for external links)"}}}}}},"ErrorResponse":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"statusCode":{"type":"integer"}}}}},"paths":{"/v3/depositors/portfolio":{"get":{"operationId":"getDepositorPortfolio","summary":"Get depositor portfolio","tags":["Depositors"],"description":"Returns a depositor's portfolio broken down by vault and aggregated at the portfolio level. Per-vault data includes: annualized yield (APY calculated as IRR/money-weighted return), holding period, interest earned, start/end position values, total deposited/withdrawn, share balances, and deposit/withdraw counts — all in both native token amounts (raw integer strings) and USD where pricing is available. The portfolio-level summary aggregates these metrics across all vaults in USD, including a combined APY. Use the expand parameter to include per-vault transaction timelines (with running balances), organization details, and daily time series (vault-daily-stats for per-vault, portfolio-daily-stats for portfolio-level, or daily-stats for both). Uses FIFO accounting for cost basis tracking. Supports optional date range filtering — when startDate is provided, all prior transactions are used to compute the opening position. Requires authentication.","parameters":[{"schema":{"type":"string","maxLength":200},"in":"query","name":"address","required":true,"description":"Depositor owner address — the ERC-4626 holder of vault shares (per balanceOf). Returns portfolio performance for shares currently owned by this address. Example: 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"},{"schema":{"type":"string","maxLength":200},"in":"query","name":"networkId","required":false,"description":"CAIP-2 network ID (e.g., \"eip155:1\", \"eip155:8453\"). If omitted, results span all chains."},{"schema":{"type":"string"},"in":"query","name":"startDate","required":false,"description":"ISO 8601 date for the start of the measurement window (earliest: 2020-01-01). Prior transactions are used to compute the opening position."},{"schema":{"type":"string"},"in":"query","name":"endDate","required":false,"description":"ISO 8601 date for the end of the measurement window (inclusive). Defaults to now."},{"schema":{"type":"array","style":"form","explode":false,"items":{"type":"string","enum":["transactions","organization","vault-daily-stats","portfolio-daily-stats","daily-stats"]}},"in":"query","name":"expand","required":false,"description":"Comma-separated list of fields to expand. Valid values: \"transactions\" (includes per-vault transaction timelines (with running balances)), \"organization\" (includes full organization object with links for each vault), \"vault-daily-stats\" (includes per-vault daily stats timeseries), \"portfolio-daily-stats\" (includes portfolio-level daily stats timeseries (USD-denominated, summed across vaults)), \"daily-stats\" (alias — expands to both vault-daily-stats and portfolio-daily-stats)."}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["address","networkId","startDate","endDate","vaults","portfolio"],"properties":{"address":{"type":"string","description":"Depositor owner address queried — the ERC-4626 share holder."},"networkId":{"type":"string","nullable":true,"description":"CAIP-2 network filter applied (null if querying all chains)"},"startDate":{"type":"string","nullable":true,"format":"date-time","description":"Start of measurement window (resolved from param or earliest activity; null if no activity)"},"endDate":{"type":"string","nullable":true,"format":"date-time","description":"End of measurement window (resolved from param or current time; null if no activity)"},"vaults":{"type":"array","items":{"type":"object","required":["vaultId","vaultAddress","networkId","decimals","holdingPeriodDays","totalInterestEarned","startValue","endValue","totalDeposited","totalWithdrawn","startShares","endShares","depositCount","withdrawCount"],"properties":{"vaultId":{"type":"string","format":"uuid"},"vaultAddress":{"type":"string"},"networkId":{"type":"string"},"apyPct":{"type":"number","nullable":true,"description":"Annualized money-weighted return as percent (10.00 = 10%). Null if holding period < 24h."},"holdingPeriodDays":{"type":"number","description":"Holding period in days (rounded to 2 decimal places)"},"assetToken":{"type":"string","nullable":true,"description":"Underlying asset token address"},"assetTokenSymbol":{"type":"string","nullable":true,"description":"Underlying asset token symbol (e.g., USDC)"},"decimals":{"type":"integer","description":"Asset token decimals — divide raw integer values by 10^decimals for human-readable amounts. Share amounts currently use the same decimals (our vaults have ERC-4626 parity) but the spec only recommends this."},"organization":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/Organization"}],"description":"Organization details with links. Only included when expand includes \"organization\"."},"totalInterestEarned":{"type":"string","description":"Total interest earned (realized + unrealized) as raw integer string — divide by 10^decimals for human-readable value"},"startValue":{"type":"string","description":"Position value at start of measurement window as raw integer string — divide by 10^decimals for human-readable value"},"endValue":{"type":"string","description":"Position value at end of measurement window as raw integer string — divide by 10^decimals for human-readable value"},"totalDeposited":{"type":"string","description":"Total deposited as raw integer string — divide by 10^decimals for human-readable value"},"totalWithdrawn":{"type":"string","description":"Total withdrawn as raw integer string — divide by 10^decimals for human-readable value"},"totalInterestEarnedUsd":{"type":"string","nullable":true,"description":"Total interest earned in USD (null if price unavailable)"},"startValueUsd":{"type":"string","nullable":true,"description":"Start value in USD (null if price unavailable)"},"endValueUsd":{"type":"string","nullable":true,"description":"End value in USD (null if price unavailable)"},"totalDepositedUsd":{"type":"string","nullable":true,"description":"Total deposited in USD (null if price unavailable)"},"totalWithdrawnUsd":{"type":"string","nullable":true,"description":"Total withdrawn in USD (null if price unavailable)"},"totalTransferredIn":{"type":"string","description":"Total transferred in via peer-to-peer share transfers as raw integer string — divide by 10^decimals for human-readable value"},"totalTransferredOut":{"type":"string","description":"Total transferred out via peer-to-peer share transfers as raw integer string — divide by 10^decimals for human-readable value"},"totalTransferredInUsd":{"type":"string","nullable":true,"description":"Total transferred in USD (null if price unavailable)"},"totalTransferredOutUsd":{"type":"string","nullable":true,"description":"Total transferred out in USD (null if price unavailable)"},"totalSharesDeposited":{"type":"string","description":"Total shares deposited as raw integer string — divide by 10^decimals for human-readable value"},"totalSharesWithdrawn":{"type":"string","description":"Total shares withdrawn as raw integer string — divide by 10^decimals for human-readable value"},"totalSharesTransferredIn":{"type":"string","description":"Total shares received via peer-to-peer transfers as raw integer string — divide by 10^decimals for human-readable value"},"totalSharesTransferredOut":{"type":"string","description":"Total shares sent via peer-to-peer transfers as raw integer string — divide by 10^decimals for human-readable value"},"startShares":{"type":"string","description":"Share balance at start of measurement window as raw integer string — divide by 10^decimals for human-readable value"},"endShares":{"type":"string","description":"Share balance at end of measurement window as raw integer string — divide by 10^decimals for human-readable value"},"depositCount":{"type":"integer"},"withdrawCount":{"type":"integer"},"transferInCount":{"type":"integer"},"transferOutCount":{"type":"integer"},"dailyStats":{"type":"array","description":"Daily timeseries with share balances, asset values, and cumulative interest. Only included when expand includes \"vault-daily-stats\" or \"daily-stats\".","items":{"type":"object","required":["date","shares"],"properties":{"date":{"type":"string","description":"UTC date (YYYY-MM-DD)"},"shares":{"type":"string","description":"Share balance at end of day as raw integer string — divide by 10^decimals for human-readable value"},"balance":{"type":"string","nullable":true,"description":"Asset value at end of day (shares × sharePrice) as raw integer string — null if no share price snapshot available"},"balanceUsd":{"type":"string","nullable":true,"description":"USD value of position at end of day (null if price unavailable)"},"totalInterestEarned":{"type":"string","nullable":true,"description":"Cumulative interest earned up to this day as raw integer string — null if balance is null"},"totalInterestEarnedUsd":{"type":"string","nullable":true,"description":"Cumulative interest earned up to this day in USD (null if price unavailable)"}}}},"transactions":{"type":"array","description":"Ordered transaction timeline (real on-chain events only)","items":{"type":"object","required":["type","timestamp","amount","amountUsd","balance","balanceUsd","shares","sharesBalance"],"properties":{"type":{"type":"string","enum":["deposit","withdraw","transfer-in","transfer-out"]},"timestamp":{"type":"string","format":"date-time"},"amount":{"type":"string","description":"Native asset amount as raw integer string — divide by 10^decimals for human-readable value."},"amountUsd":{"type":"string","nullable":true,"description":"USD amount at transaction time (null if price unavailable)"},"balance":{"type":"string","description":"Running balance (mark-to-market: sharesBalance * sharePrice) as raw integer string — divide by 10^decimals for human-readable value"},"shares":{"type":"string","description":"Share amount for this event as raw integer string — divide by 10^decimals for human-readable value."},"sharesBalance":{"type":"string","description":"Running share count after this event as raw integer string — divide by 10^decimals for human-readable value"},"balanceUsd":{"type":"string","nullable":true,"description":"Running balance in USD at transaction time (null if price unavailable)"},"txHash":{"type":"string","nullable":true,"description":"Transaction hash"}}}}}}},"portfolio":{"type":"object","required":["apyPct","holdingPeriodDays","startValueUsd","endValueUsd","totalDepositedUsd","totalWithdrawnUsd","totalInterestEarnedUsd"],"properties":{"apyPct":{"type":"number","nullable":true,"description":"Portfolio-level annualized money-weighted return as percent (10.00 = 10%). Null if holding period < 24h."},"holdingPeriodDays":{"type":"number","description":"Total days invested in at least one vault"},"startValueUsd":{"type":"string","nullable":true,"description":"Portfolio start value in USD (null if no vaults have pricing)"},"endValueUsd":{"type":"string","nullable":true,"description":"Portfolio end value in USD (null if no vaults have pricing)"},"totalDepositedUsd":{"type":"string","nullable":true,"description":"Total deposited across all vaults in USD (null if no vaults have pricing)"},"totalWithdrawnUsd":{"type":"string","nullable":true,"description":"Total withdrawn across all vaults in USD (null if no vaults have pricing)"},"totalTransferredInUsd":{"type":"string","nullable":true,"description":"Total transferred in across all vaults in USD (null if no vaults have pricing)"},"totalTransferredOutUsd":{"type":"string","nullable":true,"description":"Total transferred out across all vaults in USD (null if no vaults have pricing)"},"transferInCount":{"type":"integer","description":"Total transfer-in count across all vaults"},"transferOutCount":{"type":"integer","description":"Total transfer-out count across all vaults"},"totalInterestEarnedUsd":{"type":"string","nullable":true,"description":"Total interest earned across all vaults in USD (null if no vaults have pricing)"},"dailyStats":{"type":"array","description":"Portfolio-level daily stats timeseries (USD-denominated, summed across vaults). Only included when expand includes \"portfolio-daily-stats\" or \"daily-stats\".","items":{"type":"object","required":["date"],"properties":{"date":{"type":"string","description":"UTC date (YYYY-MM-DD)"},"balanceUsd":{"type":"string","nullable":true,"description":"Portfolio USD balance at end of day (null if no priced vaults)"},"totalInterestEarnedUsd":{"type":"string","nullable":true,"description":"Portfolio cumulative interest earned in USD up to this day (null if no priced vaults)"}}}}}}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.creditcoop.xyz/developer-api-docs/depositors.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
