# Table of Contents - [Introduction | Insured Metavaults | OpenCover](#introduction-insured-metavaults-opencover) - [Claims | Insured Metavaults | OpenCover](#claims-insured-metavaults-opencover) - [Covered risks | Insured Metavaults | OpenCover](#covered-risks-insured-metavaults-opencover) - [Overview | Insured Metavaults | OpenCover](#overview-insured-metavaults-opencover) - [Bug bounty | Insured Metavaults | OpenCover](#bug-bounty-insured-metavaults-opencover) - [Metavault creation | Insured Metavaults | OpenCover](#metavault-creation-insured-metavaults-opencover) - [Audits | Insured Metavaults | OpenCover](#audits-insured-metavaults-opencover) - [Metavault lifecycle | Insured Metavaults | OpenCover](#metavault-lifecycle-insured-metavaults-opencover) - [Monitoring | Insured Metavaults | OpenCover](#monitoring-insured-metavaults-opencover) - [Getting started | Insured Metavaults | OpenCover](#getting-started-insured-metavaults-opencover) - [Overview | OpenCover](#overview-opencover) - [Request deposit | Insured Metavaults | OpenCover](#request-deposit-insured-metavaults-opencover) - [Integration types | OpenCover](#integration-types-opencover) - [Getting started | OpenCover](#getting-started-opencover) - [Request redemption | Insured Metavaults | OpenCover](#request-redemption-insured-metavaults-opencover) - [Track deposit status | Insured Metavaults | OpenCover](#track-deposit-status-insured-metavaults-opencover) - [Integration guide | OpenCover](#integration-guide-opencover) - [Quote lifecycle | OpenCover](#quote-lifecycle-opencover) - [Smart contracts | OpenCover](#smart-contracts-opencover) - [Integration parameters | OpenCover](#integration-parameters-opencover) - [Products | OpenCover](#products-opencover) - [API reference | OpenCover](#api-reference-opencover) - [Email Protection | Cloudflare](#email-protection-cloudflare) - [Get a quote | OpenCover](#get-a-quote-opencover) - [Subscribe to notifications | OpenCover](#subscribe-to-notifications-opencover) - [Submit a quote | OpenCover](#submit-a-quote-opencover) - [Track coverage | OpenCover](#track-coverage-opencover) --- # Introduction | Insured Metavaults | OpenCover ![Page cover](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/~gitbook/image?url=https%3A%2F%2F91775999-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FHgV6a19J58nGSdTzSPIq%252Fuploads%252FwiFvY0qZtHOJLDARdmqY%252Fopencover-header.avif%3Falt%3Dmedia%26token%3D910c9594-828d-41c6-a418-86769b66de55&width=1248&dpr=4&quality=100&sign=5ca2e50a&sv=2) OpenCover and Nexus Mutual are joining forces to deliver insured DeFi yield at institutional scale for the first time. Building on the industry’s longest-standing experience in onchain risk transfer and the deepest network of onchain underwriting capital, Insured Metavaults introduce a new primitive that addresses the hardest challenges in onchain insurance, from premium streaming to renewal abstraction. This enables virtually any DeFi vault to become insurable without modifying the associated protocol or primary point of deposit. ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults#user-journey) User journey Metavaults work by wrapping underlying vault shares and binding their market value to a publicly auditable insurance policy backed by onchain capital. The user journey can be summarised as follows: 1. Yield-bearing vault shares (e.g. [Morpho Smokehouse USDCarrow-up-right](https://app.morpho.org/ethereum/vault/0xBEeFFF209270748ddd194831b3fa287a5386f5bC/smokehouse-usdc) ) are deposited to an associated Metavault. 2. Insurance coverage begins once the deposit request settles in the Metavault (typically within 2 Ethereum blocks, about 30 seconds). There is no upfront cost to the user for coverage. 3. Insurance premiums are streamed from the yield accrued in the wrapped vault shares, eliminating the need to manage renewals. Coverage rolls automatically as long as shares remain deposited. 4. Upon withdrawal of the vault shares from the Metavault, coverage ends. ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults#compatibility) Compatibility Insured Metavaults effectively extend protocols by enabling users to add coverage to their positions on demand and can be chained with native deposit and withdrawal actions. Insured Metavaults are compatible with the [ERC‑7540arrow-up-right](https://eips.ethereum.org/EIPS/eip-7540) asynchronous vault standard, enabling smooth integration with all common vault interfaces. ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults#compliant-and-non-custodial) Compliant and non‑custodial Metavaults can be access-controlled and are non‑custodial at all times. Deposits can be subject to integrator whitelists while withdrawals are unconditional, guaranteed and enforced onchain. [NextCovered riskschevron-right](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/insurance/covered-risks) Last updated 1 month ago * [User journey](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults#user-journey) * [Compatibility](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults#compatibility) * [Compliant and non‑custodial](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults#compliant-and-non-custodial) sun-brightdesktopmoon sun-brightdesktopmoon --- # Claims | Insured Metavaults | OpenCover Claims are managed by the Metavault owner (typically OpenCover) using the associated Metavault policy, or policies, bound on Nexus Mutual, with payouts disbursed to the active Metavault depositors (C-token holders). ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/insurance/claims#claim-process) Claim process After a covered incident occurs, a cool-off period is observed to confirm the loss is final and the associated amount. The duration of the cool-off period is specified in the Metavault policy schedule (typically 14 days). The vault owner then submits a claim to Nexus Mutual for assessment and the claim is evaluated by [3-5 specialist claim assessorsarrow-up-right](https://forum.nexusmutual.io/t/nmpip-261-reform-the-claims-mechanism-to-build-trust-upgrade-governance-to-formally-use-an-optimistic-model/1790) . Payouts are made from Nexus Mutual to a designated multisig controlled by the Metavault owner, used to disburse funds to the individual active Metavault depositors affected by the loss (C-token holders). The entire process typically takes five calendar days from claim submission. ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/insurance/claims#recovery) Recovery In line with traditional insurance practices and to discourage fraud, once a claim is paid out, rights over any recoveries associated with the fund loss event, such as a protocol attacker refunding victims, are assigned to Nexus Mutual. [PreviousCovered riskschevron-left](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/insurance/covered-risks) [NextOverviewchevron-right](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/overview) Last updated 3 months ago * [Claim process](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/insurance/claims#claim-process) * [Recovery](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/insurance/claims#recovery) sun-brightdesktopmoon sun-brightdesktopmoon --- # Covered risks | Insured Metavaults | OpenCover Each Metavault is backed by an individual insurance policy tailored to the specific risks of its underlying vault and the desired claims triggers. The policy schedule, detailing the exact covered risks and cover terms, is stored on IPFS and immutably linked onchain as part of the Metavault deployment. This architecture provides unprecedented transparency, auditability and objectivity for both Metavault users and claims assessors. ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/insurance/covered-risks#covered-vault-risks) Covered vault risks In general, Metavault policies follow Nexus Mutual’s [Protocol Coverarrow-up-right](https://api.nexusmutual.io/ipfs/QmQz38DSo6DyrHkRj8uvtGFyx842izVvnx8a3qqF99dctG) standard, proven across $5B+ of risk underwritten and public track record demonstrating full payout of all valid claims. Specifically, Metavaults protects users against: #### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/insurance/covered-risks#smart-contract-risk) Smart contract risk Smart contract vulnerabilities, including bugs, errors, or misconfigurations exploited by an attacker to drain funds from a vault. This includes the full stack of contracts underlying the yield-generating vault, the vault contracts and the Metavault contracts. #### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/insurance/covered-risks#economic-risk) Economic risk Sudden and widespread adverse economic events that are outside normal or intended vault operation due to oracle failure, oracle manipulation, liquidation failure, bad debt or governance takeovers. See example policy for the Morpho Smokehouse USDC Metavault \[link pending\] [PreviousIntroductionchevron-left](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults) [NextClaimschevron-right](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/insurance/claims) Last updated 2 months ago sun-brightdesktopmoon sun-brightdesktopmoon --- # Overview | Insured Metavaults | OpenCover Insured Metavaults are designed to extend the functionality of existing protocols by enabling users to cover deposits to a protocol-owned vault on demand. As such, the primary point of deposit remains the protocol and Metavaults are intended to be integrated into existing frontends with native DeFi connectivity, such as wallets, protocol dApps and portfolio trackers, or be used programmatically in backend workflows. Accordingly, a Metavault user interface is to be customised by the integrator (see reference UI \[link pending\]), with the only requirement that it supports the Insured Metavault lifecycle, including the asynchronous elements from the ERC-7540 Ethereum standard. ![](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/~gitbook/image?url=https%3A%2F%2F91775999-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FHgV6a19J58nGSdTzSPIq%252Fuploads%252FYzflxQT2DMn7MwrOYe6g%252Fmetavaults-preview.png%3Falt%3Dmedia%26token%3D2906dff4-7a79-451f-ab8c-9f21f3cf6342&width=768&dpr=4&quality=100&sign=f3372cf3&sv=2) Insured Metavault reference user interface \[link pending\] [PreviousClaimschevron-left](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/insurance/claims) [NextMetavault lifecyclechevron-right](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/metavault-lifecycle) Last updated 2 months ago sun-brightdesktopmoon sun-brightdesktopmoon --- # Bug bounty | Insured Metavaults | OpenCover OpenCover maintains an active bug bounty programme for Insured Metavaults to incentivise responsible security research. [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/security/bug-bounty#platforms) Platforms ------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/security/bug-bounty#sherlock) Sherlock **Platform link** Link pending hourglass **Reward range** To be confirmed ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/security/bug-bounty#immunefi) Immunefi **Platform link** Link pending hourglass **Reward range** To be confirmed [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/security/bug-bounty#security-contact) Security contact --------------------------------------------------------------------------------------------------------------------------------------------- For responsible disclosure outside the platforms or urgent security matters contact [**\[email protected\]**envelope](https://integrate.opencover.com/cdn-cgi/l/email-protection#a7d4c2c4d2d5ced3dee7c8d7c2c9c4c8d1c2d589c4c8ca98d4d2c5cdc2c4d39a8292e5f4e2e4f2f5eef3fe8292e3829597f5c2d4d7c8c9d4cec5cbc2829597e3ced4c4cbc8d4d2d5c2) (response time within 24 hours). [PreviousMonitoringchevron-left](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/security/monitoring) Last updated 3 months ago * [Platforms](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/security/bug-bounty#platforms) * [Sherlock](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/security/bug-bounty#sherlock) * [Immunefi](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/security/bug-bounty#immunefi) * [Security contact](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/security/bug-bounty#security-contact) sun-brightdesktopmoon sun-brightdesktopmoon --- # Metavault creation | Insured Metavaults | OpenCover ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/metavault-creation#requirements) Requirements Metavaults are designed to be protocol-agnostic and compatible with a wide range of vault standards, such as ERC-4626. The current requirements for the vault being insured are: * ERC-20 compatible vault shares * Transferable vault shares * A `convertToAssets(shares)` function * Non-rebasing or fee-on-transfer vault shares ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/metavault-creation#process) Process Deploying a new Metavault is straightforward with the appropriate expertise. However, it involves several interconnected steps, such as creating, funding, and managing the associated coverage policy, as well as continously settling deposit and withdrawal requests and is therefore initially permissioned. ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/metavault-creation#want-to-deploy-a-metavault) Want to deploy a Metavault? Contact [**\[email protected\]**envelope](https://integrate.opencover.com/cdn-cgi/l/email-protection#4d24233e39243938392422232c210d223d28232e223b283f632e2220723e382f27282e397004233e383f2829687f7d0028392c3b2c382139687f7d21243e3924232a687f7d3f283c38283e39) to request deployment. [PreviousCancel redemption requestchevron-left](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/getting-started/request-redemption/cancel-redemption-request) [NextAuditschevron-right](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/security/audits) Last updated 2 months ago * [Requirements](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/metavault-creation#requirements) * [Process](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/metavault-creation#process) * [Want to deploy a Metavault?](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/metavault-creation#want-to-deploy-a-metavault) sun-brightdesktopmoon sun-brightdesktopmoon --- # Audits | Insured Metavaults | OpenCover All Insured Metavault contract code deployed onchain is third-party audited to independently verify security, functionality and full adherence to the highest industry standards. #### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/security/audits#nethermind) Nethermind **Status** check Completed ([Reportarrow-up-right](https://cdn2.opencover.com/NM_0674_Open_Cover_847b6b94e1.pdf) ) **Timeline** 24 November 2025 → 5 December 2025 **Scope** Full protocol audit including core Metavault contracts, premium streaming mechanisms, vault invariants and edge cases. **Findings** **0 Critical, 0 High, 0 Medium, 2 Low**, 5 Info, 2 Best Practices **Remediation** All findings were resolved and all best practice recommendations were implemented. ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/security/audits#scheduled-audits) Scheduled audits #### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/security/audits#sherlock-audit-contest) Sherlock (Audit Contest) **Status** shield-check Scheduled **Timeline** 19 January 2026 → 23 January 2026 **Scope** Competitive protocol audit with focus on vault accounting, technical and economic attacks and edge cases. [PreviousMetavault creationchevron-left](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/metavault-creation) [NextMonitoringchevron-right](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/security/monitoring) Last updated 5 days ago sun-brightdesktopmoon sun-brightdesktopmoon --- # Metavault lifecycle | Insured Metavaults | OpenCover ![](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/~gitbook/image?url=https%3A%2F%2F91775999-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FHgV6a19J58nGSdTzSPIq%252Fuploads%252FEmJlh8wB5IOGRp6L0dCG%252FInsured%2520Metavault%2520Lifecycle%2520%25235.drawio.svg%3Falt%3Dmedia%26token%3D802c47d4-0fe9-4c81-b95d-72896e7f13d4&width=768&dpr=4&quality=100&sign=8d9d5041&sv=2) Metavault example for Smokehouse USDC on Morpho #### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/metavault-lifecycle#deposit) Deposit 1. User deposits an asset (e.g. **USDC**) into a supported vault (e.g. [Morpho Smokehouse USDCarrow-up-right](https://app.morpho.org/ethereum/vault/0xBEeFFF209270748ddd194831b3fa287a5386f5bC/smokehouse-usdc) ) to mint and receive vault shares (e.g. **bbqUSDC**). 2. User submits a _deposit request_ to a Metavault configured to cover the relevant vault shares (e.g. **bbqUSDC**) 1. The request is recorded and the vault shares are held by the Metavault pending settlement. 2. This request can be _cancelled_ by the user at any time before settlement to withdraw the vault shares pending settlement. 3. The deposit request is typically settled within 2 Ethereum blocks (<30 seconds). On settlement, insurance coverage becomes active and the Metavault issues covered shares (**C-bbqUSDC**) to the user. 4. Yield continues accruing in the underlying vault. The insurance premium is streamed from accrued yield for as long as cover remains active. #### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/metavault-lifecycle#withdrawal) Withdrawal 1. User submits a _redemption request_ by providing covered shares (**C-bbqUSDC**) to the Metavault. 1. The request is recorded, shares are locked pending settlement and continue to be insured. 2. The user can _cancel_ the redemption request any time before settlement. 2. On redemption settlement, coverage ceases for the redeemed vault shares (**bbqUSDC**), which become available to withdraw (ERC-7540 native flow) or can be pushed to the user's wallet depending on desired user experience (OpenCover extended ERC-7540 standard). 3. In the unlikely event the redemption request does not settle, the onchain exit guarantee allows the user to claim their vault shares (**bbqUSDC**) 24 hours from request creation. [PreviousOverviewchevron-left](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/overview) [NextGetting startedchevron-right](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/getting-started) Last updated 2 months ago sun-brightdesktopmoon sun-brightdesktopmoon --- # Monitoring | Insured Metavaults | OpenCover Insured Metavaults implement continuous monitoring and a circuit breaker mechanism. The Metavault's **Guardian** role serves as the last line of defense, with the authority to pause vault operations in the unlikely event that a vulnerability goes undetected during audit. [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/security/monitoring#what-we-monitor) What we monitor ------------------------------------------------------------------------------------------------------------------------------------------- 🏦 Metavault health ⌛ Request queues 🤝 Governance changes The system tracks core vault metrics and invariants in real-time: * Sudden changes in Metavault assets (TVL); * Share price movements and exchange rate stability; * Premium streaming activity and collection rates; * Pending deposit and redemption queue sizes. Anomalies trigger automatic alerts when thresholds are breached, such as TVL drops exceeding 20% or share price movements beyond expected volatility bands. Asynchronous deposit and redemption requests are monitored for: * Unusual surge patterns that may indicate malicious attempts to grief the vault; * Settlement delays beyond business-as-usual operations. The system maintains liveness guarantees, ensuring pending requests are processed within defined timeframes. All privileged operations generate immediate alerts: * Role assignments and revocations; * Premium rate adjustments; * Pause and unpause events. ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/security/monitoring#circuit-breaker) Circuit breaker The **Guardian** can trigger an emergency pause when monitoring detects: * Potential exploit patterns or abnormal contract interactions; * Unauthorised administrative changes; * Critical invariant violations; * Settlement mechanism failures. Once paused, operations resume only after the issue is resolved and validated through simulation testing. [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/security/monitoring#operations) Operations --------------------------------------------------------------------------------------------------------------------------------- The vault maintains strict separation of concerns: alongside the Guardian, other roles include the **Keeper** (settlement operations), **Manager** (premium configuration) and **Owner** (upgrades). The Guardian is exclusively permissioned to pause and unpause the vault, ensuring independent risk assessment. The **Guardian** role is held by a secure multisig with defined procedures: * 24/7 on-call rotation with hardware wallet signers; * Pre-approved emergency response playbooks and drill exercises to maintain readiness; * Post-incident reviews to improve response protocols. [PreviousAuditschevron-left](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/security/audits) [NextBug bountychevron-right](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/security/bug-bounty) Last updated 3 months ago * [What we monitor](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/security/monitoring#what-we-monitor) * [Circuit breaker](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/security/monitoring#circuit-breaker) * [Operations](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/security/monitoring#operations) sun-brightdesktopmoon sun-brightdesktopmoon --- # Getting started | Insured Metavaults | OpenCover Insured Metavaults provide onchain integration on Ethereum (more chains coming soon), enabling integrators to offer native covered yield by depositing yield‑bearing vault shares. Coverage starts automatically at settlement, with premiums streaming from accrued yield. [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/getting-started#integration-overview) Integration overview ------------------------------------------------------------------------------------------------------------------------------------------------------------- circle-info The contract supports ERC‑7540's two-step asynchronous lifecycle for deposits and withdrawals, as well as extended single-transaction deposit/withdrawal flows, both preserving non‑custodial ownership. In both cases, coverage activates at deposit settlement and detaches at redemption settlement. As an example case, we cover Steakhouse Financial's [Smokehouse USDC Morpho vaultarrow-up-right](https://app.morpho.org/ethereum/vault/0xBEeFFF209270748ddd194831b3fa287a5386f5bC/smokehouse-usdc) and assume the user already holds **bbqUSDC** shares that they wish to insure through the Metavault. ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/getting-started#deposit-flow) Deposit flow To start earning insured yield, the user deposits vault shares from the yield-vault (**bbqUSDC** in case of Morpho Smokehouse USDC) into the Insured Metavault. 1 #### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/getting-started#submit-a-deposit-request) Submit a deposit request * Create a transaction calling the `requestDeposit(asset, controller, owner)` function on the Metavault contract to create a deposit request. * Use `pendingDepositRequest(requestId, controller)` to fetch assets pending coverage. * Requests can be cancelled any time before settlement. Copy // Request to deposit 10,000 bbqUSDC. metavault.requestDeposit(10_000e18, msg.sender, msg.sender); // Fetch assets pending coverage. uint256 assetsPending = metavault.pendingDepositRequest(0, msg.sender); 2 #### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/getting-started#settlement-and-coverage-activation) Settlement & coverage activation * Requests are batch‑settled typically within 2 Ethereum blocks (<30 seconds). * On settlement, the deposit either becomes claimable (users can mint covered Metavault shares, e.g. **C-bbqUSDC**) or Metavault shares are directly pushed to the user wallet (integrator preference). In either case, coverage activates for the settled amount. * Coverage auto-renews while shares remain in the Metavault. Copy // Get covered assets for which Metavault shares can be minted. uint256 assetsClaimable = metavault.claimableDepositRequest(0, msg.sender); 3 #### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/getting-started#mint-covered-metavault-shares) Mint covered Metavault shares * Create a transaction calling either the `deposit(assets, receiver, controller)` or `mint(shares, receiver, controller)` functions of the Metavault following [ERC-4626 semanticsarrow-up-right](https://ethereum.org/developers/docs/standards/tokens/erc-4626/#deposit) . * The user receives **C-bbqUSDC** shares (covered **bbqUSDC**), a standard ERC-20 token representing their insured position. Copy // Mint C-bbqUSDC Metavault shares for the bbqUSDC deposit. metavault.deposit(assetsClaimable, msg.sender, msg.sender); ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/getting-started#withdrawal-flow) Withdrawal flow When leaving the Metavault, the user redeems **C-bbqUSDC** for **bbqUSDC**. 1 #### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/getting-started#submit-a-redemption-request) **Submit a redemption request** * Call `requestRedeem(shares, controller, owner)` with shares specified in covered Metavault shares (e.g. **C-bbqUSDC**). * The Metavault records the request and locks the shares. * Use `pendingRedeemRequest(requestId, controller)` to fetch shares pending redemption. * Requests can be cancelled any time before settlement. Copy // Redeem all covered shares (C-bbqUSDC) for the deposited asset (bbqUSDC). uint256 shares = metavault.balanceOf(msg.sender); uint256 reqId = metavault.requestRedeem(shares, msg.sender, msg.sender); 2 #### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/getting-started#settlement-and-coverage-end) Settlement & coverage end * Pending withdrawal requests settle in FIFO order. * On settlement, coverage ends for the redeemed portion and the corresponding **bbqUSDC** becomes claimable or can be directly pushed to the user wallet (integrator preference). Copy // After settlement, the redeemed shares become claimable. uint256 sharesClaimable = metavault.claimableRedeemRequest(reqId, msg.sender); * Withdrawal requests typically settle within 2 Ethereum blocks (<30 seconds), pending incoming deposits and underlying policy expiry. * If not settled within 24 hours, the onchain exit guarantee enables the user to withdraw **bbqUSDC** permissionlessly. Copy // After 28 days, redemption requests can be user-settled. metavault.settleMaturedRedemption(reqId); 3 #### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/getting-started#receive-yield-vault-shares) **Receive yield-vault shares** * Call either `redeem(shares, receiver, controller)` or `withdraw(assets, receiver, controller)` to burn **C-bbqUSDC** and receive **bbqUSDC**. Copy metavault.redeem(sharesClaimable, msg.sender, msg.sender); * _Optional:_ Redeem **bbqUSDC** for **USDC** directly at the underlying Morpho vault. [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/getting-started#full-integration-example) Full integration example --------------------------------------------------------------------------------------------------------------------------------------------------------------------- Copy ICoveredMetavault metavault = ICoveredMetavault(0x...); // Address TBC. IERC4626 bbqUSDC = IERC4626(0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB); // 1. Approve the Metavault. bbqUSDC.approve(address(metavault), 10_000e18); // 2. Request to deposit 10,000 bbqUSDC. metavault.requestDeposit(10_000e18, msg.sender, msg.sender); // 3. Wait for settlement (typically within 2 blocks) then check claimable assets. uint256 assetsClaimable = metavault.claimableDepositRequest(0, msg.sender); // 4. Mint covered shares (C-bbqUSDC); // or, if preferred, shares can be pushed as part of settlement. metavault.deposit(assetsClaimable, msg.sender, msg.sender); // ... Time passes, user earns insured yield ... // 5. Get covered metavault share balance of user (C-bbqUSDC). uint256 sharesCovered = metavault.balanceOf(msg.sender); // 6. Request redemption of covered shares. uint256 reqId = metavault.requestRedeem(sharesCovered, msg.sender, msg.sender); // 7. Wait for settlement then check claimable shares. uint256 sharesClaimable = metavault.claimableRedeemRequest(reqId, msg.sender); // 8. Redeem metavault shares (C-bbqUSDC) for yield-vault shares (bbqUSDC). // or, if preferred, yield-vault shares can be pushed as part of settlement. metavault.redeem(sharesClaimable, msg.sender, msg.sender); The next pages provide details for each step with code examples. [PreviousMetavault lifecyclechevron-left](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/metavault-lifecycle) [NextRequest depositchevron-right](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/getting-started/request-deposit) Last updated 2 months ago * [Integration overview](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/getting-started#integration-overview) * [Deposit flow](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/getting-started#deposit-flow) * [Withdrawal flow](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/getting-started#withdrawal-flow) * [Full integration example](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/getting-started#full-integration-example) sun-brightdesktopmoon sun-brightdesktopmoon --- # Overview | OpenCover ![Page cover](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/~gitbook/image?url=https%3A%2F%2F3081764263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FZvDdRmUbyRLTVS67Kvt6%252Fuploads%252Fgit-blob-9beff2080b613ac3465703625d6c08eda3c77a39%252Fcover.png%3Falt%3Dmedia&width=1248&dpr=4&quality=100&sign=de3263fb&sv=2) circle-info **API access is currently only available to vetted integrators** You can request access by contacting [\[email protected\]envelope](https://integrate.opencover.com/cdn-cgi/l/email-protection#a0c9ced3d4c9d4d5d4c9cfcec1cce0cfd0c5cec3cfd6c5d28ec3cfcd) Protocol Cover makes it easy and affordable to protect your users against key onchain risks such as smart contract hacks, oracle manipulation and depegs. Policies are backed by leading underwriters and available for 100+ protocols and assets with claims managed end-to-end by OpenCover. This guide details how to integrate OpenCover Protocol Cover capabilities into your platform. There are two types of integration: 1. [**Native integration**](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/integration-types#native-integration) **:** Embed the entire cover purchasing flow within your platform's user interface using OpenCover APIs and smart contracts for total control over user experience. 2. [**Linkout integration**](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/integration-types#linkout-integration) **:** Redirect users from your platform to a hosted, customizable OpenCover dApp with pre-filled data to complete their cover purchase. [NextIntegration typeschevron-right](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/integration-types) Last updated 8 months ago sun-brightdesktopmoon sun-brightdesktopmoon --- # Request deposit | Insured Metavaults | OpenCover _Coming soon!_ [PreviousGetting startedchevron-left](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/getting-started) [NextCancel deposit requestschevron-right](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/getting-started/request-deposit/cancel-deposit-requests) Last updated 3 months ago sun-brightdesktopmoon sun-brightdesktopmoon --- # Integration types | OpenCover [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/integration-types#native-integration) Native integration ---------------------------------------------------------------------------------------------------------------------------- circle-check Best for platforms seeking to own and customize user experience end-to-end. Embed the entire cover purchase flow directly within your platform's interface. Users complete all steps, from getting a quote to purchasing coverage within your platform. #### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/integration-types#benefits) ✅ Benefits * Programmatic cover purchases to suit any business logic. * Keep users within your platform with full control over UX. * Ability to customize proof-of-cover NFTs. #### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/integration-types#integration-examples) ⚡️ Integration examples 1. Coinbase leverages a native OpenCover integration to deliver coverage across leading protocols on Base with branded proof-of-cover NFTs showcasing the [Coinbase Onearrow-up-right](https://www.coinbase.com/one?onchain_referrer=opencover&referrer=onchain_partner_opencover&promo=onchain) identity. ![](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/~gitbook/image?url=https%3A%2F%2F3081764263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FZvDdRmUbyRLTVS67Kvt6%252Fuploads%252Fgit-blob-37fd59001e4d5d7ab751168ccb0e8df09e348a31%252Fopencover-coinbase-one-onchain-benefits%2520%281%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=611571d1&sv=2) Coinbase One branded proof-of-cover NFT [on OpenSeaarrow-up-right](https://opensea.io/item/base/0xd68647555e5da198d50866334eed647cbe3d1556/1315) 1. [vfatarrow-up-right](https://vfat.io/) integrates OpenCover directly into its deposit flow, making it effortless for users to protect their LP positions and earn onchain yield with peace of mind. ![](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/~gitbook/image?url=https%3A%2F%2F3081764263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FZvDdRmUbyRLTVS67Kvt6%252Fuploads%252Fgit-blob-d31e2301fae151f79224f68a7fa5e2a3b3eafa66%252Fopencover-vfat-integration.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=ae4968f8&sv=2) Embedded cover purchase flow [on vfatarrow-up-right](https://vfat.io/yield) [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/integration-types#linkout-integration) Linkout integration ------------------------------------------------------------------------------------------------------------------------------ circle-check Best for platforms looking to offer cover with minimal technical investment. Redirect users from your platform to a hosted, customizable OpenCover dApp to complete their cover purchase flow using a parameterized link. #### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/integration-types#benefits-1) ✅ **Benefits** * No API integration required. * Hosted and maintained by OpenCover. * Quick and easy to deploy. #### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/integration-types#example-integration) ⚡️ Example integration 1. [Beefyarrow-up-right](https://app.beefy.finance/) uses a linkout integration on their vault pages, enabling users to access a custom cover purchase dApp hosted by OpenCover with a single click. 2. [ExtraFiarrow-up-right](https://extrafi.io/) uses a linkout integration in their main navigation menu, enabling users to quickly access a tailored purchase dApp hosted by OpenCover. ![](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/~gitbook/image?url=https%3A%2F%2F3081764263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FZvDdRmUbyRLTVS67Kvt6%252Fuploads%252Fgit-blob-143fbe8c46b077b2992d4641a61b5c8571b684ac%252Fbeefy-linkout-integration.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=4a1fe552&sv=2) Linkout element on a [Beefy vault pagearrow-up-right](https://app.beefy.com/vault/morpho-seamless-usdc) ![](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/~gitbook/image?url=https%3A%2F%2F3081764263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FZvDdRmUbyRLTVS67Kvt6%252Fuploads%252Fgit-blob-7fc4ecd9aba14d95dac0ccf94ce4e61e06e57314%252Fextra-fi-opencover.jpg%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=cf02a9f2&sv=2) Linkout element on the [Extrafi landing pagearrow-up-right](https://extrafi.io/) [PreviousOverviewchevron-left](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK) [NextGetting startedchevron-right](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/getting-started) Last updated 8 months ago * [Native integration](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/integration-types#native-integration) * [Linkout integration](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/integration-types#linkout-integration) sun-brightdesktopmoon sun-brightdesktopmoon --- # Getting started | OpenCover A native integration enables you to embed the entire cover purchase flow directly within your platform's interface. Users complete all steps, from getting a quote to purchasing coverage within your platform. [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/getting-started#integration-overview) Integration overview ------------------------------------------------------------------------------------------------------------------------------------------------- circle-info Native integration is supported on the following chains: **Ethereum**, **Base**, **Arbitrum**, **Optimism**, **Polygon**. 1 [**Get a quote via API**](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/get-a-quote) * Request premium options for cover on a specific [product](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/resources/products) (protocol, asset or ecosystem) given an amount and duration using the OpenCover API. * The API response will include cryptographically signed quotes in all supported currencies (e.g. USDC, cbBTC, ETH). These signed quotes are required for the onchain submission step. 2 [**Submit selected quote onchain**](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/submit-a-quote) **Approve token transfer (if applicable)** * If the premium is to be paid using an ERC20 token (like USDC or cbBTC), the user must first execute an approve transaction. This grants the OpenCover Quote contract permission to collect the premium amount from their wallet. **Submit the quote:** * The user submits the signed quote to the OpenCover Quote contract. This transaction executes the purchase and transfers the approved ERC20 premium (if applicable). * See [an example transactionarrow-up-right](https://basescan.org/tx/0xe90b7fd3298005d37719c57c7b969b2ede7cac4c8e99a7366946b53aef2c6eb7) on Base. * Submitted quotes are fulfilled by OpenCover within 24 hours. For more details, please see our [Quote lifecycle](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/resources/quote-lifecycle) page. 3 [**Track coverage status**](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/track-coverage) Show users their cover purchase history and active coverage in real-time via OpenCover's easy-to-use API. 4 [**Enable cover notifications via API**](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/subscribe-to-notifications) **(optional)** Offer users the ability to receive email notifications when their cover becomes active or is about to expire. The next pages will guide you through each step with code examples. [PreviousIntegration typeschevron-left](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/integration-types) [NextIntegration guidechevron-right](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide) Last updated 2 months ago sun-brightdesktopmoon sun-brightdesktopmoon --- # Request redemption | Insured Metavaults | OpenCover _Coming soon!_ [PreviousTrack deposit statuschevron-left](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/getting-started/track-deposit-status) [NextCancel redemption requestchevron-right](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/getting-started/request-redemption/cancel-redemption-request) Last updated 3 months ago sun-brightdesktopmoon sun-brightdesktopmoon --- # Track deposit status | Insured Metavaults | OpenCover _Coming soon!_ [PreviousCancel deposit requestschevron-left](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/getting-started/request-deposit/cancel-deposit-requests) [NextRequest redemptionchevron-right](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/insured-metavaults/integration/getting-started/request-redemption) Last updated 3 months ago sun-brightdesktopmoon sun-brightdesktopmoon --- # Integration guide | OpenCover [circle-1Get a quotechevron-right](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/get-a-quote) [circle-2Submit a quotechevron-right](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/submit-a-quote) [circle-3Track coveragechevron-right](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/track-coverage) [circle-4Subscribe to notificationschevron-right](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/subscribe-to-notifications) [PreviousGetting startedchevron-left](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/getting-started) [NextGet a quotechevron-right](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/get-a-quote) Last updated 9 months ago sun-brightdesktopmoon sun-brightdesktopmoon --- # Quote lifecycle | OpenCover This page outlines the stages of a cover purchase from quote submission to activation (settlement) and expiry. Onchain cover status is dynamically updated, enabling you to monitor user coverage in real-time. [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/resources/quote-lifecycle#overview) Overview ---------------------------------------------------------------------------------------------------------------- ![](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/~gitbook/image?url=https%3A%2F%2F3081764263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FZvDdRmUbyRLTVS67Kvt6%252Fuploads%252Fgit-blob-c13d3332904d1ca21f5b13a8549be91dd6713a86%252Fquote-awaiting-fulfillment.svg%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=427bcf3c&sv=2) Cover pending (quote awaiting settlement) ![](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/~gitbook/image?url=https%3A%2F%2F3081764263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FZvDdRmUbyRLTVS67Kvt6%252Fuploads%252Fgit-blob-51007ec514289f163bc737be1fc68b7981fc28f3%252Fquote-cover-active.svg%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=ff411cd5&sv=2) Cover active ![](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/~gitbook/image?url=https%3A%2F%2F3081764263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FZvDdRmUbyRLTVS67Kvt6%252Fuploads%252Fgit-blob-b9696c918bfe9d579820ea3ea9bea6c389bd5e6d%252Fquote-cover-expired.svg%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=71368ae5&sv=2) Cover expired 1 #### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/resources/quote-lifecycle#cover-pending) Cover pending A quote has been successfully submitted onchain and is awaiting settlement. Quotes are settled by OpenCover **within 24 hours** (usually much less). 2 #### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/resources/quote-lifecycle#cover-active) Cover active Once the quote is settled, the coverage starts and the user is protected against the specified risks. 3 #### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/resources/quote-lifecycle#cover-expired) Cover expired The end state for a settled quote after the coverage period ends. ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/resources/quote-lifecycle#refunds) Refunds To ensure that OpenCover remains non-custodial, unsettled quotes (**Cover pending**) are refundable after 24 hours. This can be triggered permissionlessly by the wallet that submitted the quote by calling the [`refundUnfulfilledQuote()`arrow-up-right](https://github.com/OpenCoverDeFi/opencover-contracts-v1/blob/main/contracts/interface/IQuote.sol#L160) function on the associated [_Quote_ contract](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/resources/contracts) . [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/resources/quote-lifecycle#full-lifecycle) Full lifecycle ---------------------------------------------------------------------------------------------------------------------------- The diagram below illustrates the full lifecycle of a quote showing each state and the possible transitions between them. ![](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/~gitbook/image?url=https%3A%2F%2F3081764263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FZvDdRmUbyRLTVS67Kvt6%252Fuploads%252Fgit-blob-6559c90c6baa4c0dba33e8491b1ee7fd1a28b75b%252FB2C%2520quote%2520lifecycle-V1.drawio%2520%285%29.svg%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=96e037b7&sv=2) [PreviousIntegration parameterschevron-left](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/linkout-integration/integration-parameters) [NextSmart contractschevron-right](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/resources/contracts) Last updated 8 months ago * [Overview](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/resources/quote-lifecycle#overview) * [Refunds](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/resources/quote-lifecycle#refunds) * [Full lifecycle](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/resources/quote-lifecycle#full-lifecycle) sun-brightdesktopmoon sun-brightdesktopmoon --- # Smart contracts | OpenCover OpenCover's smart contracts are open-source. You can review the code in the official repository: [![Logo](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/~gitbook/image?url=https%3A%2F%2Fgithub.com%2Ffluidicon.png&width=20&dpr=4&quality=100&sign=6f519f70&sv=2)GitHub - OpenCoverDeFi/opencover-contracts-v1: 📝 Smart Contracts that make up the core of the OpenCover DAppGitHubchevron-right](https://github.com/OpenCoverDeFi/opencover-contracts-v1) ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/resources/contracts#contract-deployments) Contract deployments The following addresses are for the OpenCover _Quote_ contract, which is used to submit quotes onchain. Chain Address **Ethereum** [`0x789d89eBb2A882343044830A9d4d072737FFEC92`arrow-up-right](https://etherscan.io/address/0x789d89ebb2a882343044830a9d4d072737ffec92) **Base** [`0xD68647555e5da198d50866334EEd647cbE3d1556`arrow-up-right](https://basescan.org/address/0xD68647555e5da198d50866334EEd647cbE3d1556) **Arbitrum** [`0x0AC34fe133BdE3A2eF589a18A4E10b6a7d253829`arrow-up-right](https://arbiscan.io/address/0x0AC34fe133BdE3A2eF589a18A4E10b6a7d253829) **Optimism** [`0x0AC34fe133BdE3A2eF589a18A4E10b6a7d253829`arrow-up-right](https://optimistic.etherscan.io/address/0x0AC34fe133BdE3A2eF589a18A4E10b6a7d253829) **Polygon** [`0x0AC34fe133BdE3A2eF589a18A4E10b6a7d253829`arrow-up-right](https://polygonscan.com/address/0x0AC34fe133BdE3A2eF589a18A4E10b6a7d253829) The ABI for the latest deployed _Quote_ contract implementation is provided below. file-download 38KB [QuoteAbi.json](https://3081764263-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZvDdRmUbyRLTVS67Kvt6%2Fuploads%2Fgit-blob-597e3d18a10b26a83367b8faa08fa28ab16273dd%2FQuoteAbi.json?alt=media) downloadDownload[arrow-up-right-from-squareOpen](https://3081764263-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZvDdRmUbyRLTVS67Kvt6%2Fuploads%2Fgit-blob-597e3d18a10b26a83367b8faa08fa28ab16273dd%2FQuoteAbi.json?alt=media) [PreviousQuote lifecyclechevron-left](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/resources/quote-lifecycle) [NextProductschevron-right](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/resources/products) Last updated 2 months ago sun-brightdesktopmoon sun-brightdesktopmoon --- # Integration parameters | OpenCover These parameters allow you to pre-fill product selections, amounts, currencies and more, making integrations and deep links seamless. ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/linkout-integration/integration-parameters#examples) Examples Prefill a quote for **1,000 USDC** coverage on **Aave v3** for **60** days: [https://opencover.com/app/?invite=docs&**amount=1000**&**currency=USDC**&**cover=97**&**duration=60**arrow-up-right](https://opencover.com/app/?invite=docs&amount=1000¤cy=USDC&cover=97&duration=60) ![](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/~gitbook/image?url=https%3A%2F%2F3081764263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FZvDdRmUbyRLTVS67Kvt6%252Fuploads%252Fgit-blob-034418c824e1f8ac477170cf07007c573e442a23%252FPrefill%2520quote.png%3Falt%3Dmedia&width=300&dpr=4&quality=100&sign=a8ca024b&sv=2) Generate a **quote** for **2 ETH** coverage on **Hyperliquid** for **90** days: [https://opencover.com/app/?invite=docs&**screen=quote**&**amount=2**&**currency=ETH**&**cover=130**&**duration=90**arrow-up-right](https://opencover.com/app/?invite=docs&screen=quote&amount=2¤cy=ETH&cover=130&duration=90) ![](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/~gitbook/image?url=https%3A%2F%2F3081764263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FZvDdRmUbyRLTVS67Kvt6%252Fuploads%252Fgit-blob-ed8bf62b8a2881ce9e711999453a3dc9aa60dcc3%252FQuote%2520auto-fetched.png%3Falt%3Dmedia&width=300&dpr=4&quality=100&sign=d1e44599&sv=2) Generate a **quote** for **0.5 cbBTC** coverage on **Compound v3** for **45** days, attributed to integrator with ID **1000**: [https://opencover.com/app/?invite=docs&&**amount=0.5**&**currency=cbBTC**&**cover=118**&**duration=45**&**integrator=1000**arrow-up-right](https://opencover.com/app/?invite=docs&screen=quote&amount=0.5¤cy=cbBTC&cover=118&duration=45&integrator=1000) ![](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/~gitbook/image?url=https%3A%2F%2F3081764263-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FZvDdRmUbyRLTVS67Kvt6%252Fuploads%252Fgit-blob-5835933051b37744ddf3b5a7ca0dfce1e1a49bb8%252FQuote%2520with%2520integrator.png%3Falt%3Dmedia&width=300&dpr=4&quality=100&sign=38c7a65e&sv=2) ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/linkout-integration/integration-parameters#query-parameters) Query parameters * `cover` * Product to cover. * **Allowed values:** [See available products](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/resources/products) . * **Example:** [https://opencover.com/app/?**cover=97**arrow-up-right](https://opencover.com/app/?cover=97) * `amount` * Amount of protection. Must be used with a valid `currency`. * **Allowed values:** Any positive amount. * **Example:** [https://opencover.com/app/?**amount=1000**¤cy=USDCarrow-up-right](https://opencover.com/app/?amount=1000¤cy=USDC) * `currency` _(default: USDC)_ * Currency for the protection amount. * **Allowed values**: `USDC`, `ETH`, `cbBTC` * **Example:** [https://opencover.com/app/?**currency=cbBTC**arrow-up-right](https://opencover.com/app/?currency=cbBTC) * `duration` _(default: 30)_ * Duration of the coverage in days. * **Allowed values:** Any number from 30 to 180. * **Example:** [https://opencover.com/app/?**duration=60**arrow-up-right](https://opencover.com/app/?duration=60) * `coveredAddresses` _(default: not set)_ * List of wallet addresses to prefill as covered wallets. * **Allowed values:** Up to 20 valid wallet addresses (EVM-compatible), comma-separated. [Contact usarrow-up-right](https://airtable.com/appm7CYnxTomwS4Kg/shrkpntNzvkMC4tJz) to cover larger custom portfolios. * **Example:** [https://opencover.com/basepass/?**coveredAddresses=0x742d35Cc6634C0532925a3b844Bc454e4438f44e,0x53d284357ec70cE289D6D64134DfAc8E511c8a3D**arrow-up-right](https://opencover.com/basepass/?coveredAddresses=0x742d35Cc6634C0532925a3b844Bc454e4438f44e,0x53d284357ec70cE289D6D64134DfAc8E511c8a3D) * **Note:** This parameter applies **only** to [Ecosystem products](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/resources/products#ecosystem-cover) that require covered wallets to be specified. It will have no effect if used on [Non-Ecosystem products](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/resources/products#protocol-cover) as all wallets are covered in other products. * `screen` _(default: main)_ * Auto-fetch a quote when set to `quote`. Requires `cover`, `amount`, and `currency` to be set. * **Allowed values:** `main`, `quote` * **Example:** [https://opencover.com/app/?cover=211&amount=1000¤cy=USDC&**screen=quote**arrow-up-right](https://opencover.com/app/?cover=211&amount=1000¤cy=USDC&screen=quote) * `invite` _(default: direct)_ * Referrer invite code unique to the integrator. * **Allowed values:** [Contact usarrow-up-right](https://airtable.com/appm7CYnxTomwS4Kg/shrkpntNzvkMC4tJz) to receive yours. * **Example:** [https://opencover.com/app/?**invite=my-custom-code**arrow-up-right](https://opencover.com/app/?invite=my-custom-code) * `integrator` _(default: 0 aka OpenCover)_ * Identifier for the integrator. * **Allowed values:** Unique integrator ID. [Contact usarrow-up-right](https://airtable.com/appm7CYnxTomwS4Kg/shrkpntNzvkMC4tJz) to receive yours. * **Example:** [https://opencover.com/app/?**integrator=1337**arrow-up-right](https://opencover.com/app/?integrator=1337) * `network` _(default: 8453 aka_ _**Base**__)_ * The chain the user will be prompted to connect. * **Allowed values:** * `8453` **Base** * `10` **Optimism** * `42161` **Arbitrum** * `137` **Polygon** * **Example:** [https://opencover.com/app/?**network=137**arrow-up-right](https://opencover.com/app/?network=137) [PreviousAPI referencechevron-left](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints) [NextQuote lifecyclechevron-right](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/resources/quote-lifecycle) Last updated 8 months ago * [Examples](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/linkout-integration/integration-parameters#examples) * [Query parameters](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/linkout-integration/integration-parameters#query-parameters) sun-brightdesktopmoon sun-brightdesktopmoon --- # Products | OpenCover ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/resources/products#available-products) Available products Protocol cover Depeg cover Custody cover Ecosystem cover * The **regular protocol cover** provides protection against losses due to protocol failures like smart contract bugs, oracle manipulation, and governance failures and it focuses only on the primary protocol. Details: [Protocol Coverarrow-up-right](https://opencover.com/protocol-cover-nexus-mutual-covered-risks-and-exclusions/) * The **multi-protocol bundled cover** \[MULTI-PROTOCOL\] extends protection to both the primary protocol and any supported sub-protocols it relies on, such as third-party protocols used for yield generation. It covers similar risks but across multiple protocols that are part of a bundled setup. Details: [Multi-Protocol Bundled Coverarrow-up-right](https://opencover.com/multi-protocol-bundled-cover-covered-risks-and-exclusions/) . Name ID [Aerodromearrow-up-right](https://opencover.com/app/?invite=docs&cover=129) 129 [Beefyarrow-up-right](https://opencover.com/app/?invite=docs&cover=211) \[MULTI-PROTOCOL\] 211 [Hyperliquidarrow-up-right](https://opencover.com/app/?invite=docs&cover=130) 130 [Morphoarrow-up-right](https://opencover.com/app/?invite=docs&cover=229) 229 [Superformarrow-up-right](https://opencover.com/app/?invite=docs&cover=331) \[MULTI-PROTOCOL\] 331 [vfatarrow-up-right](https://opencover.com/app/?invite=docs&cover=269) \[MULTI-PROTOCOL\] 269 [Pendlearrow-up-right](https://opencover.com/app/?invite=docs&cover=128) 128 [1incharrow-up-right](https://opencover.com/app/?invite=docs&cover=1) 1 [40 Acresarrow-up-right](https://opencover.com/app/?invite=docs&cover=329) \[MULTI-PROTOCOL\] 329 [Aave Umbrella Slashingarrow-up-right](https://opencover.com/app/?invite=docs&cover=309) 309 [Aave v3arrow-up-right](https://opencover.com/app/?invite=docs&cover=97) 97 [Aegisarrow-up-right](https://opencover.com/app/?invite=docs&cover=357) \[MULTI-PROTOCOL\] 357 [Arcadiaarrow-up-right](https://opencover.com/app/?invite=docs&cover=156) 156 [Asterarrow-up-right](https://opencover.com/app/?invite=docs&cover=349) 349 [Asymmetry Financearrow-up-right](https://opencover.com/app/?invite=docs&cover=354) \[MULTI-PROTOCOL\] 354 [Auraarrow-up-right](https://opencover.com/app/?invite=docs&cover=8) 8 [Auto Financearrow-up-right](https://opencover.com/app/?invite=docs&cover=315) \[MULTI-PROTOCOL\] 315 [Avantisarrow-up-right](https://opencover.com/app/?invite=docs&cover=339) 339 [Balancer v2arrow-up-right](https://opencover.com/app/?invite=docs&cover=11) 11 [Balancer v3arrow-up-right](https://opencover.com/app/?invite=docs&cover=257) 257 [Beefyarrow-up-right](https://opencover.com/app/?invite=docs&cover=14) 14 [Camelotarrow-up-right](https://opencover.com/app/?invite=docs&cover=133) 133 [Caparrow-up-right](https://opencover.com/app/?invite=docs&cover=348) 348 [Cap Pendle Marketarrow-up-right](https://opencover.com/app/?invite=docs&cover=346) \[MULTI-PROTOCOL\] 346 [Colendarrow-up-right](https://opencover.com/app/?invite=docs&cover=323) 323 [Compound v3arrow-up-right](https://opencover.com/app/?invite=docs&cover=118) 118 [Contangoarrow-up-right](https://opencover.com/app/?invite=docs&cover=224) \[MULTI-PROTOCOL\] 224 [Convexarrow-up-right](https://opencover.com/app/?invite=docs&cover=22) 22 [CoW AMMarrow-up-right](https://opencover.com/app/?invite=docs&cover=244) 244 [Curve (all pools)arrow-up-right](https://opencover.com/app/?invite=docs&cover=26) 26 [Curve LlamaLendarrow-up-right](https://opencover.com/app/?invite=docs&cover=214) 214 [Derivearrow-up-right](https://opencover.com/app/?invite=docs&cover=157) \[MULTI-PROTOCOL\] 157 [dHedgearrow-up-right](https://opencover.com/app/?invite=docs&cover=126) 126 [Dolomitearrow-up-right](https://opencover.com/app/?invite=docs&cover=231) 231 [EigenLayer v1arrow-up-right](https://opencover.com/app/?invite=docs&cover=106) 106 [Equilibriaarrow-up-right](https://opencover.com/app/?invite=docs&cover=132) 132 [Ether.fiarrow-up-right](https://opencover.com/app/?invite=docs&cover=167) \[MULTI-PROTOCOL\] 167 [Ether.fi Liquid ETH Vaultarrow-up-right](https://opencover.com/app/?invite=docs&cover=150) 150 [Etherexarrow-up-right](https://opencover.com/app/?invite=docs&cover=325) 325 [Euler v2arrow-up-right](https://opencover.com/app/?invite=docs&cover=228) \[MULTI-PROTOCOL\] 228 [ExtraFiarrow-up-right](https://opencover.com/app/?invite=docs&cover=182) 182 [ExtraFi XLendarrow-up-right](https://opencover.com/app/?invite=docs&cover=299) 299 [f(x) Protocolarrow-up-right](https://opencover.com/app/?invite=docs&cover=152) \[MULTI-PROTOCOL\] 152 [Felixarrow-up-right](https://opencover.com/app/?invite=docs&cover=332) \[MULTI-PROTOCOL\] 332 [FiRMarrow-up-right](https://opencover.com/app/?invite=docs&cover=207) 207 [Gamma Swaparrow-up-right](https://opencover.com/app/?invite=docs&cover=235) 235 [Gearbox v3arrow-up-right](https://opencover.com/app/?invite=docs&cover=135) 135 [GMX v2arrow-up-right](https://opencover.com/app/?invite=docs&cover=125) 125 [Harvest Financearrow-up-right](https://opencover.com/app/?invite=docs&cover=307) \[MULTI-PROTOCOL\] 307 [Hyperlendarrow-up-right](https://opencover.com/app/?invite=docs&cover=327) 327 [HypurrFiarrow-up-right](https://opencover.com/app/?invite=docs&cover=328) \[MULTI-PROTOCOL\] 328 [Infinifiarrow-up-right](https://opencover.com/app/?invite=docs&cover=308) 308 [Instadapp Fluidarrow-up-right](https://opencover.com/app/?invite=docs&cover=184) 184 [Inverse sDOLAarrow-up-right](https://opencover.com/app/?invite=docs&cover=208) 208 [IPORarrow-up-right](https://opencover.com/app/?invite=docs&cover=336) \[MULTI-PROTOCOL\] 336 [Katana Vault Bridgearrow-up-right](https://opencover.com/app/?invite=docs&cover=322) 322 [Kineticarrow-up-right](https://opencover.com/app/?invite=docs&cover=301) 301 [L1 Advisorsarrow-up-right](https://opencover.com/app/?invite=docs&cover=273) \[MULTI-PROTOCOL\] 273 [Lagoon Flagship ETH Vaultarrow-up-right](https://opencover.com/app/?invite=docs&cover=344) \[MULTI-PROTOCOL\] 344 [Lagoon Flagship USDC Vaultarrow-up-right](https://opencover.com/app/?invite=docs&cover=345) \[MULTI-PROTOCOL\] 345 [LFJarrow-up-right](https://opencover.com/app/?invite=docs&cover=70) 70 [Lighterarrow-up-right](https://opencover.com/app/?invite=docs&cover=350) 350 [Liquity v2arrow-up-right](https://opencover.com/app/?invite=docs&cover=243) 243 [Makinaarrow-up-right](https://opencover.com/app/?invite=docs&cover=351) 351 [Midasarrow-up-right](https://opencover.com/app/?invite=docs&cover=356) 356 [Moonwellarrow-up-right](https://opencover.com/app/?invite=docs&cover=183) 183 [OpenCover Aave v3 + Blue Chip Morpho Vaultarrow-up-right](https://opencover.com/app/?invite=docs&cover=333) \[MULTI-PROTOCOL\] 333 [Origin Sonic (OS)arrow-up-right](https://opencover.com/app/?invite=docs&cover=294) 294 [PancakeSwaparrow-up-right](https://opencover.com/app/?invite=docs&cover=225) 225 [Project Xarrow-up-right](https://opencover.com/app/?invite=docs&cover=347) 347 [Ramses Exchangearrow-up-right](https://opencover.com/app/?invite=docs&cover=215) 215 [Reservearrow-up-right](https://opencover.com/app/?invite=docs&cover=217) 217 [Revertarrow-up-right](https://opencover.com/app/?invite=docs&cover=302) 302 [Safe (Gnosis Safe)arrow-up-right](https://opencover.com/app/?invite=docs&cover=60) 60 [Savings crvUSD (scrvUSD)arrow-up-right](https://opencover.com/app/?invite=docs&cover=241) 241 [Shadowarrow-up-right](https://opencover.com/app/?invite=docs&cover=283) 283 [Sky Savings (sUSDS)arrow-up-right](https://opencover.com/app/?invite=docs&cover=114) 114 [Spark Lending v1arrow-up-right](https://opencover.com/app/?invite=docs&cover=115) 115 [SparkDEXarrow-up-right](https://opencover.com/app/?invite=docs&cover=249) 249 [Spectraarrow-up-right](https://opencover.com/app/?invite=docs&cover=197) 197 [StakeDAOarrow-up-right](https://opencover.com/app/?invite=docs&cover=343) \[MULTI-PROTOCOL\] 343 [Steer Protocolarrow-up-right](https://opencover.com/app/?invite=docs&cover=232) 232 [Superformarrow-up-right](https://opencover.com/app/?invite=docs&cover=166) 166 [SushiSwaparrow-up-right](https://opencover.com/app/?invite=docs&cover=330) 330 [Syruparrow-up-right](https://opencover.com/app/?invite=docs&cover=255) 255 [Term Financearrow-up-right](https://opencover.com/app/?invite=docs&cover=251) \[MULTI-PROTOCOL\] 251 [Tokemak autoUSD Vaultarrow-up-right](https://opencover.com/app/?invite=docs&cover=321) \[MULTI-PROTOCOL\] 321 [Uniswap v3arrow-up-right](https://opencover.com/app/?invite=docs&cover=72) 72 [Uniswap v4arrow-up-right](https://opencover.com/app/?invite=docs&cover=256) 256 [Velodromearrow-up-right](https://opencover.com/app/?invite=docs&cover=124) 124 [Yearn v3arrow-up-right](https://opencover.com/app/?invite=docs&cover=141) \[MULTI-PROTOCOL\] 141 [Yield Basisarrow-up-right](https://opencover.com/app/?invite=docs&cover=355) 355 [YieldFiarrow-up-right](https://opencover.com/app/?invite=docs&cover=314) 314 [YOarrow-up-right](https://opencover.com/app/?invite=docs&cover=305) \[MULTI-PROTOCOL\] 305 [YO ETH Vaultarrow-up-right](https://opencover.com/app/?invite=docs&cover=319) 319 [YO USD Vaultarrow-up-right](https://opencover.com/app/?invite=docs&cover=320) 320 [Velvet Capitalarrow-up-right](https://opencover.com/app/?invite=docs&cover=316) 316 [Symbioticarrow-up-right](https://opencover.com/app/?invite=docs&cover=192) 192 [Sturdy Financearrow-up-right](https://opencover.com/app/?invite=docs&cover=252) \[MULTI-PROTOCOL\] 252 [Stackuparrow-up-right](https://opencover.com/app/?invite=docs&cover=304) 304 [Siloarrow-up-right](https://opencover.com/app/?invite=docs&cover=185) 185 [Relative Financearrow-up-right](https://opencover.com/app/?invite=docs&cover=258) 258 [PoolTogetherarrow-up-right](https://opencover.com/app/?invite=docs&cover=275) 275 [Overnight Financearrow-up-right](https://opencover.com/app/?invite=docs&cover=191) 191 [Mellowarrow-up-right](https://opencover.com/app/?invite=docs&cover=200) \[MULTI-PROTOCOL\] 200 [Corkarrow-up-right](https://opencover.com/app/?invite=docs&cover=284) 284 [AO Stakingarrow-up-right](https://opencover.com/app/?invite=docs&cover=234) 234 [Ambient Financearrow-up-right](https://opencover.com/app/?invite=docs&cover=300) 300 [Ajna Financearrow-up-right](https://opencover.com/app/?invite=docs&cover=230) 230 * **Depeg Cover** safeguards against financial losses when a covered token, such as a stablecoin or wrapped asset, deviates significantly from its reference value for a specified duration. For instance, with USDS Depeg Cover, you can file a claim if USDS deviates by 10% or more from its $1 reference value for at least 7 days. Details: [Depeg Coverarrow-up-right](https://opencover.com/depeg-cover-covered-risks-and-exclusions/) Name ID [Ethena USDe Depegarrow-up-right](https://opencover.com/app/?invite=docs&cover=253) 253 [alUSD Depegarrow-up-right](https://opencover.com/app/?invite=docs&cover=335) 335 [avUSDx Depegarrow-up-right](https://opencover.com/app/?invite=docs&cover=326) 326 [Cap cUSD Depegarrow-up-right](https://opencover.com/app/?invite=docs&cover=352) 352 [crvUSD Depegarrow-up-right](https://opencover.com/app/?invite=docs&cover=312) 312 [DOLA Depegarrow-up-right](https://opencover.com/app/?invite=docs&cover=286) 286 [Ether.fi eBTC Depegarrow-up-right](https://opencover.com/app/?invite=docs&cover=268) 268 [Falcon USDf Depegarrow-up-right](https://opencover.com/app/?invite=docs&cover=313) 313 [frxUSD Depegarrow-up-right](https://opencover.com/app/?invite=docs&cover=318) 318 [fxUSD Depegarrow-up-right](https://opencover.com/app/?invite=docs&cover=311) 311 [Level LVLUSD Depegarrow-up-right](https://opencover.com/app/?invite=docs&cover=262) 262 [Morpho BTC-backed loanarrow-up-right](https://opencover.com/app/?invite=docs&cover=306) 306 [Resolv USR Depegarrow-up-right](https://opencover.com/app/?invite=docs&cover=264) 264 [Resupply reUSD Depegarrow-up-right](https://opencover.com/app/?invite=docs&cover=293) 293 [sGHO Depegarrow-up-right](https://opencover.com/app/?invite=docs&cover=310) 310 [Sky USDS Depegarrow-up-right](https://opencover.com/app/?invite=docs&cover=261) 261 [Super OETH Depegarrow-up-right](https://opencover.com/app/?invite=docs&cover=266) 266 [Tether USDT0 Depegarrow-up-right](https://opencover.com/app/?invite=docs&cover=263) 263 [Treehouse ETH Depegarrow-up-right](https://opencover.com/app/?invite=docs&cover=265) 265 [USDai Depegarrow-up-right](https://opencover.com/app/?invite=docs&cover=338) 338 [USDT Depegarrow-up-right](https://opencover.com/app/?invite=docs&cover=317) 317 [WBTC Depegarrow-up-right](https://opencover.com/app/?invite=docs&cover=267) 267 * **Custody Cover** protects against losses of funds held by third-party custodians due to specific events. Covered events include crime-related losses, where the custodian is a victim of crime resulting in a loss of 10% or more of user holdings, and extended withdrawal restriction losses, where the custodian imposes a complete withdrawal restriction for 100 days or more. Details: [Custody Coverarrow-up-right](https://opencover.com/custody-cover-covered-risks-and-exclusions/) Name ID [Bybit Custodyarrow-up-right](https://opencover.com/app/?invite=docs&cover=282) 282 [Binance Custodyarrow-up-right](https://opencover.com/app/?invite=docs&cover=278) 278 [Bitmex Custodyarrow-up-right](https://opencover.com/app/?invite=docs&cover=281) 281 [Coinbase Custodyarrow-up-right](https://opencover.com/app/?invite=docs&cover=276) 276 [Deribit Custodyarrow-up-right](https://opencover.com/app/?invite=docs&cover=280) 280 [Kraken Custodyarrow-up-right](https://opencover.com/app/?invite=docs&cover=277) 277 [OKX Custodyarrow-up-right](https://opencover.com/app/?invite=docs&cover=279) 279 * **Base DeFi Pass** protects on-chain assets within the **Base** ecosystem across multiple protocols like Uniswap v3, Compound, and Beefy Finance. It covers risks like smart contract bugs, oracle failures, and governance attacks. Details: [Base DeFi Passarrow-up-right](https://opencover.com/base-pass-covered-risks-and-exclusion/) * **Nexus Mutual Covers** (Elite, Essential, and Entry) offer varying levels of protection for DeFi protocols. They cover smart contract bugs, oracle failures, and liquidation issues. Details: [Nexus Mutual Coversarrow-up-right](https://opencover.com/nexus-mutual-cover-covered-risks-and-exclusions/) Name ID [Base DeFi Passarrow-up-right](https://opencover.com/basepass/) 227 [Nexus Mutual Elite Coverarrow-up-right](https://opencover.com/elite/) 247 [Nexus Mutual Essential Coverarrow-up-right](https://opencover.com/essential/) 246 [Nexus Mutual Entry Coverarrow-up-right](https://opencover.com/entry/) 245 [PreviousSmart contractschevron-left](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/resources/contracts) Last updated 2 months ago sun-brightdesktopmoon sun-brightdesktopmoon --- # API reference | OpenCover [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints#get-a-quote-for-protocol-cover) Get a quote for protocol cover ------------------------------------------------------------------------------------------------------------------------------------------------------------------- A successful response contains a list of quotes in * `USDC` (supported on **Ethereum**, **Base**, **Arbitrum**, **Optimism**, **Polygon**) * `ETH` (supported on **Ethereum**, **Base**, **Arbitrum**, **Optimism**) * `cbBTC` (supported on **Ethereum**, **Base**) * `USDT` (supported on **Ethereum**, **Arbitrum**, **Optimism**, **Polygon**) Additionally, an EIP-191 signature (version code `0x45`) is added to each quote and serves as verification when the quote is submitted to the Quote contract on L2. post https://opencover.com/api/quote Returns signed protocol cover quotes for the given parameters. Body application/jsonchevron-down application/json productIdnumberRequired Protocol to cover. Example: `269` expirynumber · min: 30 · max: 180Required The number of days a cover should be valid for, e.g. 30, 60, 90 or greater up to 180 Example: `30` integratorIdnumberRequired Unique integrator ID assigned by OpenCover that enables sales tracking and cover NFT customization. Example: `4` mintTostringOptional Destination wallet address for the proof-of-cover NFT. If not specified, the NFT will be minted to the same wallet address that submitted the quote. Example: `0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045`Pattern: `^0x[0-9a-fA-F]{40}$` coveredAddressesstring\[\]Required If requesting a quote to cover an [Ecosystem product](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/resources/products#ecosystem-cover) , the `coveredAddresses` array must include all user wallet addresses to be covered. For all [Non-Ecosystem products](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/resources/products#protocol-cover) , provide an empty array `[]`, as all wallets controlled by the user are automatically covered. amountobjectRequired Amount object describing the cover amount and currency. Show propertiesplus Responses chevron-right 200 Success response with quote information. application/json Responseobject Show propertiesplus chevron-right 400 Failed to get a quote for cover. application/json chevron-right 500 Internal server error. application/json post /api/quote HTTPchevron-down HTTPcURLJavaScriptPython Test it 200 Success response with quote information. chevron-down [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints#list-quotes-and-their-statuses-for-a-wallet-address) List quotes and their statuses for a wallet address ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- This endpoint allows for retrieving all quotes associated with a specific wallet address, making it simple to track coverage status. ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints#understanding-quote-statuses) Understanding quote statuses The response includes quotes in various states, each identified by its `quoteStatus`: * `QUOTE_AWAITING_SETTLEMENT` The quote has been submitted awaiting settlement by OpenCover. * `COVER_ACTIVE` Coverage is currently in force. * `COVER_EXPIRED` The coverage period has ended. * `QUOTE_EXPIRED` The quote was not settled within 24 hours, refund is available. * `QUOTE_REFUNDED` The premium payment was returned to the payer. For more details on the possible states please see the [Quote lifecycle](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/resources/quote-lifecycle) page. These statuses refresh in real-time as actions occur onchain, allowing to monitor the coverage without needing to manually check each transaction. Each returned quote contains details about the covered product, coverage amount, premium paid, and key timestamps including `coverExpiresAt` (when coverage ends). Note that `settledAt` and `coverExpiresAt` will be `null` for quotes that are awaiting settlement or refunded. get https://opencover.com/api/quotes Returns the list of quotes and their statuses for a given wallet address. Query parameters ownerAddressstringRequired Ethereum wallet address. Example: `0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045`Pattern: `^0x[0-9a-fA-F]{40}$` Responses chevron-right 200 A list of quotes for the specified owner address. application/json Responseobject Show propertiesplus chevron-right 400 Invalid owner address provided. application/json chevron-right 500 Internal server error. application/json get /api/quotes HTTPchevron-down HTTPcURLJavaScriptPython Test it 200 A list of quotes for the specified owner address. chevron-down [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints#enable-cover-notifications) Enable cover notifications ----------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints#check-if-a-user-is-signed-up-for-notifications) Check if a user is signed up for notifications This [GET](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints#api-user-address-chainid) endpoint returns the user's email address registered for OpenCover notifications. If the `X-OC-Signature` HTTP header is not included in the request, the response returns an obfuscated version of the email which is helpful for visual confirmation without requiring user action. In this case, the response includes the `X-OC-Sign` HTTP header, containing a Base64-encoded OpenCover consent message. The user signs this message and sends the resulting signature in the `X-OC-Signature` header to the same [GET](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints#api-user-address-chainid) or [POST](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints#api-user) endpoints. Special HTTP response status codes `401` and `404` also return the `X-OC-Sign` header for signature generation (see the **Responses** section below). get https://opencover.com/api/user/{address}/{chainId} Check if a user is signed up for notifications Path parameters addressstringRequired User’s wallet address. Example: `0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045` chainIdinteger · enumRequired Chain ID of the provided network. Possible values: `8453``42161``137``10` Header parameters X-OC-SignaturestringOptional User signature for retrieving full email. Responses chevron-right 200 Success response with user information. application/json Headersobject Show Headerplus Responseobject Show propertiesplus chevron-right 400 Missing or malformed information in request body. application/json chevron-right 401 User needs to re-sign the OpenCover consent message to continue receiving notifications. application/json chevron-right 404 User not found. application/json chevron-right 500 Internal server error. application/json get /api/user/{address}/{chainId} HTTPchevron-down HTTPcURLJavaScriptPython Test it 200 Success response with user information. chevron-down ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints#show-the-full-email-address) Show the full email address To view their full, non-obfuscated email, users who signed up for OpenCover notifications must include their signature for the OpenCover consent message in the `X-OC-Signature` HTTP header and send it to the same [GET](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints#api-user-address-chainid) endpoint described in [Check if a user is signed up for notifications](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints#check-if-a-user-is-signed-up-for-notifications) . ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints#sign-up-or-update-email-address-for-notifications) Sign up or update email address for notifications This [POST](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints#api-user) endpoint allows the user to sign up for OpenCover email notifications about their cover status or update their email address. A valid signature for the OpenCover consent message must be included in the request. The consent message is returned in the `X-OC-Sign` response header of the [GET](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints#api-user-address-chainid) endpoint described in [Check if a user is signed up for notifications](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints#check-if-a-user-is-signed-up-for-notifications) . post https://opencover.com/api/user Sign up or update email address for notifications Header parameters X-OC-SignaturestringRequired A valid signature of the user who signed the OpenCover consent message. Body application/jsonchevron-down application/json addressstringRequired User’s wallet address that purchased a cover. Example: `0xd2135CfB216b74109775236E36d4b433F1DF507B` chainIdinteger · enumRequired Chain ID of the network the cover was purchased on. Possible values: `8453``42161``137``10` emailstringRequired Email address for receiving notifications. Example: `[[email protected]](https://integrate.opencover.com/cdn-cgi/l/email-protection) ` Responses chevron-right 201 Success response with user information. application/json chevron-right 400 Missing or malformed information in request body. application/json chevron-right 401 User needs to re-sign the OpenCover consent message to continue receiving notifications. application/json chevron-right 500 Internal server error. application/json post /api/user HTTPchevron-down HTTPcURLJavaScriptPython Test it 201 Success response with user information. chevron-down [PreviousSubscribe to notificationschevron-left](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/subscribe-to-notifications) [NextIntegration parameterschevron-right](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/linkout-integration/integration-parameters) Last updated 2 months ago * [Get a quote for protocol cover](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints#get-a-quote-for-protocol-cover) * [POST/api/quote](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints#post-api-quote) * [List quotes and their statuses for a wallet address](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints#list-quotes-and-their-statuses-for-a-wallet-address) * [Understanding quote statuses](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints#understanding-quote-statuses) * [GET/api/quotes](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints#get-api-quotes) * [Enable cover notifications](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints#enable-cover-notifications) * [Check if a user is signed up for notifications](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints#check-if-a-user-is-signed-up-for-notifications) * [GET/api/user/{address}/{chainId}](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints#get-api-user-address-chainid) * [Show the full email address](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints#show-the-full-email-address) * [Sign up or update email address for notifications](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints#sign-up-or-update-email-address-for-notifications) * [POST/api/user](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints#post-api-user) sun-brightdesktopmoon Copy POST /api/quote HTTP/1.1 Host: opencover.com Content-Type: application/json Accept: */* Content-Length: 177 { "productId": 269, "expiry": 30, "integratorId": 4, "mintTo": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045", "coveredAddresses": [], "amount": { "currency": { "symbol": "USDC" }, "value": "1000" } } Copy { "providerId": 255, "productId": 269, "cover": { "currency": { "code": "usd-coin", "symbol": "USDC", "decimals": 6, "assetId": 2 }, "value": "1000000000" }, "displayQuote": { "premium": { "currency": { "code": "usd", "symbol": "USD", "decimals": 2 }, "value": "4.13" }, "fee": { "currency": { "code": "usd", "symbol": "USD", "decimals": 2 }, "value": "0" }, "discount": { "currency": { "code": "usd", "symbol": "USD", "decimals": 2 }, "value": "0.2", "deal": "OPENCOVER_VIP" } }, "quotes": [\ {\ "premium": {\ "currency": {\ "code": "usd-coin",\ "symbol": "USDC",\ "decimals": 6,\ "assetId": 2\ },\ "value": "4136202"\ },\ "fee": {\ "currency": {\ "code": "usd-coin",\ "symbol": "USDC",\ "decimals": 6,\ "assetId": 2\ },\ "value": "0"\ },\ "signature": {\ "v": 28,\ "r": "0x7002f95de6fdba32e2005c8604755f955e82d30792e29c8c9ead1fbacf901949",\ "s": "0x60dce2043e99f24e0fb6a8bd0b4e1e752d37ccf6c8daf2a9cb5ef398b4a1a695"\ }\ },\ {\ "premium": {\ "currency": {\ "code": "ethereum",\ "symbol": "ETH",\ "decimals": 18,\ "assetId": 0\ },\ "value": "2269147850723159"\ },\ "fee": {\ "currency": {\ "code": "ethereum",\ "symbol": "ETH",\ "decimals": 18,\ "assetId": 0\ },\ "value": "0"\ },\ "signature": {\ "v": 27,\ "r": "0xdedcb351f95614548025ab81d28aadf74310e9ef16bf5c98c508ebb52e0407d1",\ "s": "0x77a31843e2bc8798016e9a6a4bd4b2f694fb0c21b165dabeb839358b639d4094"\ }\ },\ {\ "premium": {\ "currency": {\ "code": "coinbase-wrapped-btc",\ "symbol": "cbBTC",\ "decimals": 8,\ "assetId": 5\ },\ "value": "4928"\ },\ "fee": {\ "currency": {\ "code": "coinbase-wrapped-btc",\ "symbol": "cbBTC",\ "decimals": 8,\ "assetId": 5\ },\ "value": "0"\ },\ "signature": {\ "v": 28,\ "r": "0xd569fe6b355e11eff10d83f9d3b4a0ca3a22837085890c494b2990fdcc13a7d5",\ "s": "0x5da29e8c3f16331cdc4fb57208238cded36f45253a4ff152c74a3660a7967c94"\ }\ }\ ], "expiry": 30, "validUntil": 1741964280, "coveredAddresses": "[]", "integratorId": 1, "mintTo": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045" } Copy GET /api/quotes?ownerAddress=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 HTTP/1.1 Host: opencover.com Accept: */* Copy { "quotes": [\ {\ "quoteId": 1557,\ "chainId": 8453,\ "product": {\ "id": 269,\ "name": "vfat"\ },\ "coverAsset": {\ "symbol": "USDC",\ "decimals": 6\ },\ "coverAmount": "1900000000",\ "paymentAsset": {\ "symbol": "USDC",\ "decimals": 6\ },\ "premiumAmount": "15718677",\ "feeAmount": "0",\ "coverExpiry": 60,\ "ownerAddress": "0x0C000F9e42D0bbcAA455651e7049a7D8EFE7E31D",\ "payerAddress": "0x0C000F9e42D0bbcAA455651e7049a7D8EFE7E31D",\ "integratorId": 4,\ "submittedAt": "2025-05-20T13:08:55.000Z",\ "quoteStatus": "QUOTE_AWAITING_SETTLEMENT",\ "settledAt": null,\ "coverExpiresAt": null\ },\ {\ "quoteId": 1523,\ "chainId": 8453,\ "product": {\ "id": 182,\ "name": "ExtraFi"\ },\ "coverAsset": {\ "symbol": "USDC",\ "decimals": 6\ },\ "coverAmount": "27500000000",\ "paymentAsset": {\ "symbol": "ETH",\ "decimals": 18\ },\ "premiumAmount": "21527191569447081",\ "feeAmount": "0",\ "coverExpiry": 30,\ "ownerAddress": "0x0C000F9e42D0bbcAA455651e7049a7D8EFE7E31D",\ "payerAddress": "0x0C000F9e42D0bbcAA455651e7049a7D8EFE7E31D",\ "integratorId": 0,\ "submittedAt": "2025-05-12T22:45:43.000Z",\ "quoteStatus": "COVER_ACTIVE",\ "settledAt": "2025-05-13T21:04:19.000Z",\ "coverExpiresAt": "2025-06-12T21:04:08.000Z"\ },\ {\ "quoteId": 850,\ "chainId": 8453,\ "product": {\ "id": 182,\ "name": "ExtraFi"\ },\ "coverAsset": {\ "symbol": "USDC",\ "decimals": 6\ },\ "coverAmount": "47000000000",\ "paymentAsset": {\ "symbol": "USDC",\ "decimals": 6\ },\ "premiumAmount": "199808481",\ "feeAmount": "0",\ "coverExpiry": 30,\ "ownerAddress": "0x0C000F9e42D0bbcAA455651e7049a7D8EFE7E31D",\ "payerAddress": "0x0C000F9e42D0bbcAA455651e7049a7D8EFE7E31D",\ "integratorId": 0,\ "submittedAt": "2024-10-20T18:29:01.000Z",\ "quoteStatus": "COVER_EXPIRED",\ "settledAt": "2024-10-21T19:39:09.000Z",\ "coverExpiresAt": "2024-11-20T19:39:01.000Z"\ }\ ] } Copy GET /api/user/{address}/{chainId} HTTP/1.1 Host: opencover.com Accept: */* Copy { "code": "OK", "result": { "address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045", "chainId": 8453, "email": "e***@e***.c**" } } Copy POST /api/user HTTP/1.1 Host: opencover.com X-OC-Signature: text Content-Type: application/json Accept: */* Content-Length: 99 { "address": "0xd2135CfB216b74109775236E36d4b433F1DF507B", "chainId": 8453, "email": "[email protected]" } Copy { "code": "OK", "result": { "address": "0xd2135CfB216b74109775236E36d4b433F1DF507B", "chainId": 8453, "email": "[email protected]" } } sun-brightdesktopmoon --- # Email Protection | Cloudflare Please enable cookies. Email Protection ================ You are unable to access this email address integrate.opencover.com ------------------------------------------------------------------- The website from which you got to this page is protected by Cloudflare. Email addresses on that page have been hidden in order to keep them from being accessed by malicious bots. **You must enable Javascript in your browser in order to decode the e-mail address**. If you have a website and are interested in protecting it in a similar way, you can [sign up for Cloudflare](https://www.cloudflare.com/sign-up?utm_source=email_protection) . * [How does Cloudflare protect email addresses on website from spammers?](https://developers.cloudflare.com/waf/tools/scrape-shield/email-address-obfuscation/) * [Can I sign up for Cloudflare?](https://developers.cloudflare.com/fundamentals/setup/account/create-account/) Cloudflare Ray ID: **9c08967ffc63d705** • Your IP: Click to reveal 54.237.218.47 • Performance & security by [Cloudflare](https://www.cloudflare.com/5xx-error-landing) --- # Get a quote | OpenCover This step retrieves signed premium quotes for the specified cover request from the OpenCover API. These quotes are required for the subsequent onchain purchase transaction. ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/get-a-quote#endpoint) Endpoint Copy POST https://opencover.com/api/quote Refer to the [OpenCover API reference](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints#get-a-quote-for-protocol-cover) for the full specification, error handling, and further examples. [diagram-projectAPI referencechevron-right](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints) ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/get-a-quote#request) Request The example below requests a quote to cover **500 USDC** on **Aave v3** for **30 days**. Copy { "productId": 97, // ID of the protocol to cover "expiry": 30, // Cover duration in days (e.g., 30, 90, max 180) "integratorId": 0, // Your assigned OpenCover integrator ID "mintTo": "0x...", // User's wallet address for the proof-of-cover NFT "coveredAddresses": [], // Only required for ecosystem products (see remark below) "amount": { // Amount and currency to cover "currency": { "symbol": "USDC" }, // USDC, ETH, cbBTC "value": "500" // Amount } } The integrator ID is assigned by OpenCover to each integrator, [please reach outarrow-up-right](https://airtable.com/appm7CYnxTomwS4Kg/shrkpntNzvkMC4tJz) if you don't have one yet. If requesting a quote to cover an [Ecosystem product](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/resources/products#ecosystem-cover) , the `coveredAddresses` array must include all user wallet addresses to be covered. For all [Non-ecosystem products](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/resources/products) , provide an empty array `[]`, as all wallets controlled by the user are automatically covered. For the list of supported products and their IDs please see the page below. [cubesProductschevron-right](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/resources/products) ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/get-a-quote#response) Response A successful response confirms the cover details and provides payable quotes. #### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/get-a-quote#key-fields) Key fields * `validUntil`: Unix timestamp for quote expiry (usually 10 mins). * `quotes`: Array of quotes. * Each object includes premium (cost in smallest unit), fee (usually 0), and signature (v, r, s components). The signature is required for the onchain submission. * `displayQuote`: Informational USD premium estimate. ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/get-a-quote#next-steps) Next steps 1. Parse the `quotes` array from the successful response. 2. Present the premium options to the user. 3. Store the selected quote's details, including the full signature object. 4. Proceed to submit the quote (described on the next page). [PreviousIntegration guidechevron-left](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide) [NextSubmit a quotechevron-right](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/submit-a-quote) Last updated 9 months ago * [Endpoint](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/get-a-quote#endpoint) * [Request](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/get-a-quote#request) * [Response](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/get-a-quote#response) * [Next steps](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/get-a-quote#next-steps) sun-brightdesktopmoon Copy { // ... other fields ... "quotes": [\ { // Option 1: Pay premium in ETH\ "premium": {\ "currency": { "symbol": "ETH", "decimals": 18, "assetId": 0 },\ "value": "1085301649557754" // Cost in Wei\ },\ "signature": { // <<< REQUIRED for submitting this quote\ "v": 28,\ "r": "0x015...",\ "s": "0x067..."\ }\ },\ { // Option 2: Pay premium in USDC\ "premium": {\ "currency": { "symbol": "USDC", "decimals": 6, "assetId": 2 },\ "value": "2066601" // Cost (2.066601 USDC)\ },\ "signature": { // <<< REQUIRED for submitting this quote\ "v": 28,\ "r": "0x0fc...",\ "s": "0x553..."\ }\ }\ // ... other currency options ...\ ], "validUntil": 1741964280, // ... other fields ... } sun-brightdesktopmoon --- # Subscribe to notifications | OpenCover Allow users to subscribe to or manage their email notifications for OpenCover covers using the API. Notifications inform users about important events related to their cover, such as upcoming expiry. [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/subscribe-to-notifications#overview) Overview ------------------------------------------------------------------------------------------------------------------------------------------------------ 1. **Check status & get consent message:** query the API to check if the user is already subscribed and retrieve a consent message. 2. **Generate signature:** Prompt the user to sign the consent message with their wallet to prove ownership. 3. **Subscribe / update / view:** Use the generated signature to either: 1. Subscribe a new email address for notifications or update an existing one. 2. View the full registered email address (optional). [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/subscribe-to-notifications#check-notification-status-and-get-consent-message) 1️⃣ Check notification status & get consent message ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/subscribe-to-notifications#endpoint) Endpoint Copy GET https://opencover.com/api/user/:address/:chainId [diagram-projectAPI referencechevron-right](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints) ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/subscribe-to-notifications#response) Response * If the user is subscribed, the response body includes an obfuscated email address (e.g., `e***@e***.c**`). * **Crucially, the response includes the** `**X-OC-Sign**` **header**. This contains a Base64-encoded consent message that the user must sign in the next step. * If the user is not found (404) or requires re-authentication (401), the `X-OC-Sign` header is still provided. See the [OpenCover API reference](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints#api-user-address-chainid) for full response details. [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/subscribe-to-notifications#generate-signature) 2️⃣ Generate signature ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Before subscribing or viewing the full email address, the user must sign the consent message obtained from the `X-OC-Sign` header in the [previous step](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/subscribe-to-notifications#check-notification-status-and-get-consent-message) . This verifies their control over the wallet. 1. Decode the Base64-encoded message from the `X-OC-Sign` header. 2. Use a library like _wagmi_ to prompt the user to sign the decoded message string. The resulting `signature` string is used in the subsequent API calls. [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/subscribe-to-notifications#subscribe-or-update-email) 3️⃣ Subscribe or update email -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- To subscribe a new email address for notifications or update an existing one, make a POST request to [the user endpoint](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints#api-user) . This request must include the signature from [Step 2](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/subscribe-to-notifications#subscribe-or-update-email) . ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/subscribe-to-notifications#endpoint-1) Endpoint [diagram-projectAPI referencechevron-right](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints) ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/subscribe-to-notifications#request-and-response) Request & response A successful (201) response confirms the subscription/update and returns the user details, including the newly set email address. [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/subscribe-to-notifications#view-full-email-optional) 4️⃣ View full email (optional) -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- To retrieve the user's full, non-obfuscated email address (if they are already subscribed), make the same GET request as in [Step 1](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/subscribe-to-notifications#check-notification-status-and-get-consent-message) , but include the signature obtained in [Step 2](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/subscribe-to-notifications#generate-signature) . ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/subscribe-to-notifications#endpoint-2) Endpoint [diagram-projectAPI referencechevron-right](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints) ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/subscribe-to-notifications#response-1) Response If the signature is valid, the email field in the response body will contain the full email address. [PreviousTrack coveragechevron-left](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/track-coverage) [NextAPI referencechevron-right](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints) Last updated 8 months ago * [Overview](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/subscribe-to-notifications#overview) * [1️⃣ Check notification status & get consent message](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/subscribe-to-notifications#check-notification-status-and-get-consent-message) * [Endpoint](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/subscribe-to-notifications#endpoint) * [Response](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/subscribe-to-notifications#response) * [2️⃣ Generate signature](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/subscribe-to-notifications#generate-signature) * [3️⃣ Subscribe or update email](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/subscribe-to-notifications#subscribe-or-update-email) * [Endpoint](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/subscribe-to-notifications#endpoint-1) * [Request & response](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/subscribe-to-notifications#request-and-response) * [4️⃣ View full email (optional)](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/subscribe-to-notifications#view-full-email-optional) * [Endpoint](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/subscribe-to-notifications#endpoint-2) * [Response](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/subscribe-to-notifications#response-1) sun-brightdesktopmoon Copy import { signMessage } from '@wagmi/core' import axios from 'axios'; import { config } from './config' const res = await axios.get(...); // API response from Step 1 const address = '0x55a4E29C0aFE0b8fE829757A2c80475ec6bEFea6'; // User's wallet address const message = atob(res.headers.get('x-oc-sign')); // Decoded consent message const signature = await signMessage(config, { account: address, message, }); Copy POST https://opencover.com/api/user X-OC-Signature: Copy { "address": "0x55a4E29C0aFE0b8fE829757A2c80475ec6bEFea6", // User's wallet address "chainId": 8453, "email": "[email protected]" } Copy GET https://opencover.com/api/user/:address/:chainId X-OC-Signature: sun-brightdesktopmoon --- # Submit a quote | OpenCover This step finalises the cover purchase by submitting the selected quote and its signature to the OpenCover _Quote_ smart contract on the relevant L2 network using the user's connected wallet. Submitting a quote involves potentially two transactions: 1. **ERC20 approval**: If paying with an ERC20 token, prepare and execute an approve transaction. 2. **Quote submission**: Prepare and execute the cover purchase transaction. See the page below for the deployed contract addresses and ABI below. [file-signatureSmart contractschevron-right](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/resources/contracts) ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/submit-a-quote#approve-erc20-transfer-if-applicable) Approve ERC20 transfer (if applicable) If the payment is going to be made in an ERC20 token (USDC, USDT or cbBTC), the user needs to execute an approve transaction for spending the payment amount of that ERC20 token by the _Quote_ contract. * **Goal:** Call the `approve()` function on the ERC20 token contract with the appropriate amount. The example below uses [_wagmi_arrow-up-right](https://wagmi.sh/core/getting-started) to approve purchasing a cover in USDC. Copy import { useWriteContract, useReadContract } from 'wagmi'; const quote = {}; // HTTP POST to https://opencover.com/api/quote, see "Get a quote" // If a user decides to pay in USDC, find the corresponding payment quote const paymentQuote = quote.quotes.find(q => q.premium.currency.symbol === 'USDC'); // Base mainnet Quote contract address const contractAddress = '0xD68647555e5da198d50866334EEd647cbE3d1556'; // Read asset metadata to get ERC20 contract address const { data: asset } = useReadContract({ address: contractAddress, abi: QuoteAbi, functionName: 'assets', args: [quote.providerId, paymentQuote.premium.currency.assetId] }); const { writeContract } = useWriteContract(); // Approve OpenCover Quote contract to allow ERC20 payment writeContract({ address: asset.assetAddress, abi: ERC20Abi, functionName: 'approve', args: [\ contractAddress,\ BigInt(paymentQuote.premium.value),\ ], }); ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/submit-a-quote#submit-selected-quote) Submit selected quote After the ERC20 approval is confirmed, create an onchain transaction that submits the selected quote and purchases protocol cover on using the _Quote_ contract's [`submitQuoteV15()`arrow-up-right](https://github.com/OpenCoverDeFi/opencover-contracts-v1/blob/main/contracts/QuoteV15.sol#L115) function. * **Goal:** Call the `submitQuoteV15()` function on the OpenCover _Quote_ contract using the quote fetched from the previous step. The arguments to the `submitQuoteV15()` function are part of the API response from the [Get a quote](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/get-a-quote) step. Likewise, the [QuoteSubmission structurearrow-up-right](https://github.com/OpenCoverDeFi/opencover-contracts-v1/blob/main/contracts/interface/IQuote.sol#L51) uses quote data returned from the [Get a quote](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/get-a-quote) step. The example code below uses _wagmi_ to purchase a cover for **500 USDC** on **Aave v3** with the premium paid in **USDC**. ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/submit-a-quote#track-quote-status) Track quote status Once a quote is submitted onchain it is fulfilled and settled by OpenCover **within 24 hours** after which the cover becomes active and protection goes live. For more details on each quote state please visit our [Quote lifecycle](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/resources/quote-lifecycle) page. The next step describes how to show users their submitted quotes, active and expired coverage. [PreviousGet a quotechevron-left](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/get-a-quote) [NextTrack coveragechevron-right](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/track-coverage) Last updated 8 months ago * [Approve ERC20 transfer (if applicable)](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/submit-a-quote#approve-erc20-transfer-if-applicable) * [Submit selected quote](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/submit-a-quote#submit-selected-quote) * [Track quote status](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/submit-a-quote#track-quote-status) sun-brightdesktopmoon Copy submitQuoteV15( QuoteSubmission calldata quote, address[] memory coveredAddresses, uint256 integratorId, address mintTo, uint8 v, bytes32 r, bytes32 s ); Copy struct QuoteSubmission { /// @dev Cover provider identifier. uint32 providerId; /// @dev Cover product. uint32 productId; /// @dev Cover asset. uint32 coverAssetId; /// @dev Cover amount in cover asset. uint256 coverAmount; /// @dev Payment asset for premiums and fees. uint32 paymentAssetId; /// @dev Premium for the cover in the payment asset. uint256 premiumAmount; /// @dev OpenCover fees in the payment asset. uint256 feeAmount; /// @dev Expiry in days. uint16 coverExpiry; /// @dev Quote validity timestamp. uint256 validUntil; } Copy import { useWriteContract } from 'wagmi'; const quote = {}; // HTTP POST to https://opencover.com/api/quote, see "Get a quote" // If a user decides to pay in USDC, find the corresponding payment quote const paymentQuote = quote.quotes.find(q => q.premium.currency.symbol === 'USDC'); const quoteSubmission = { providerId: quote.providerId, // 255 for Nexus Mutual productId: quote.productId, // 97 for Aave v3 coverAssetId: quote.cover.currency.assetId, // 2 for USDC coverAmount: quote.cover.value, // 500000000 paymentAssetId: paymentQuote.premium.currency.assetId, // 2 for USDC premiumAmount: paymentQuote.premium.value, // 2066601 = ~2.06 USDC feeAmount: paymentQuote.fee.value, // 0 coverExpiry: quote.expiry, // 30 validUntil: quote.validUntil // 1741964280 }; const { writeContract } = useWriteContract(); // Purchase cover on Base writeContract({ // OpenCover Quote contract on Base address: '0xD68647555e5da198d50866334EEd647cbE3d1556', abi: QuoteAbi, functionName: 'submitQuoteV15', args: [\ quoteSubmission,\ quote.coveredAddresses,\ quote.integratorId,\ quote.mintTo,\ paymentQuote.signature.v,\ paymentQuote.signature.r,\ paymentQuote.signature.s,\ ], ...(isNativeAsset // Only for ETH payments ? { value: BigInt(paymentQuote.premium.value), } : {}), }); sun-brightdesktopmoon --- # Track coverage | OpenCover Tracking coverage across all supported chains is easier than ever with OpenCover's API. Provide users with essential information about their protection, including: * Active coverage for specific products and asset combinations; * Cover purchase history; * Expiry notifications. ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/track-coverage#endpoint) Endpoint Copy GET https://opencover.com/api/quotes?ownerAddress=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 Refer to the [OpenCover API reference](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints#get-a-quote-for-protocol-cover) for the full specification, error handling, and further examples. [diagram-projectAPI referencechevron-right](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/api-endpoints) ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/track-coverage#response) Response The response includes a list of quotes and their current status in the `quoteStatus` field: * `QUOTE_AWAITING_SETTLEMENT` The quote has been submitted, awaiting settlement by OpenCover. * `COVER_ACTIVE` Coverage is active and protection is live. * `COVER_EXPIRED` The coverage period has ended. * `QUOTE_EXPIRED` The quote was not settled within 24 hours, refund is available. * `QUOTE_REFUNDED` The premium payment was returned to the payer. For more details on the possible statuses please see the [Quote lifecycle](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/resources/quote-lifecycle) page. The example API response below shows 3 quotes in various states: 1. **Pending** 60-day **vfat** cover for 1,900 USDC 2. **Active** 30-day **ExtraFi** cover for 27,500 USDC 3. **Expired** 30-day **ExtraFi** cover for 47,000 USDC ### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/track-coverage#examples) Examples The examples below show simple implementations to answer the most common questions related to coverage purchased through a native integration. #### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/track-coverage#get-multi-chain-cover-history) Get multi-chain cover history #### [hashtag](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/track-coverage#get-active-usdc-cover-amount) Get active USDC cover amount Filtering on `quoteStatus` allows for displaying only active covers. Combine this with product and/or integrator filters to refine the data shown to users. The next step illustrates how your users could subscribe to notifications related to their purchased cover. [PreviousSubmit a quotechevron-left](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/submit-a-quote) [NextSubscribe to notificationschevron-right](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/subscribe-to-notifications) Last updated 8 months ago * [Endpoint](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/track-coverage#endpoint) * [Response](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/track-coverage#response) * [Examples](https://integrate.opencover.com/zeiNPSbmoJnSDblPJcJK/native-integration/integration-guide/track-coverage#examples) sun-brightdesktopmoon Copy { "quotes": [\ {\ "quoteId": 1557,\ "chainId": 8453,\ "product": {\ "id": 269,\ "name": "vfat"\ },\ "coverAsset": {\ "symbol": "USDC",\ "decimals": 6\ },\ "coverAmount": "1900000000",\ "paymentAsset": {\ "symbol": "USDC",\ "decimals": 6\ },\ "premiumAmount": "15718677",\ "feeAmount": "0",\ "coverExpiry": 60,\ "ownerAddress": "0x0C000F9e42D0bbcAA455651e7049a7D8EFE7E31D",\ "payerAddress": "0x0C000F9e42D0bbcAA455651e7049a7D8EFE7E31D",\ "integratorId": 4,\ "submittedAt": "2025-05-20T13:08:55.000Z",\ "quoteStatus": "QUOTE_AWAITING_SETTLEMENT",\ "settledAt": null,\ "coverExpiresAt": null\ },\ {\ "quoteId": 1523,\ "chainId": 8453,\ "product": {\ "id": 182,\ "name": "ExtraFi"\ },\ "coverAsset": {\ "symbol": "USDC",\ "decimals": 6\ },\ "coverAmount": "27500000000",\ "paymentAsset": {\ "symbol": "ETH",\ "decimals": 18\ },\ "premiumAmount": "21527191569447081",\ "feeAmount": "0",\ "coverExpiry": 30,\ "ownerAddress": "0x0C000F9e42D0bbcAA455651e7049a7D8EFE7E31D",\ "payerAddress": "0x0C000F9e42D0bbcAA455651e7049a7D8EFE7E31D",\ "integratorId": 0,\ "submittedAt": "2025-05-12T22:45:43.000Z",\ "quoteStatus": "COVER_ACTIVE",\ "settledAt": "2025-05-13T21:04:19.000Z",\ "coverExpiresAt": "2025-06-12T21:04:08.000Z"\ },\ {\ "quoteId": 850,\ "chainId": 8453,\ "product": {\ "id": 182,\ "name": "ExtraFi"\ },\ "coverAsset": {\ "symbol": "USDC",\ "decimals": 6\ },\ "coverAmount": "47000000000",\ "paymentAsset": {\ "symbol": "USDC",\ "decimals": 6\ },\ "premiumAmount": "199808481",\ "feeAmount": "0",\ "coverExpiry": 30,\ "ownerAddress": "0x0C000F9e42D0bbcAA455651e7049a7D8EFE7E31D",\ "payerAddress": "0x0C000F9e42D0bbcAA455651e7049a7D8EFE7E31D",\ "integratorId": 0,\ "submittedAt": "2024-10-20T18:29:01.000Z",\ "quoteStatus": "COVER_EXPIRED",\ "settledAt": "2024-10-21T19:39:09.000Z",\ "coverExpiresAt": "2024-11-20T19:39:01.000Z"\ }\ ] } Copy const INTEGRATOR_ID = 0; // Unique integrator ID assigned by OpenCover. const quotes = [/* ... */]; // API response. const integratorQuotes = quotes // Filter quotes only showing coverage purchased via integrator. .filter((quote) => quote.integratorId === INTEGRATOR_ID); console.log('Cover history', integratorQuotes); Copy import { formatUnits } from 'viem'; const INTEGRATOR_ID = 0; // Unique integrator ID assigned by OpenCover. const PRODUCT_ID = 269; // See supported Products under Resources. const quotes = [/* ... */]; // API response. const activeCoverAmount = quotes // Filter for active, USDC-denominated covers for the given product // purchased via the integrator. .filter((quote) => quote.quoteStatus === 'COVER_ACTIVE' && quote.product.id === PRODUCT_ID && quote.integratorId === INTEGRATOR_ID && quote.coverAsset.symbol === 'USDC') // Sum active cover amount for all matching covers. .reduce((sum, quote) => sum + BigInt(quote.coverAmount), 0n); // Format amount using `formatUnits` from `viem`. console.log('Active USDC cover amount', formatUnits(activeCoverAmount, 6)); sun-brightdesktopmoon ---