> ## Documentation Index
> Fetch the complete documentation index at: https://docs.groundtech.co/llms.txt
> Use this file to discover all available pages before exploring further.

# List yield sources

> Returns the environment-specific yield source catalog for wallet strategies. Sources in `emergency_freeze` remain visible with that mode so clients can show their maintenance status, but they must not be selected for new allocations. Use `depositToken` to place each source in the matching USDC or USDT strategy group.

This endpoint returns the live public yield-source catalog. The catalog is environment-specific: sandbox exposes only the currently supported sandbox yield sources, while production may expose additional entries.


## OpenAPI

````yaml swagger/swagger-combined.yaml GET /v2/wallets/yield-sources
openapi: 3.0.0
info:
  title: Ground API
  description: Core API for portfolio wallets, deposits, withdrawals, and webhooks.
  version: 2.0.0
servers:
  - url: https://sandbox.groundtech.co
  - url: https://production.groundtech.co
security:
  - bearerAuth: []
tags:
  - name: System
    description: System health and utility endpoints.
  - name: Sandbox Faucets
    description: Sandbox-only test token faucets.
  - name: Portfolio Wallets
    description: >-
      Portfolio wallets with strategy allocation, deposits, withdrawals, and
      yield positions.
  - name: Webhook Endpoints
    description: Webhook endpoint management for portfolio wallet notifications.
