All requests require an API key via the
X-API-Key header.
See API Keys for details.Overview
The Opportunities API is how you discover what a user can deposit into. Each opportunity carries its accepted tokens, chain, estimated APR, current TVL, incentives, and which deposit modes it supports. This page is the canonical reference for the Opportunity object; every other endpoint that returns one links here. There are three read endpoints:GET /v2/opportunities/lists the full catalog, with optional filters.GET /v2/opportunities/{id}returns one opportunity by ID.GET /v2/opportunities/distributors/{distributorId}returns the set configured for a distributor.
Get All Opportunities
Retrieve all available opportunities with simplified token information.Comma-separated list of chain IDs to filter by. Example:
1,8453,42161 for Ethereum, Base, and Arbitrum.Filter by deposit token in the format
address-chainId. Example: 0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7-43114.Return only opportunities with TVL at or above this USD value. Example:
1000000 returns opportunities above $1M.Return only opportunities with TVL at or below this USD value.
Get Opportunity by ID
Retrieve a single opportunity by its unique identifier.Opportunity unique identifier.
Get Distributor Opportunities
Every distributor has a set of opportunities configured in the Client Portal. This endpoint returns only that set: the opportunities your users should see. Use it instead of the full catalog when you want to serve exactly what you have selected for your integration.Your distributor ID. Find it under Distribution in the Client Portal.
data array plus a pagination object), filtered to the configured set. An empty data array means no opportunities have been configured yet; that is a 200, not an error.
Which endpoint to use
How configuration works: select opportunities in the Client Portal, which stores them in the distributor’s earn-details configuration, and this endpoint returns that selection. For the concept and how attribution ties to it, see Distributor Model.
Response Fields
The same Opportunity object is returned by all three endpoints above.Opportunity Object
Opportunity unique identifier.
Opportunity display name.
URL-friendly identifier for the opportunity.
Opportunity detailed description.
Opportunity type, for example
vault or lending.Total Value Locked in USD.
Estimated annual percentage rate.
Whether the opportunity is featured.
Minimum deposit amount in USD. Deposits below this value are rejected.
Interaction and availability flags for the opportunity. See Meta Object.
Tokens accepted for deposit.
Base token for the opportunity.
Token received as a receipt for deposits.
Curator organization for the opportunity.
Incentives available on this opportunity.
Token Object
Token symbol, for example
USDC or ETH.Token contract address.
Numeric chain ID the token belongs to.
ERC20 decimals.
Token logo image URL.
Meta Object
Whether direct interaction with the opportunity is available. When true, the user can deposit the vault’s native token directly with
mode=direct.Whether entering via a routed swap is supported. When true, the user can deposit a different input token with
mode=swap and the API routes through a DEX. See Deposit Modes.Whether deposits are currently enabled.
Whether withdrawals are currently enabled.
Whether deposits settle asynchronously and require a follow-up claim.
Whether withdrawals settle asynchronously.
Whether the opportunity can only be entered via a secondary market.
Reason deposits are disabled, if any.
Reason withdrawals are disabled, if any.
Curator Object
Curator organization ID.
Curator name.
Curator description.
Curator icon image URL.
Curator website URL.
Incentive Object
Incentive unique identifier.
Incentive name.
Incentive description.
Incentive icon URL.
Type of reward:
points, tokens, yield, or vesting.Human-readable reward type name.
Annual percentage rate. May be null.
Minimum annual percentage rate. May be null.
Maximum annual percentage rate. May be null.
Fully diluted valuation estimate. May be null.
Token supply allocation percentage. May be null.
Estimated price in USD. May be null.
Whether the incentive is indexed.
Operational Notes
Determining the deposit flow (instant vs async)
Determining the deposit flow (instant vs async)
Some vaults settle deposits instantly; others (such as Mellow and Lagoon) are asynchronous and require a follow-up claim. In v2, the
meta.asyncDeposit flag signals this: when true, the deposit settles asynchronously and the user must submit a follow-up claim. The meta.asyncWithdraw flag signals the same for withdrawals.Empty distributor set
Empty distributor set
GET /v2/opportunities/distributors/{distributorId} returns { "data": [], "pagination": { "page": 1, "limit": 20, "total": 0, "totalPages": 0 } } when nothing is configured. Treat this as a prompt to configure the set in the Client Portal, not as a failure.Error Handling
Missing or invalid API key
Missing or invalid API key
Status Code: 401 UnauthorizedSolution: Pass a valid
X-API-Key header. See API Keys.Opportunity or distributor not found
Opportunity or distributor not found
Status Code: 404 Not FoundSolution: Verify the opportunity ID or distributor ID is correct and active.
Unexpected internal error
Unexpected internal error
Status Code: 500 Internal Server ErrorSolution: Retry with exponential backoff and contact support if it persists.

