diagram-projectAPI reference

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

Returns signed protocol cover quotes for the given parameters.

Body
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: 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045Pattern: ^0x[0-9a-fA-F]{40}$
coveredAddressesstring[]Required

If requesting a quote to cover an Ecosystem product, the coveredAddresses array must include all user wallet addresses to be covered. For all Non-Ecosystem products, provide an empty array [], as all wallets controlled by the user are automatically covered.

Responses
chevron-right
200

Success response with quote information.

application/json
providerIdnumberOptional

Cover provider ID, allowed value: 255 for Nexus Mutual.

Example: 255
productIdnumberOptional

Requested protocol to cover.

Example: 269
expirynumberOptional

Requested number of days a cover should be valid for.

Example: 30
validUntilnumberOptional

Unix timestamp until the quote is valid.

Example: 1741964280
coveredAddressesstring[]Optional

The wallet addresses included in the coverage for this quote; for Ecosystem products, this reflects the addresses submitted by the requester, while for Non-Ecosystem products, it will be an empty array [] indicating that all user-controlled wallets are covered by default.

Example: []
integratorIdnumberOptional

Requested integrator ID

Example: 1
mintTostringOptional

Requested destination address for proof-of-cover NFT delivery.

Example: 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045
post
/api/quote

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.

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 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

Returns the list of quotes and their statuses for a given wallet address.

Query parameters
ownerAddressstringRequired

Ethereum wallet address.

Example: 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045Pattern: ^0x[0-9a-fA-F]{40}$
Responses
chevron-right
200

A list of quotes for the specified owner address.

application/json
get
/api/quotes

Enable cover notifications

Check if a user is signed up for notifications

This GET 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 or POST 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

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:
Header parameters
X-OC-SignaturestringOptional

User signature for retrieving full email.

Responses
chevron-right
200

Success response with user information.

application/json
get
/api/user/{address}/{chainId}

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 endpoint described in Check if a user is signed up for notifications.

Sign up or update email address for notifications

This POST 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 endpoint described in Check if a user is signed up for notifications.

post

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
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:
emailstringRequired

Email address for receiving notifications.

Example: [email protected]
Responses
post
/api/user

Last updated