List available pools
Returns a paginated list of yield pools that your tenant is allowed to use. Each item contains the protocol, chain, underlying token, current APY snapshot, TVL, and — critically — the market_address that you must pass when creating a portfolio. This endpoint is Entra token only (Entra token required, no user token).
Call this endpoint once at app startup and cache the result; pool metadata changes infrequently. Re-fetch when creating a portfolio to ensure you pass a current market_address.
Headers
Entra M2M access token. Format: Bearer <token>. Obtain via the OAuth 2.0
Client Credentials grant against your Azure AD tenant. See Entra
authentication.
Query parameters
Maximum number of pools to return. Range 1–100. Default: 25. See Pagination.
Cursor for forward pagination — the pool_id of the last item from the previous page.
Cursor for backward pagination — the pool_id of the first item from the current page.
Example request
const baseUrl = process.env.YIELDFORCE_API_BASE_URL ?? 'https://yieldforce.io/api';
const res = await fetch(`${baseUrl}/v1/partner/pools`, {
headers: {
Authorization: `Bearer ${entraToken}`,
},
});
const data = await res.json();Response
200 Paginated list of pools
{
"data": [
{
"pool_id": "pool_aave_base_usdc",
"protocol": "aave",
"chain_id": "84532",
"token_symbol": "USDC",
"token_address": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
"market_address": "0x8bAB6d1b75f19e9eD9fCe8b9BD338844fF79aE27",
"apy": "0.042",
"tvl_usd": "1250000.00"
},
{
"pool_id": "pool_morpho_base_usdc",
"protocol": "morpho",
"chain_id": "84532",
"token_symbol": "USDC",
"token_address": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
"market_address": "0x6A0935DEF442D92c3456FBb38B888375F022C646",
"apy": "0.063",
"tvl_usd": "870000.00"
}
],
"has_more": false,
"next_cursor": null,
"prev_cursor": null
}market_address is not the same as token_address
For both Aave and Morpho, market_address identifies the pool or vault contract — not the ERC-20 token. You must pass market_address verbatim as the market_address field when calling POST /v1/partner/end_users/{external_id}/portfolios. Passing token_address there will fail.
On Base Sepolia: the Morpho yfUSDC vault address is 0x6A0935DEF442D92c3456FBb38B888375F022C646.
Errors
401 token_missing — No Authorization: Bearer header on the request.
401 invalid_entra_token — Token is expired, malformed, or has an unexpected audience. Force-refresh your cached token and retry once.
401 unknown_partner — The appid in your Entra token does not match any registered tenant. Contact Yieldforce to confirm your App Registration is onboarded.
403 insufficient_role — Your tenant does not have access to this endpoint. Contact Yieldforce to verify your tenant configuration.