paths:
  /v2/wallets/yield-sources:
    get:
      tags:
        - Portfolio Wallets
      summary: List yield sources
      description: >-
        Returns the environment-specific yield source catalog for wallet
        strategies. Sources in `emergency_freeze` remain visible with that mode
        so clients can show their maintenance status, but they must not be
        selected for new allocations. Use `depositToken` to place each source in
        the matching USDC or USDT strategy group.
      operationId: getYieldSourcesV2
      responses:
        '200':
          description: Yield source catalog
          content:
            application/json:
              schema:
                type: object
                properties:
                  nextCursor:
                    type: string
                    nullable: true
                    description: >-
                      Always null — the yield-source catalog is unpaginated.
                      Present for list-envelope consistency.
                  data:
                    type: array
                    description: >-
                      Canonical list envelope. Same items as `yieldSources`
                      (kept as a backwards-compatible alias).
                    items:
                      $ref: '#/components/schemas/YieldSource'
                  yieldSources:
                    type: array
                    description: Backwards-compatible alias of `data`.
                    items:
                      $ref: '#/components/schemas/YieldSource'
              example:
                yieldSources:
                  - id: syrup-usdc
                    name: Syrup USDC
                    description: >-
                      Overcollateralized lending exposure with an asynchronous
                      withdrawal window
                    mode: active
                    chain: ethereum
                    depositToken: usdc
                    apyBps: 453
                    navUpdateMode: continuous
                    protocol: maple
                    tvlUsd: 1200000000
                    utilizationPct: 82.5
                    addresses:
                      - label: Pool
                        value: '0x80ac24aa929eaf5013f6436cda2a7ba190f5cc0b'
                    links:
                      - label: Maple earn
                        url: https://maple.finance/syrup
                    allocations:
                      - label: Open-term loans
                        type: loan
                        valueUsd: 540000000
                        pct: 45
                    processingPolicies:
                      deposit:
                        processingTimeBasis: elapsed_seconds
                        typicalMinUnits: 0
                        typicalMaxUnits: 0
                      redeem:
                        processingTimeBasis: elapsed_seconds
                        typicalMinUnits: 43200
                        typicalMaxUnits: 43200
                  - id: morpho-gauntlet-usdc
                    name: Morpho Gauntlet USDC Prime
                    description: >-
                      Overcollateralized lending via a Morpho ERC-4626 USDC
                      vault
                    mode: active
                    chain: ethereum
                    depositToken: usdc
                    apyBps: 472
                    navUpdateMode: continuous
                    protocol: morpho
                    tvlUsd: 400000000
                    utilizationPct: 59
                    addresses:
                      - label: Vault
                        value: '0xdd0f28e19C1780eb6396170735D45153D261490d'
                    links:
                      - label: Morpho vault
                        url: >-
                          https://app.morpho.org/ethereum/vault/0xdd0f28e19C1780eb6396170735D45153D261490d/gauntlet-usdc-prime
                    allocations:
                      - label: USDC / cbBTC
                        type: market
                        valueUsd: 220000000
                        pct: 55
                      - label: USDC / WETH
                        type: market
                        valueUsd: 180000000
                        pct: 45
                    processingPolicies:
                      deposit:
                        processingTimeBasis: elapsed_seconds
                        typicalMinUnits: 0
                        typicalMaxUnits: 0
                      redeem:
                        processingTimeBasis: elapsed_seconds
                        typicalMinUnits: 0
                        typicalMaxUnits: 0
                  - id: morpho-steakhouse-usdc
                    name: Morpho Steakhouse USDC Prime
                    description: >-
                      Overcollateralized lending via a Morpho ERC-4626 USDC
                      vault
                    mode: active
                    chain: ethereum
                    depositToken: usdc
                    apyBps: 468
                    navUpdateMode: continuous
                    protocol: morpho
                    tvlUsd: 350000000
                    utilizationPct: 63
                    addresses:
                      - label: Vault
                        value: '0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB'
                    links:
                      - label: Morpho vault
                        url: >-
                          https://app.morpho.org/ethereum/vault/0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB/steakhouse-usdc-prime
                    allocations:
                      - label: USDC / wstETH
                        type: market
                        valueUsd: 210000000
                        pct: 60
                      - label: USDC / WBTC
                        type: market
                        valueUsd: 140000000
                        pct: 40
                    processingPolicies:
                      deposit:
                        processingTimeBasis: elapsed_seconds
                        typicalMinUnits: 0
                        typicalMaxUnits: 0
                      redeem:
                        processingTimeBasis: elapsed_seconds
                        typicalMinUnits: 0
                        typicalMaxUnits: 0
                  - id: morpho-august-usdc-v2
                    name: Morpho August USDC V2
                    description: >-
                      Overcollateralized lending via the Morpho August USDC V2
                      ERC-4626 vault
                    mode: active
                    chain: ethereum
                    depositToken: usdc
                    apyBps: 563
                    protocol: morpho
                    tvlUsd: null
                    utilizationPct: null
                    addresses:
                      - label: Vault
                        value: '0x7ceB0f01Cb7187a2EBED5661eCC4d5701d8F2350'
                    links:
                      - label: Morpho vault
                        url: >-
                          https://app.morpho.org/ethereum/vault/0x7ceB0f01Cb7187a2EBED5661eCC4d5701d8F2350/august-usdc-v2
                    allocations: []
                    processingPolicies:
                      deposit:
                        processingTimeBasis: elapsed_seconds
                        typicalMinUnits: 0
                        typicalMaxUnits: 0
                      redeem:
                        processingTimeBasis: elapsed_seconds
                        typicalMinUnits: 0
                        typicalMaxUnits: 0
                nextCursor: null
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  schemas:
    YieldSource:
      type: object
      required:
        - id
        - name
        - description
        - mode
        - chain
        - apyBps
        - navUpdateMode
        - tvlUsd
        - utilizationPct
        - addresses
        - allocations
        - links
        - protocol
        - depositToken
        - processingPolicies
      properties:
        id:
          type: string
          description: >-
            Unique identifier for the yield source (used in strategy
            allocations).
        name:
          type: string
          description: Human-readable display name.
        description:
          type: string
          nullable: true
        mode:
          type: string
          enum:
            - active
            - buy_only
            - sell_only
            - emergency_freeze
          description: >-
            Source operating mode. `emergency_freeze` sources remain visible but
            are unavailable for new allocations.
        chain:
          type: string
          nullable: true
          description: >-
            Canonical chain the source settles on, for the current environment.
            Production returns mainnet keys (e.g. `ethereum`, `base`, `solana`);
            sandbox returns the environment's testnet key (e.g.
            `ethereum_sepolia`, `solana_devnet`).
        apyBps:
          type: integer
          nullable: true
          description: Current APY in basis points.
        navUpdateMode:
          type: string
          enum:
            - continuous
            - discrete
          description: >-
            Whether the source value accrues continuously between price
            snapshots or changes only when a new NAV is published.
        tvlUsd:
          type: number
          nullable: true
          description: Current source TVL in USD when provider data is available.
        utilizationPct:
          type: number
          nullable: true
          description: >-
            Vault-level deployed-asset utilization percentage when provider data
            is available.
        addresses:
          type: array
          description: Protocol addresses relevant to the source.
          items:
            type: object
            properties:
              label:
                type: string
              value:
                type: string
        allocations:
          type: array
          description: >-
            Current underlying allocation rows. Percentages describe source
            asset mix, not utilization.
          items:
            type: object
            properties:
              label:
                type: string
              type:
                type: string
                nullable: true
              valueUsd:
                type: number
                nullable: true
              pct:
                type: number
                nullable: true
              address:
                type: string
                nullable: true
              description:
                type: string
                nullable: true
        links:
          type: array
          description: Provider UI links for the source.
          items:
            type: object
            properties:
              label:
                type: string
              url:
                type: string
                format: uri
        protocol:
          type: string
          nullable: true
          description: Underlying protocol identifier.
        depositToken:
          type: string
          enum:
            - usdc
            - usdt
          description: >-
            Token accepted when allocating into the source and returned when
            redeeming.
        maxAllocationUsd:
          type: string
          nullable: true
          description: >-
            Optional per-wallet allocation cap for this source, as a
            fixed-precision USD string. The cap blocks additional buys but not
            exits.
        processingPolicies:
          type: object
          description: >-
            Typical processing windows by action. Calendar and outer-bound
            details are internal.
          properties:
            deposit:
              $ref: '#/components/schemas/YieldSourceProcessingPolicy'
            redeem:
              $ref: '#/components/schemas/YieldSourceProcessingPolicy'
    YieldSourceProcessingPolicy:
      type: object
      required:
        - processingTimeBasis
        - typicalMinUnits
        - typicalMaxUnits
      properties:
        processingTimeBasis:
          type: string
          enum:
            - elapsed_seconds
            - banking_days
        typicalMinUnits:
          type: integer
          minimum: 0
        typicalMaxUnits:
          type: integer
          minimum: 0
        processingEstimate:
          allOf:
            - $ref: '#/components/schemas/ProcessingEstimate'
          description: >-
            Preliminary completion estimate calculated when the catalog response
            is generated. Omitted for atomic actions and when maintained
            calendar coverage is unavailable.
    AuthErrorResponse:
      type: object
      required:
        - error
      properties:
        error:
          type: string
          description: Authentication or authorization error message.
        message:
          type: string
          nullable: true
          description: Additional auth middleware detail, when present.
        code:
          type: string
          nullable: true
          enum:
            - unauthenticated
            - forbidden
          description: >-
            Some auth and scope failures include a stable code; middleware
            errors may omit it.
    ErrorResponse:
      type: object
      required:
        - error
        - code
      properties:
        error:
          type: string
          description: >-
            Human-readable error message. May change without notice; do not
            parse programmatically.
        code:
          type: string
          description: >-
            Machine-readable error code. Stable across API versions — safe to
            switch on in client code.
          enum:
            - validation_error
            - unknown_parameters
            - unsupported_chain
            - unsupported_token
            - invalid_destination_address
            - precision_overflow
            - invalid_cursor
            - unauthenticated
            - forbidden
            - wallet_not_found
            - wallet_limit_reached
            - withdrawal_not_found
            - deposit_not_found
            - yield_source_not_found
            - wallet_projection_unavailable
            - insufficient_funds
            - duplicate_request_id
            - request_id_conflict
            - invalid_position_weight
            - invalid_withdrawal_plan
            - payout_not_found
            - webhook_not_found
            - webhook_duplicate_url
            - withdrawal_not_cancellable
            - withdrawal_already_cancelled
            - withdrawal_payout_in_progress
            - withdrawal_policy_required
            - workflow_conflict
            - payout_already_terminal
            - payout_in_progress
            - payout_not_retryable
            - address_book_entry_not_found
            - address_book_duplicate_entry
            - address_book_whitelist_violation
            - rate_limited
            - rate_limit_exceeded
            - internal_error
            - wallet_creation_failed
            - service_temporarily_unavailable
    ProcessingEstimate:
      oneOf:
        - type: object
          required:
            - basis
            - typicalCompletionDate
            - typicalWindowEndDate
          properties:
            basis:
              type: string
              enum:
                - banking_days
            typicalCompletionDate:
              type: string
              format: date
            typicalWindowEndDate:
              type: string
              format: date
        - type: object
          required:
            - basis
            - typicalMinDuration
            - typicalMaxDuration
          properties:
            basis:
              type: string
              enum:
                - elapsed_seconds
            typicalMinDuration:
              type: string
              description: ISO-8601 duration for the lower end of the usual window.
            typicalMaxDuration:
              type: string
              description: ISO-8601 duration for the upper end of the usual window.
  responses:
    Unauthorized:
      description: >-
        The request is missing a valid bearer token, or the token is invalid or
        expired.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AuthErrorResponse'
          example:
            error: Unauthenticated request
            message: Missing or invalid bearer token
    TooManyRequests:
      description: >-
        Rate limit exceeded. Limits are enforced by API key/customer identity
        and by endpoint class. Retry with backoff; rate-limit headers are not
        currently emitted.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error: Rate limit exceeded
            code: rate_limited
    InternalServerError:
      description: >-
        An unexpected error occurred while processing the request. The request
        can be safely retried with the same `requestId`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error: Internal server error
            code: internal_error
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````