Skip to main content
GET
/
v2
/
portfolios
/
{portfolioId}
curl --request GET \
  --url 'https://api.glider.fi/v2/portfolios/pf_01JWZEE2MF30KVRMRX53N88VA4' \
  --header 'x-api-key: gldr_sk_your_api_key'
{
  "success": true,
  "data": {
    "portfolioId": "pf_01JWZEE2MF30KVRMRX53N88VA4",
    "userAccountId": "eip155:0:0xabcdef0000000000000000000000000000000001",
    "strategyId": "01JWZEE2MF30KVRMRX53N88VA4",
    "strategyName": "Conservative Yield",
    "strategyDescription": "Multi-chain balanced allocation strategy",
    "vaultAccountIds": [
      "eip155:8453:0xe3a2d1f49aee887e42655b56371d4d76bbf58058"
    ],
    "schedule": {
      "status": "active",
      "frequency": "daily",
      "intervalMs": 86400000,
      "nextDueAt": "2026-04-16T12:00:00.000Z",
      "lastRebalanceAt": "2026-04-15T12:00:00.000Z"
    },
    "createdAt": "2026-04-10T08:30:00.000Z",
    "strategyVersion": 4,
    "isMirrored": true,
    "isPinned": false,
    "scheduleId": "999",
    "updatedAt": "2026-04-15T12:00:00.000Z"
  }
}
Returns a single portfolio owned by the authenticated tenant. DB-only projection — identity, strategy metadata, per-chain vaults, and rebalance schedule state. For real-time balances and USD values call GET /v2/portfolios/{portfolioId}/positions.
  • Auth: x-api-key header (required)
  • Scope: portfolios:read
All on-chain identifiers are CAIP-shaped. End-user wallets use the chain-agnostic CAIP-10 form eip155:0:<address>, and vaults use the chain-bound form eip155:<chainId>:<address>.
Owner accounts are assumed to be EVM EOAs. Today every B2B-enrolled portfolio owner is an eip155 externally-owned account — the enrollment route only accepts EVM addresses. The userAccountId field is always emitted in the eip155:0:<address> form. When enrollment opens to non-EVM chains or smart-contract accounts this assumption has to be revisited: the owner namespace will need to be derived from the address itself, and the wire field may need to become chain-bound for account kinds that lack a chain-agnostic form.
Cross-tenant access returns 404, not 403, so a portfolio id that belongs to a different tenant is indistinguishable from one that does not exist.
portfolioId
string
required
Portfolio identifier returned by POST /v2/enroll or GET /v2/portfolios.
Common error responses:
  • 400 when the path parameter is invalid
  • 401 when x-api-key header is missing or the key is invalid
  • 403 when the API key lacks the portfolios:read scope
  • 404 when the portfolio does not exist or does not belong to the tenant
  • 500 on unexpected server errors
curl --request GET \
  --url 'https://api.glider.fi/v2/portfolios/pf_01JWZEE2MF30KVRMRX53N88VA4' \
  --header 'x-api-key: gldr_sk_your_api_key'
{
  "success": true,
  "data": {
    "portfolioId": "pf_01JWZEE2MF30KVRMRX53N88VA4",
    "userAccountId": "eip155:0:0xabcdef0000000000000000000000000000000001",
    "strategyId": "01JWZEE2MF30KVRMRX53N88VA4",
    "strategyName": "Conservative Yield",
    "strategyDescription": "Multi-chain balanced allocation strategy",
    "vaultAccountIds": [
      "eip155:8453:0xe3a2d1f49aee887e42655b56371d4d76bbf58058"
    ],
    "schedule": {
      "status": "active",
      "frequency": "daily",
      "intervalMs": 86400000,
      "nextDueAt": "2026-04-16T12:00:00.000Z",
      "lastRebalanceAt": "2026-04-15T12:00:00.000Z"
    },
    "createdAt": "2026-04-10T08:30:00.000Z",
    "strategyVersion": 4,
    "isMirrored": true,
    "isPinned": false,
    "scheduleId": "999",
    "updatedAt": "2026-04-15T12:00:00.000Z"
  }
}