> 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/vaults.md).

# Vaults

Vault management

## List vaults

> List enabled vaults with organization info. Authentication is optional but affects results: unauthenticated requests only see vaults with public organizations, authenticated users see vaults with public orgs plus private orgs they have access to.

```json
{"openapi":"3.0.3","info":{"title":"Credit Coop API","version":"3.0.0"},"tags":[{"name":"Vaults","description":"Vault management"}],"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":{"Vault":{"type":"object","required":["id","address","networkId","protocolVersion","label","organizationId","deployedAt"],"properties":{"id":{"type":"string","format":"uuid","description":"Vault unique identifier"},"address":{"type":"string","description":"Vault contract address"},"networkId":{"type":"string","description":"CAIP-2 network identifier"},"protocolVersion":{"type":"string","nullable":true,"description":"Credit Coop protocol/contract generation (e.g. \"v1\", \"v2\"). Null when not classified."},"label":{"type":"string","nullable":true,"description":"Display label for the vault. Always present; null if not configured."},"organizationId":{"type":"string","format":"uuid","nullable":true,"description":"Vault curator organization ID"},"deployedAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp when the vault contract was deployed"},"organization":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/Organization"}],"description":"Organization details with links. Only included when expand includes \"organization\"."},"relatedAddresses":{"type":"object","nullable":true,"description":"On-chain related addresses. Only included when expand includes \"related-addresses\".","properties":{"creditStrategy":{"type":"string","nullable":true,"description":"CreditStrategy contract address. Manages credit allocation from vault funds to credit facilities."},"liquidStrategy":{"type":"string","nullable":true,"description":"LiquidStrategy contract address. Manages liquid asset reserves in the vault."},"vaultCurator":{"type":"string","nullable":true,"description":"Vault curator (manager) address of the CreditStrategy contract. Retrieved by calling manager() on the creditStrategy."}}},"assets":{"type":"object","nullable":true,"description":"Asset information. Only included when expand includes \"assets\".","properties":{"assetToken":{"type":"string","nullable":true,"description":"Asset token address"},"shareToken":{"type":"string","nullable":true,"description":"Share token address"},"decimals":{"type":"integer","nullable":true,"description":"Asset token decimals"},"totalAssets":{"type":"string","nullable":true,"description":"Total assets in the vault (raw uint256 — divide by 10^decimals to get human-readable value)"},"totalLiquidAssets":{"type":"string","nullable":true,"description":"Total liquid assets. Vault's balance - total pending deposits - claimable redeem assets + liquid strategy total assets + uninvested credit strategy assets (raw uint256 — divide by 10^decimals to get human-readable value)"},"totalSupply":{"type":"string","nullable":true,"description":"Total supply of vault shares (raw uint256 — divide by 10^decimals to get human-readable value)"},"sharePrice":{"type":"string","nullable":true,"description":"Share price of the vault (raw uint256 — divide by 10^decimals to get human-readable value)"},"baseUnit":{"type":"string","nullable":true,"description":"Minimum accounting unit used by the CreditStrategy for scaling interest calculations (raw uint256). Equal to 10^decimals."},"totalActiveCredit":{"type":"string","nullable":true,"description":"Total active credit from CreditStrategy. Deposits plus accrued and repaid interest for all credit lines (raw uint256 — divide by 10^decimals to get human-readable value)"},"uninvestedCreditAssets":{"type":"string","nullable":true,"description":"Uninvested credit assets. Asset token balance held by CreditStrategy (raw uint256 — divide by 10^decimals to get human-readable value)"}}},"apy":{"type":"object","nullable":true,"description":"APY data from historical sharePrice snapshots. Only included when expand includes \"apy\".","properties":{"apyPct30D":{"type":"number","nullable":true,"description":"30-day APY in percent (e.g. 5.0 = 5%). Null if insufficient snapshot data."}}},"fees":{"type":"object","nullable":true,"description":"Credit strategy fees in basis points. Only included when expand includes \"fees\".","properties":{"managementFee":{"type":"integer","description":"Management fee in basis points (e.g. 200 = 2%)"},"performanceFee":{"type":"integer","description":"Performance fee in basis points (e.g. 1000 = 10%)"}}}}},"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)"}}}}}},"Pagination":{"type":"object","required":["total","limit","offset"],"properties":{"total":{"type":"integer","description":"Total number of records matching the query"},"limit":{"type":"integer","description":"Maximum number of records returned per page"},"offset":{"type":"integer","description":"Number of records skipped from the start"}}}}},"paths":{"/v3/vaults":{"get":{"operationId":"listVaults","summary":"List vaults","tags":["Vaults"],"description":"List enabled vaults with organization info. Authentication is optional but affects results: unauthenticated requests only see vaults with public organizations, authenticated users see vaults with public orgs plus private orgs they have access to.","parameters":[{"schema":{"type":"string","maxLength":36,"format":"uuid"},"in":"query","name":"organizationId","required":false,"description":"Filter by vault curator organization ID. Example: 550e8400-e29b-41d4-a716-446655440000"},{"schema":{"type":"string","maxLength":100},"in":"query","name":"address","required":false,"description":"Filter by vault address. Case-insensitive when networkId is omitted or is an EVM chain (eip155:*), case-sensitive otherwise. Example: 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"},{"schema":{"type":"string","maxLength":50},"in":"query","name":"networkId","required":false,"description":"Filter by network ID (CAIP-2 blockchain ID), e.g., `eip155:1` (Ethereum), `eip155:137` (Polygon), `solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp` (Solana)"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20},"in":"query","name":"limit","required":false},{"schema":{"type":"integer","minimum":0,"default":0},"in":"query","name":"offset","required":false},{"schema":{"type":"array","style":"form","explode":false,"items":{"type":"string","enum":["related-addresses","assets","organization","apy","fees"]}},"in":"query","name":"expand","required":false,"description":"Comma-separated list of fields to expand. Valid values: \"related-addresses\" (fetches on-chain addresses: creditStrategy, liquidStrategy, vaultCurator), \"assets\" (fetches asset info: assetToken, shareToken, decimals, totalAssets, totalLiquidAssets, totalSupply, sharePrice, baseUnit, totalActiveCredit, uninvestedCreditAssets), \"organization\" (includes full organization object with links), \"apy\" (fetches 30-day APY from historical sharePrice snapshots), \"fees\" (fetches managementFee and performanceFee from creditStrategy in basis points)."}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["vaults","pagination"],"properties":{"vaults":{"type":"array","items":{"$ref":"#/components/schemas/Vault"}},"pagination":{"$ref":"#/components/schemas/Pagination"}}}}}}}}}}}
```

