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

# Batch Get Morpho Positions

> Same as the list endpoint, but accepts multiple wallets in one POST (max 10). Returns one entry per wallet/chain pair. Optional `market_id` and `target_health_factor` in the body.

**Credits:** 15 per matching wallet/chain result when fewer than 100 match; 12 per result at 100 or more. Billing uses the matching count before pagination.



## OpenAPI

````yaml /openapi.yaml post /v1/lending/morpho/batch
openapi: 3.1.0
info:
  title: DeFi Orbit API
  version: 1.0.0
  description: Public REST API for DeFi Orbit positions, lending, portfolio, and usage.
servers:
  - url: https://api.defiorbit.xyz
security:
  - bearerAuth: []
tags:
  - name: Portfolio
  - name: Snapshots
  - name: Uniswap V3
  - name: Aerodrome V3
  - name: Orca
  - name: Aave V3
  - name: Morpho
  - name: Kamino
  - name: Usage
paths:
  /v1/lending/morpho/batch:
    post:
      tags:
        - Morpho
      summary: Batch Get Morpho Positions
      description: >-
        Same as the list endpoint, but accepts multiple wallets in one POST (max
        10). Returns one entry per wallet/chain pair. Optional `market_id` and
        `target_health_factor` in the body.


        **Credits:** 15 per matching wallet/chain result when fewer than 100
        match; 12 per result at 100 or more. Billing uses the matching count
        before pagination.
      operationId: post_v1_lending_morpho_batch
      parameters:
        - name: page
          in: query
          required: false
          schema:
            type: integer
            description: 'Page. Default: 1.'
            default: 1
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            description: 'Maximum 25. Default: 10.'
            default: 10
            maximum: 25
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                wallets:
                  type: array
                  description: >-
                    Wallet addresses (comma-separated in the explorer; JSON
                    array in the request body).
                  items:
                    type: string
                  example:
                    - '0xbf7620d0377b0660a6cbaef5cdfe2e00eddc1495'
                  x-default:
                    - '0xbf7620d0377b0660a6cbaef5cdfe2e00eddc1495'
                chain_id:
                  type: integer
                  description: Chain ID.
                market_id:
                  type: string
                  description: Isolated Morpho market id.
                target_health_factor:
                  type: number
                  description: 'Target health factor. Default: 1.5.'
                  default: 1.5
              required:
                - wallets
            example:
              wallets:
                - '0xbf7620d0377b0660a6cbaef5cdfe2e00eddc1495'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/RequestId'
                  - type: object
                    properties:
                      data:
                        type: array
                        items:
                          type: object
                          properties:
                            chain_id:
                              type: integer
                            wallet:
                              type: string
                            positions:
                              type: array
                              items:
                                type: object
                                properties:
                                  marketId:
                                    type: string
                                  healthFactor:
                                    type: string
                                    description: >-
                                      String. Aave divides
                                      liquidation-threshold-weighted collateral
                                      by debt. Morpho divides collateral ×
                                      oracle price × LLTV by debt, to four
                                      decimals. Kamino divides liquidation LTV
                                      by LTV. MAX or ∞ when there is no debt.
                                  netValueUSD:
                                    type: string
                                required:
                                  - marketId
                                  - healthFactor
                                  - netValueUSD
                            calculations:
                              type: array
                              items:
                                type: object
                                properties:
                                  healthFactor:
                                    type: string
                                    description: >-
                                      String. Aave divides
                                      liquidation-threshold-weighted collateral
                                      by debt. Morpho divides collateral ×
                                      oracle price × LLTV by debt, to four
                                      decimals. Kamino divides liquidation LTV
                                      by LTV. MAX or ∞ when there is no debt.
                                  netAPY:
                                    type: string
                                required:
                                  - healthFactor
                                  - netAPY
                          required:
                            - chain_id
                            - wallet
                            - positions
                            - calculations
                      pagination:
                        $ref: '#/components/schemas/Pagination'
                    required:
                      - data
                      - pagination
              example:
                data:
                  - chain_id: 1
                    wallet: '0xbf7620d0377b0660a6cbaef5cdfe2e00eddc1495'
                    positions:
                      - marketId: >-
                          0xabababababababababababababababababababababababababababababababab
                        healthFactor: '2.5000'
                        netValueUSD: '800.00'
                    calculations:
                      - healthFactor: '2.5000'
                        netAPY: '3.20'
                pagination:
                  page: 1
                  limit: 10
                  total: 1
                  next_page: null
                  prev_page: null
                request_id: req_...
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
components:
  schemas:
    RequestId:
      type: object
      required:
        - request_id
      properties:
        request_id:
          type: string
          description: Id to quote when you contact support.
    Pagination:
      type: object
      required:
        - page
        - limit
        - total
        - next_page
        - prev_page
      properties:
        page:
          type: integer
        limit:
          type: integer
        total:
          type: integer
          description: Matching rows, before this page is sliced.
        next_page:
          type: string
          nullable: true
          description: URL of the next page, or null on the last page.
        prev_page:
          type: string
          nullable: true
          description: URL of the previous page, or null on the first page.
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
            - request_id
          properties:
            code:
              type: string
            message:
              type: string
            request_id:
              type: string
  responses:
    BadRequest:
      description: Missing or invalid parameter.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: INVALID_PARAMETER
              message: page must be a positive integer.
              request_id: req_...
    Unauthorized:
      description: Missing, malformed, invalid, or revoked API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: INVALID_API_KEY
              message: Missing API key.
              request_id: req_...
    PaymentRequired:
      description: The organization does not have enough credits.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: INSUFFICIENT_CREDITS
              message: Insufficient API credits.
              request_id: req_...
    Forbidden:
      description: The organization is suspended, or the endpoint or feature is disabled.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: ACCOUNT_SUSPENDED
              message: This organization is suspended.
              request_id: req_...
    TooManyRequests:
      description: The organization exceeded its requests-per-second limit.
      headers:
        Retry-After:
          description: Seconds to wait before retrying.
          schema:
            type: integer
        X-RateLimit-Limit:
          description: Requests per second for the organization.
          schema:
            type: integer
        X-RateLimit-Remaining:
          description: Requests left in the current window.
          schema:
            type: integer
        X-RateLimit-Reset:
          description: Unix time when the window resets.
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: RATE_LIMIT_EXCEEDED
              message: Rate limit exceeded. Please try again later.
              request_id: req_...
    InternalError:
      description: Unexpected server error, or pricing is not configured.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: INTERNAL_ERROR
              message: An unexpected error occurred.
              request_id: req_...
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Paste your API key from the
        [dashboard](https://platform.defiorbit.xyz/dashboard/keys). The key
        starts with `do_sk_`.
      x-default: YOUR_API_KEY

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.