## Get vault by ID

> Get a single vault by ID with organization info. Authentication is optional but required to view vaults with private organizations. Vaults with public organizations are visible to everyone.

```json
{"openapi":"3.0.3","info":{"title":"Credit Coop API","version":"3.0.0"},"tags":[{"name":"Vaults","description":"Vault management"}],"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":{"Vault":{"type":"object","required":["id","address","networkId","protocolVersion","label","organizationId","deployedAt"],"properties":{"id":{"type":"string","format":"uuid","description":"Vault unique identifier"},"address":{"type":"string","description":"Vault contract address"},"networkId":{"type":"string","description":"CAIP-2 network identifier"},"protocolVersion":{"type":"string","nullable":true,"description":"Credit Coop protocol/contract generation (e.g. \"v1\", \"v2\"). Null when not classified."},"label":{"type":"string","nullable":true,"description":"Display label for the vault. Always present; null if not configured."},"organizationId":{"type":"string","format":"uuid","nullable":true,"description":"Vault curator organization ID"},"deployedAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp when the vault contract was deployed"},"organization":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/Organization"}],"description":"Organization details with links. Only included when expand includes \"organization\"."},"relatedAddresses":{"type":"object","nullable":true,"description":"On-chain related addresses. Only included when expand includes \"related-addresses\".","properties":{"creditStrategy":{"type":"string","nullable":true,"description":"CreditStrategy contract address. Manages credit allocation from vault funds to credit facilities."},"liquidStrategy":{"type":"string","nullable":true,"description":"LiquidStrategy contract address. Manages liquid asset reserves in the vault."},"vaultCurator":{"type":"string","nullable":true,"description":"Vault curator (manager) address of the CreditStrategy contract. Retrieved by calling manager() on the creditStrategy."}}},"assets":{"type":"object","nullable":true,"description":"Asset information. Only included when expand includes \"assets\".","properties":{"assetToken":{"type":"string","nullable":true,"description":"Asset token address"},"shareToken":{"type":"string","nullable":true,"description":"Share token address"},"decimals":{"type":"integer","nullable":true,"description":"Asset token decimals"},"totalAssets":{"type":"string","nullable":true,"description":"Total assets in the vault (raw uint256 — divide by 10^decimals to get human-readable value)"},"totalLiquidAssets":{"type":"string","nullable":true,"description":"Total liquid assets. Vault's balance - total pending deposits - claimable redeem assets + liquid strategy total assets + uninvested credit strategy assets (raw uint256 — divide by 10^decimals to get human-readable value)"},"totalSupply":{"type":"string","nullable":true,"description":"Total supply of vault shares (raw uint256 — divide by 10^decimals to get human-readable value)"},"sharePrice":{"type":"string","nullable":true,"description":"Share price of the vault (raw uint256 — divide by 10^decimals to get human-readable value)"},"baseUnit":{"type":"string","nullable":true,"description":"Minimum accounting unit used by the CreditStrategy for scaling interest calculations (raw uint256). Equal to 10^decimals."},"totalActiveCredit":{"type":"string","nullable":true,"description":"Total active credit from CreditStrategy. Deposits plus accrued and repaid interest for all credit lines (raw uint256 — divide by 10^decimals to get human-readable value)"},"uninvestedCreditAssets":{"type":"string","nullable":true,"description":"Uninvested credit assets. Asset token balance held by CreditStrategy (raw uint256 — divide by 10^decimals to get human-readable value)"}}},"apy":{"type":"object","nullable":true,"description":"APY data from historical sharePrice snapshots. Only included when expand includes \"apy\".","properties":{"apyPct30D":{"type":"number","nullable":true,"description":"30-day APY in percent (e.g. 5.0 = 5%). Null if insufficient snapshot data."}}},"fees":{"type":"object","nullable":true,"description":"Credit strategy fees in basis points. Only included when expand includes \"fees\".","properties":{"managementFee":{"type":"integer","description":"Management fee in basis points (e.g. 200 = 2%)"},"performanceFee":{"type":"integer","description":"Performance fee in basis points (e.g. 1000 = 10%)"}}}}},"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/vaults/{id}":{"get":{"operationId":"getVault","summary":"Get vault by ID","tags":["Vaults"],"description":"Get a single vault by ID with organization info. Authentication is optional but required to view vaults with private organizations. Vaults with public organizations are visible to everyone.","parameters":[{"schema":{"type":"array","style":"form","explode":false,"items":{"type":"string","enum":["related-addresses","assets","organization","apy","fees"]}},"in":"query","name":"expand","required":false,"description":"Comma-separated list of fields to expand. Valid values: \"related-addresses\" (fetches on-chain addresses: creditStrategy, liquidStrategy, vaultCurator), \"assets\" (fetches asset info: assetToken, shareToken, decimals, totalAssets, totalLiquidAssets, totalSupply, sharePrice, baseUnit, totalActiveCredit, uninvestedCreditAssets), \"organization\" (includes full organization object with links), \"apy\" (fetches 30-day APY from historical sharePrice snapshots), \"fees\" (fetches managementFee and performanceFee from creditStrategy in basis points)."},{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true,"description":"Vault ID. Example: 550e8400-e29b-41d4-a716-446655440000"}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Vault"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Get vault event logs

> Get on-chain event logs for a vault.\
> \
> Supports three response formats via the \`format\` query parameter:\
> \- \*\*json\*\* (default) — paginated JSON (default limit 20, max 1000).\
> \- \*\*csv\*\* — streamed CSV file download (up to 1 000 000 rows).\
> \- \*\*event-stream\*\* — Server-Sent Events stream (up to 1 000 000 rows). Each log is emitted as a named \`log\` event with JSON data. A final \`done\` event carries \`{"total": N}\`. Connect with \`EventSource\` or \`fetch\`:\
> \
> \`\`\`js\
> const es = new EventSource('/v3/vaults/{id}/logs?format=event-stream');\
> es.addEventListener('log', (e) => console.log(JSON.parse(e.data)));\
> es.addEventListener('done', (e) => { console.log('total:', JSON.parse(e.data).total); es.close(); });\
> \`\`\`\
> \
> Authentication is optional but required for vaults with private organizations. Returns events from the vault contract, its credit strategy, and liquid strategy, ordered by most recent first.\
> \
> Event types: AddCredit, CancelDepositRequest, CancelRedeemRequest, Deposit, DepositRequest, IncreaseCredit, ManagerDeposit, ManagerWithdraw, MintManagementShares, MintPerformanceShares, ProcessDepositRequest, ProcessRedeemRequest, RedeemRequest, SetFee, SetManager, StrategyDeposit, StrategyWithdraw, SwapCreditPositionForTokens, VaultDeposit, VaultWithdraw, Withdraw, WithdrawDeposit, WithdrawProfit.

````json
{"openapi":"3.0.3","info":{"title":"Credit Coop API","version":"3.0.0"},"tags":[{"name":"Vaults","description":"Vault management"}],"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/vaults/{id}/logs":{"get":{"operationId":"getVaultLogs","summary":"Get vault event logs","tags":["Vaults"],"description":"Get on-chain event logs for a vault.\n\nSupports three response formats via the `format` query parameter:\n- **json** (default) — paginated JSON (default limit 20, max 1000).\n- **csv** — streamed CSV file download (up to 1 000 000 rows).\n- **event-stream** — Server-Sent Events stream (up to 1 000 000 rows). Each log is emitted as a named `log` event with JSON data. A final `done` event carries `{\"total\": N}`. Connect with `EventSource` or `fetch`:\n\n```js\nconst es = new EventSource('/v3/vaults/{id}/logs?format=event-stream');\nes.addEventListener('log', (e) => console.log(JSON.parse(e.data)));\nes.addEventListener('done', (e) => { console.log('total:', JSON.parse(e.data).total); es.close(); });\n```\n\nAuthentication is optional but required for vaults with private organizations. Returns events from the vault contract, its credit strategy, and liquid strategy, ordered by most recent first.\n\nEvent types: AddCredit, CancelDepositRequest, CancelRedeemRequest, Deposit, DepositRequest, IncreaseCredit, ManagerDeposit, ManagerWithdraw, MintManagementShares, MintPerformanceShares, ProcessDepositRequest, ProcessRedeemRequest, RedeemRequest, SetFee, SetManager, StrategyDeposit, StrategyWithdraw, SwapCreditPositionForTokens, VaultDeposit, VaultWithdraw, Withdraw, WithdrawDeposit, WithdrawProfit.","parameters":[{"schema":{"type":"string","enum":["json","csv","event-stream"],"default":"json"},"in":"query","name":"format","required":false,"description":"Response format. \"json\" returns paginated JSON (default 20, max 1000). \"csv\" returns a streamed CSV file download. \"event-stream\" returns Server-Sent Events with each log as a named \"log\" event and a final \"done\" event. Event types: AddCredit, CancelDepositRequest, CancelRedeemRequest, Deposit, DepositRequest, IncreaseCredit, ManagerDeposit, ManagerWithdraw, MintManagementShares, MintPerformanceShares, ProcessDepositRequest, ProcessRedeemRequest, RedeemRequest, SetFee, SetManager, StrategyDeposit, StrategyWithdraw, SwapCreditPositionForTokens, VaultDeposit, VaultWithdraw, Withdraw, WithdrawDeposit, WithdrawProfit."},{"schema":{"type":"string","format":"date"},"in":"query","name":"startDate","required":false,"description":"Start date (YYYY-MM-DD). Example: 2025-01-15"},{"schema":{"type":"string","format":"date"},"in":"query","name":"endDate","required":false,"description":"End date, inclusive (YYYY-MM-DD). Example: 2025-01-15"},{"schema":{"type":"integer","minimum":1},"in":"query","name":"limit","required":false,"description":"Maximum number of results. For json: default 20, max 1000. For csv/event-stream: default 1000000, max 1000000."},{"schema":{"type":"integer","minimum":0,"default":0},"in":"query","name":"offset","required":false},{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true,"description":"Vault ID. Example: 550e8400-e29b-41d4-a716-446655440000"}],"responses":{"200":{"description":"Vault event logs. Response format depends on the `format` query parameter.","content":{"application/json":{"schema":{"type":"object","required":["vaultAddress","networkId","logs","pagination"],"properties":{"vaultAddress":{"type":"string","description":"Vault contract address"},"networkId":{"type":"string","nullable":true,"description":"CAIP-2 network identifier (e.g. eip155:1)"},"logs":{"type":"array","items":{"type":"object","required":["timestamp","eventType","contractAddress","txHash"],"properties":{"timestamp":{"type":"string","format":"date-time","description":"Block timestamp"},"eventType":{"type":"string","description":"Event name"},"address":{"type":"string","nullable":true,"description":"Event-specific principal address. Semantics vary by eventType: ERC-7540 request events (DepositRequest, RedeemRequest, ProcessDepositRequest, ProcessRedeemRequest, CancelDepositRequest, CancelRedeemRequest) → controller; Deposit → owner (ERC-4626 share recipient); Withdraw → receiver (asset recipient); ManagerDeposit, ManagerWithdraw, StrategyDeposit, StrategyWithdraw → sender; MintManagementShares, MintPerformanceShares → manager; VaultDeposit, VaultWithdraw → external vault address; WithdrawDeposit, WithdrawProfit → credit line; SwapCreditPositionForTokens → buyer; SetManager → newManager; CreditLineDeposit → credit facility; SetFee → null. Refer to eventType to interpret."},"amount":{"type":"string","nullable":true,"description":"Raw uint256 asset amount (use decimals field to interpret). Set for asset-denominated events. Null for share-only events (RedeemRequest, CancelRedeemRequest, MintManagementShares, MintPerformanceShares)."},"decimals":{"type":"integer","nullable":true,"description":"Token decimals for the amount field"},"token":{"type":"string","nullable":true,"description":"Asset token address for the amount field (when available)"},"shares":{"type":"string","nullable":true,"description":"Raw uint256 vault share count. Set for: Deposit, Withdraw, ProcessDepositRequest, ProcessRedeemRequest (alongside amount), and RedeemRequest, CancelRedeemRequest, MintManagementShares, MintPerformanceShares (shares only, amount is null)."},"shareToken":{"type":"string","nullable":true,"description":"Vault share token address (the vault contract itself). Set whenever shares is non-null."},"contractAddress":{"type":"string","description":"Contract that emitted the event"},"txHash":{"type":"string","description":"Transaction hash"},"lineTokenId":{"type":"string","nullable":true,"description":"Credit line token ID (for CreditLineDeposit events)"},"feeType":{"type":"string","nullable":true,"description":"Fee type: \"management\" or \"performance\" (for SetFee events)"},"managerShares":{"type":"string","nullable":true,"description":"Manager share amount (raw uint256, for MintManagementShares/MintPerformanceShares events only)"},"protocolShares":{"type":"string","nullable":true,"description":"Protocol share amount (raw uint256, for MintManagementShares/MintPerformanceShares events only)"},"protocolTreasury":{"type":"string","nullable":true,"description":"Protocol treasury address (for MintManagementShares/MintPerformanceShares events only)"}}}},"pagination":{"type":"object","required":["total","limit","offset"],"properties":{"total":{"type":"integer"},"limit":{"type":"integer"},"offset":{"type":"integer"}}}}}},"text/csv":{"schema":{"type":"string","description":"CSV file download. Columns: timestamp, eventType, address, amount, decimals, token, shares, shareToken, contractAddress, networkId, txHash, lineTokenId, feeType, managerShares, protocolShares, protocolTreasury."}},"text/event-stream":{"schema":{"type":"string","description":"Server-Sent Events stream. Each log is emitted as a named \"log\" event with JSON data. A final \"done\" event carries {\"total\": N}."}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
````

## Get vault historical asset metrics

> Get a daily timeseries of vault asset metrics derived from on-chain snapshots. Returns totalAssets, totalLiquidAssets, sharePrice, and a 30-day rolling APY for each calendar day in the requested range. Authentication is optional but required for vaults with private organizations and may increase rate limits.

```json
{"openapi":"3.0.3","info":{"title":"Credit Coop API","version":"3.0.0"},"tags":[{"name":"Vaults","description":"Vault management"}],"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/vaults/{id}/historical/assets":{"get":{"operationId":"getVaultHistoricalAssets","summary":"Get vault historical asset metrics","tags":["Vaults"],"description":"Get a daily timeseries of vault asset metrics derived from on-chain snapshots. Returns totalAssets, totalLiquidAssets, sharePrice, and a 30-day rolling APY for each calendar day in the requested range. Authentication is optional but required for vaults with private organizations and may increase rate limits.","parameters":[{"schema":{"type":"string","format":"date"},"in":"query","name":"startDate","required":false,"description":"Start date (YYYY-MM-DD, UTC). Defaults to the earliest available snapshot date."},{"schema":{"type":"string","format":"date"},"in":"query","name":"endDate","required":false,"description":"End date, inclusive (YYYY-MM-DD, UTC). Defaults to the latest available snapshot date."},{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true,"description":"Vault ID. Example: 550e8400-e29b-41d4-a716-446655440000"}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["vaultAddress","networkId","assetToken","shareToken","decimals","data"],"properties":{"vaultAddress":{"type":"string","description":"Vault contract address"},"networkId":{"type":"string","nullable":true,"description":"CAIP-2 network identifier"},"assetToken":{"type":"string","nullable":true,"description":"Underlying asset token address (ERC-4626 asset())"},"shareToken":{"type":"string","nullable":true,"description":"Vault share token address (ERC-4626 share())"},"decimals":{"type":"number","nullable":true,"description":"Asset token decimals (shared by asset and share tokens)"},"data":{"type":"array","items":{"type":"object","required":["date","totalAssets","totalLiquidAssets","sharePrice","apyPct30D"],"properties":{"date":{"type":"string","description":"Calendar day (YYYY-MM-DD, UTC)"},"totalAssets":{"type":"string","nullable":true,"description":"Total vault assets (raw uint256 — divide by 10^decimals to get human-readable value)"},"totalLiquidAssets":{"type":"string","nullable":true,"description":"Total liquid assets (raw uint256 — divide by 10^decimals to get human-readable value)"},"sharePrice":{"type":"string","nullable":true,"description":"Share price (raw uint256 — divide by 10^decimals to get human-readable value)"},"apyPct30D":{"type":"number","nullable":true,"description":"30-day rolling APY in percent (e.g. 5.25 = 5.25%). Null when fewer than 30 days of snapshot data exist."}}}}}}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Get vault credit lines

> Get credit lines for a vault by querying on-chain data from the creditStrategy contract. Authentication is optional but required to view vaults with private organizations. Vaults with public organizations are visible to everyone.

```json
{"openapi":"3.0.3","info":{"title":"Credit Coop API","version":"3.0.0"},"tags":[{"name":"Vaults","description":"Vault management"}],"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":{"CreditLine":{"type":"object","required":["lineTokenId"],"properties":{"lineTokenId":{"type":"string","description":"Credit line token ID"},"deposit":{"type":"string","nullable":true,"description":"Deposit amount (raw uint256 — divide by 10^decimals to get human-readable value)"},"creditLimit":{"type":"string","nullable":true,"description":"Credit limit (raw uint256 — divide by 10^decimals to get human-readable value). For open lines: equals current deposit. For closed lines: deposit from the most recent AddCredit or IncreaseCredit event."},"principal":{"type":"string","nullable":true,"description":"Principal amount borrowed (raw uint256 — divide by 10^decimals to get human-readable value)"},"interestBalance":{"type":"string","nullable":true,"description":"Total interest balance (raw uint256 — divide by 10^decimals to get human-readable value). Open lines: interestAccrued + interestRepaid. Closed lines: interestRepaid."},"interestAccrued":{"type":"string","nullable":true,"description":"Interest accrued (raw uint256 — divide by 10^decimals to get human-readable value)"},"interestRepaid":{"type":"string","nullable":true,"description":"Interest repaid (raw uint256 — divide by 10^decimals to get human-readable value)"},"token":{"type":"string","nullable":true,"description":"Token address for this credit line"},"decimals":{"type":"integer","nullable":true,"description":"Token decimals"},"isOpen":{"type":"boolean","nullable":true,"description":"Whether the credit line is open"},"isRestricted":{"type":"boolean","nullable":true,"description":"Whether the credit line is restricted"},"earlyWithdrawalFee":{"type":"string","nullable":true,"description":"Early withdrawal fee in basis points"},"deadline":{"type":"string","format":"date-time","nullable":true,"description":"Credit line deadline"},"drawRate":{"type":"string","nullable":true,"description":"Draw rate in basis points (interest rate on borrowed principal)"},"facilityRate":{"type":"string","nullable":true,"description":"Facility rate in basis points (interest rate on unused deposit)"},"apyPct":{"type":"number","nullable":true,"description":"Computed APY as a percentage (e.g. 5.0 = 5.0%). Weighted average of drawRate on principal and facilityRate on unused deposit."},"createdTxHash":{"type":"string","nullable":true,"description":"Transaction hash of the AddCredit event that created this line"},"createdBlockNumber":{"type":"integer","nullable":true,"description":"Block number when this credit line was created"},"createdAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp when this credit line was created"},"fees":{"type":"object","nullable":true,"description":"Only included when expand=fees is specified. Null if fetching failed.","required":["originationFees"],"properties":{"originationFees":{"type":"string","description":"Total origination fees paid for this credit line (raw uint256 — divide by 10^decimals to get human-readable value)"}}},"error":{"type":"string","nullable":true,"description":"Error message if fetching this credit line failed. Other fields will be null."}}},"VaultCreditLineRelatedAddresses":{"type":"object","required":["facility","facilityOrganizationId"],"properties":{"facility":{"type":"string","nullable":true,"description":"SecuredLine contract address for this credit line"},"facilityOrganizationId":{"type":"string","format":"uuid","nullable":true,"description":"Organization ID of the borrower associated with the facility address. Null if the facility address is not registered."}}},"ErrorResponse":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"statusCode":{"type":"integer"}}}}},"paths":{"/v3/vaults/{id}/credit-lines":{"get":{"operationId":"getVaultCreditLines","summary":"Get vault credit lines","tags":["Vaults"],"description":"Get credit lines for a vault by querying on-chain data from the creditStrategy contract. Authentication is optional but required to view vaults with private organizations. Vaults with public organizations are visible to everyone.","parameters":[{"schema":{"type":"array","style":"form","explode":false,"items":{"type":"string","enum":["related-addresses","fees"]}},"in":"query","name":"expand","required":false,"description":"Comma-separated list of fields to expand. Valid values: \"related-addresses\" (includes relatedAddresses with facility address on each credit line), \"fees\" (includes fees with originationFees on each credit line)."},{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true,"description":"Vault ID. Example: 550e8400-e29b-41d4-a716-446655440000"}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["vaultId","vaultAddress","networkId","creditLines","totals"],"properties":{"vaultId":{"type":"string","format":"uuid","description":"Vault ID"},"vaultAddress":{"type":"string","description":"Vault contract address"},"networkId":{"type":"string","description":"CAIP-2 network identifier"},"creditLines":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/CreditLine"},{"type":"object","properties":{"relatedAddresses":{"nullable":true,"description":"Present when expand=related-addresses","allOf":[{"$ref":"#/components/schemas/VaultCreditLineRelatedAddresses"}]}}}]}},"totals":{"type":"object","required":["deposit","principal","interestAccrued","interestRepaid","interestBalance","decimals"],"description":"Aggregated totals. Values are normalized to the highest decimals across all credit lines. All monetary fields sum across all non-errored lines (open + closed); closed credit lines on-chain can still hold non-zero values.","properties":{"deposit":{"type":"string","description":"Sum across all non-errored credit lines (open + closed) of deposit, normalized to totals.decimals precision"},"principal":{"type":"string","description":"Sum across all non-errored credit lines (open + closed) of principal, normalized to totals.decimals precision"},"interestAccrued":{"type":"string","description":"Sum across all non-errored credit lines (open + closed) of interest accrued, normalized to totals.decimals precision"},"interestRepaid":{"type":"string","description":"Sum across all non-errored credit lines (open + closed) of interest repaid, normalized to totals.decimals precision"},"interestBalance":{"type":"string","description":"Sum across all non-errored credit lines (open + closed) of interest balance, normalized to totals.decimals precision"},"decimals":{"type":"integer","description":"Decimal precision of the totals values"},"depositUsd":{"type":"string","nullable":true,"description":"Sum across all non-errored credit lines (open + closed) of deposit converted to USD. Null if any contributing line lacks a USD price."},"principalUsd":{"type":"string","nullable":true,"description":"Sum across all non-errored credit lines (open + closed) of outstanding principal converted to USD. Null if any contributing line lacks a USD price."},"interestAccruedUsd":{"type":"string","nullable":true,"description":"Sum across all non-errored credit lines (open + closed) of accrued interest converted to USD. Null if any contributing line lacks a USD price."},"interestRepaidUsd":{"type":"string","nullable":true,"description":"Sum across all non-errored credit lines (open + closed) of repaid interest converted to USD. Null if any contributing line lacks a USD price."},"interestBalanceUsd":{"type":"string","nullable":true,"description":"Sum across all non-errored credit lines (open + closed) of interest balance converted to USD. Null if any contributing line lacks a USD price."},"creditLimitUsd":{"type":"string","nullable":true,"description":"Sum across OPEN credit lines only of creditLimit converted to USD. Closed lines are excluded because their creditLimit is the historical authorised credit at close, not an active obligation."}}}}}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Get vault liquid strategy

> Get liquid strategy details for a vault. Authentication is optional but required to view vaults with private organizations. Returns external ERC4626 vault positions with share balances and their underlying asset values.

```json
{"openapi":"3.0.3","info":{"title":"Credit Coop API","version":"3.0.0"},"tags":[{"name":"Vaults","description":"Vault management"}],"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/vaults/{id}/liquid-strategy":{"get":{"operationId":"getVaultLiquidStrategy","summary":"Get vault liquid strategy","tags":["Vaults"],"description":"Get liquid strategy details for a vault. Authentication is optional but required to view vaults with private organizations. Returns external ERC4626 vault positions with share balances and their underlying asset values.","parameters":[{"schema":{"type":"array","style":"form","explode":false,"items":{"type":"string","enum":["apy"]}},"in":"query","name":"expand","required":false,"description":"Comma-separated list of fields to expand. Valid values: \"apy\" (fetches 30-day APY for each external vault from historical convertToAssets snapshots, and a weighted-average APY in totals)."},{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true,"description":"Vault ID. Example: 550e8400-e29b-41d4-a716-446655440000"}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["vaultId","vaultAddress","networkId","liquidStrategyAddress","assetToken","decimals","vaults","totals"],"properties":{"vaultId":{"type":"string","format":"uuid","description":"Vault ID"},"vaultAddress":{"type":"string","description":"Vault contract address"},"networkId":{"type":"string","nullable":true,"description":"CAIP-2 network identifier"},"liquidStrategyAddress":{"type":"string","nullable":true,"description":"Liquid strategy contract address"},"assetToken":{"type":"string","nullable":true,"description":"Underlying asset token address shared by all external vaults"},"decimals":{"type":"integer","nullable":true,"description":"Decimal precision of the underlying asset token. Applies to asset-denominated values: totalAssets, uninvestedAssets, vaultAssets, and assetsValue."},"vaults":{"type":"array","items":{"type":"object","required":["address","shares"],"properties":{"address":{"type":"string","description":"External vault contract address"},"name":{"type":"string","nullable":true,"description":"External vault name"},"symbol":{"type":"string","nullable":true,"description":"External vault token symbol"},"shares":{"type":"string","description":"Share balance held by liquid strategy (raw uint256, use shareDecimals for precision)"},"shareDecimals":{"type":"integer","nullable":true,"description":"Decimal precision of the external vault share token. Applies to shares."},"assetsValue":{"type":"string","nullable":true,"description":"Underlying asset value via previewRedeem (raw uint256, use top-level decimals for precision), null if unavailable"},"apy":{"type":"object","nullable":true,"description":"APY data (only present when expand=apy)","properties":{"apyPct30D":{"type":"number","nullable":true,"description":"30-day annualized APY in percent (e.g. 5.25 = 5.25%)"}}}}}},"totals":{"type":"object","properties":{"totalAssets":{"type":"string","nullable":true,"description":"Total assets managed by liquid strategy (raw uint256, use top-level decimals for precision)"},"uninvestedAssets":{"type":"string","nullable":true,"description":"Uninvested asset tokens held by liquid strategy (raw uint256, use top-level decimals for precision)"},"vaultAssets":{"type":"string","nullable":true,"description":"Sum of assets deployed in external vaults (raw uint256, use top-level decimals for precision)"},"apy":{"type":"object","nullable":true,"description":"Weighted average APY across the entire liquid strategy (only present when expand=apy). The denominator is totalAssets (which includes uninvestedAssets at 0% APY), so the figure reflects the strategy's blended return, not just the invested portion.","properties":{"apyPct30D":{"type":"number","nullable":true,"description":"30-day weighted average annualized APY in percent"}}}}}}}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Check vault whitelist status

> Check if an address is whitelisted on the vault's credit strategy contract (requires authentication)

```json
{"openapi":"3.0.3","info":{"title":"Credit Coop API","version":"3.0.0"},"tags":[{"name":"Vaults","description":"Vault management"}],"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/vaults/{id}/whitelist-check":{"get":{"operationId":"checkVaultWhitelist","summary":"Check vault whitelist status","tags":["Vaults"],"description":"Check if an address is whitelisted on the vault's credit strategy contract (requires authentication)","parameters":[{"schema":{"type":"string","maxLength":255},"in":"query","name":"address","required":true,"description":"The address to check for whitelisting. Example: 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"},{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true,"description":"Vault ID. Example: 550e8400-e29b-41d4-a716-446655440000"}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["vaultId","vaultAddress","networkId","address","isWhitelisted"],"properties":{"vaultId":{"type":"string","format":"uuid","description":"Vault ID"},"vaultAddress":{"type":"string","description":"Vault contract address"},"networkId":{"type":"string","description":"CAIP-2 network identifier"},"address":{"type":"string"},"isWhitelisted":{"type":"boolean"}}}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Get vault pending deposits

> Get pending deposit requests for a vault. Requires a role for the vault's organization.

```json
{"openapi":"3.0.3","info":{"title":"Credit Coop API","version":"3.0.0"},"tags":[{"name":"Vaults","description":"Vault management"}],"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/vaults/{id}/pending-deposits":{"get":{"operationId":"getVaultPendingDeposits","summary":"Get vault pending deposits","tags":["Vaults"],"description":"Get pending deposit requests for a vault. Requires a role for the vault's organization.","parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true,"description":"Vault ID. Example: 550e8400-e29b-41d4-a716-446655440000"}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["vaultId","vaultAddress","networkId","pendingDeposits","decimals"],"properties":{"vaultId":{"type":"string","format":"uuid","description":"Vault ID"},"vaultAddress":{"type":"string","description":"Vault contract address"},"networkId":{"type":"string","description":"CAIP-2 network identifier"},"pendingDeposits":{"type":"array","items":{"type":"object","required":["controller","pendingAssets"],"properties":{"controller":{"type":"string","description":"ERC-7540 controller address — the account that initiated the async deposit/redeem request. May differ from the eventual share owner."},"pendingAssets":{"type":"string"}}}},"decimals":{"type":"integer","nullable":true}}}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Get vault pending redemptions

> Get pending redemption requests for a vault. Requires a role for the vault's organization.

```json
{"openapi":"3.0.3","info":{"title":"Credit Coop API","version":"3.0.0"},"tags":[{"name":"Vaults","description":"Vault management"}],"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/vaults/{id}/pending-redemptions":{"get":{"operationId":"getVaultPendingRedemptions","summary":"Get vault pending redemptions","tags":["Vaults"],"description":"Get pending redemption requests for a vault. Requires a role for the vault's organization.","parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true,"description":"Vault ID. Example: 550e8400-e29b-41d4-a716-446655440000"}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","required":["vaultId","vaultAddress","networkId","pendingRedemptions","decimals"],"properties":{"vaultId":{"type":"string","format":"uuid","description":"Vault ID"},"vaultAddress":{"type":"string","description":"Vault contract address"},"networkId":{"type":"string","description":"CAIP-2 network identifier"},"pendingRedemptions":{"type":"array","items":{"type":"object","required":["controller","pendingShares"],"properties":{"controller":{"type":"string","description":"ERC-7540 controller address — the account that initiated the async deposit/redeem request. May differ from the eventual share owner."},"pendingShares":{"type":"string"}}}},"decimals":{"type":"integer","nullable":true}}}}}},"404":{"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/vaults.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.
