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

> ## Agent Instructions
> Before reading these docs, install the relevant Circle Skill to get pre-loaded context — skills are LLM-optimized and cover architecture decisions, correct flows, and common pitfalls. In Claude Code: run /plugin marketplace add circlefin/skills then /plugin install circle-skills@circle. With Vercel Skills CLI: run npx skills add circlefin/skills. Available skills: use-usdc https://github.com/circlefin/skills/blob/master/plugins/circle/skills/use-usdc/SKILL.md (balances, transfers, approvals on EVM and Solana); EURC has no skill — see https://developers.circle.com/stablecoins/what-is-eurc.md; bridge-stablecoin https://github.com/circlefin/skills/blob/master/plugins/circle/skills/bridge-stablecoin/SKILL.md (crosschain transfers via CCTP, USDC, EURC, and third-party assets); use-arc https://github.com/circlefin/skills/blob/master/plugins/circle/skills/use-arc/SKILL.md (Arc chain config, contract deployment, USDC bridging — Arc docs: https://docs.arc.io/llms.txt); use-circle-wallets https://github.com/circlefin/skills/blob/master/plugins/circle/skills/use-circle-wallets/SKILL.md (choose wallet type); use-developer-controlled-wallets https://github.com/circlefin/skills/blob/master/plugins/circle/skills/use-developer-controlled-wallets/SKILL.md (custodial wallets for payouts and treasury); use-user-controlled-wallets https://github.com/circlefin/skills/blob/master/plugins/circle/skills/use-user-controlled-wallets/SKILL.md (embedded wallets with Web2 login); use-modular-wallets https://github.com/circlefin/skills/blob/master/plugins/circle/skills/use-modular-wallets/SKILL.md (smart contract wallets with passkeys and ERC-4337); use-gateway https://github.com/circlefin/skills/blob/master/plugins/circle/skills/use-gateway/SKILL.md (unified USDC balance, nanopayments); use-smart-contract-platform https://github.com/circlefin/skills/blob/master/plugins/circle/skills/use-smart-contract-platform/SKILL.md (deploy, interact, monitor contracts). Pair any skill with the Circle MCP server for live SDK signatures, contract addresses, and chain IDs: {"mcpServers":{"circle":{"url":"https://api.circle.com/v1/codegen/mcp"}}}.
> Read the product overview first. Each product has an overview explaining when and why to use it. Read it before quickstarts.
> Pick the right wallet type. Developer-controlled (you hold keys), user-controlled (end user holds keys via PIN/social login), or modular (smart contract wallets with passkeys). See https://developers.circle.com/wallets.md.
> Use CCTP V2 for crosschain transfers. CCTP natively transfers USDC and EURC via burn-and-mint, and supports permissionless wrapping of third-party assets via lock-and-mint. V1 is legacy; always use V2 unless V1 is specified or the chain requires it (Noble, Sui, and Aptos still require V1). Migration guide: https://developers.circle.com/cctp/migration-from-v1-to-v2.md.
> Use Bridge Kit for frontend bridging. Wraps CCTP with a simpler SDK for user-facing apps. Use CCTP directly for backend transfers.
> Gas Station vs Paymaster. Gas Station sponsors gas for Circle Wallet transactions. Paymaster lets users pay gas in USDC. Different use cases — read both overviews.
> Gateway Nanopayments for sub-cent payments. Gasless USDC micropayments down to $0.000001 via x402 and batched settlement. For pay-per-request APIs, AI agent payments, streaming.
> Look up USDC addresses per chain. Never hardcode — use https://developers.circle.com/stablecoins/usdc-contract-addresses.md.
> Prefer SDKs over raw API calls. Node.js and Python SDKs handle auth, retries, and errors.
> API key required. Bearer token in Authorization header. Testnet and mainnet use separate keys and may use different base URLs depending on the product.
> Set up webhooks when available. Most operations are async. Webhooks deliver transaction confirmations and state changes.
> When calling list endpoints, paginate using pageSize and pageAfter until no nextPageAfter cursor is returned—stopping at the first page silently misses records.
> Building an AI agent? Start with the Agent Stack—Circle CLI, agent wallets, and nanopayments built for autonomous use cases: https://developers.circle.com/agent-stack.md.

# Get a loan

> Returns detailed information about a specific loan position.



## OpenAPI

````yaml openapi/digital-asset-backed-borrowing.yaml get /v1/borrow/loans/{id}
openapi: 3.0.2
info:
  version: ${version}
  title: Digital Asset-Backed Borrowing API
  description: >
    The Digital Asset-Backed Borrowing API lets you borrow stablecoin liquidity
    against onchain collateral. It uses a dedicated wallet to hold collateral
    and borrowed funds, and Circle handles the onchain transactions. Write
    operations are asynchronous and return a job that can be polled for status.
servers:
  - url: https://api-sandbox.circle.com
  - url: https://api.circle.com
security: []
tags:
  - name: Borrow Wallets
    description: >-
      Provision and inspect the per-entity MSCA wallet that holds collateral and
      borrowed funds.
  - name: Borrow Loans
    description: Originate, inspect, repay, and add collateral to borrow positions.
  - name: Borrow Jobs
    description: Observe asynchronous onchain operations.
  - name: Borrow Markets
    description: Discover allowlisted lending markets.
paths:
  /v1/borrow/loans/{id}:
    get:
      tags:
        - Borrow Loans
      summary: Get a loan
      description: Returns detailed information about a specific loan position.
      operationId: getBorrowLoan
      parameters:
        - $ref: '#/components/parameters/IdPath'
      responses:
        '200':
          description: Successfully retrieved a loan.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/json:
              schema:
                title: GetBorrowLoanResponse
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/OnchainLoan'
              examples:
                response:
                  value:
                    data:
                      id: fc988ed5-c129-4f70-a064-e5beb7eb8e32
                      protocol: morpho
                      marketId: >-
                        0x3a85e6f1c2d3b4a596877869504132e1d0c9b8a7766554433221100ffeeddccbb
                      walletAddress: '0x742d35Cc6634C0532925a3b844Bc9e7595f9f68C'
                      protocolAddress: '0x33333aea097c193e66081E930c33020272b33333'
                      borrowAsset: USD
                      collateralAsset: CIRBTC
                      borrowDepositAddress: '0x5a0b4a11d3f9b2c1e8a7d6c5b4a39281f0e1d2c3'
                      collateralDepositAddress: '0xbb81dcaf9e7a6b5c4d3e2f1908172635445362718'
                      collateralAmount: '0.05'
                      debtAmount: '1000.00'
                      oraclePrice: '67234.51'
                      ltv: '0.30'
                      healthFactor: '2.85'
                      borrowApy: '0.0542'
                      status: active
                      createDate: '2026-06-20T14:22:00.000Z'
                      updateDate: '2026-06-21T09:00:00.000Z'
        '401':
          $ref: '#/components/responses/NotAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      security:
        - bearerAuth: []
components:
  parameters:
    IdPath:
      name: id
      description: Universally unique identifier (UUID v4) of a resource.
      in: path
      required: true
      schema:
        type: string
        format: uuid
        example: b3d9d2d5-4c12-4946-a09d-953e82fae2b0
  headers:
    XRequestId:
      description: >-
        Universally unique identifier (UUID v4) for the request. Helpful for
        identifying a request when communicating with Circle support.
      schema:
        type: string
        format: uuid
        example: 2adba88e-9d63-44bc-b975-9b6ae3440dde
  schemas:
    OnchainLoan:
      type: object
      description: >
        A borrow position on a lending protocol. You can hold at most one borrow

        position per lending market on each protocol. Position values
        (`oraclePrice`,

        `ltv`, `healthFactor`, `borrowApy`, and amounts) reflect the most recent
        LTV

        monitoring snapshot. These values are not read live from the blockchain.
      required:
        - id
        - protocol
        - marketId
        - walletAddress
        - borrowAsset
        - collateralAsset
        - status
        - createDate
      properties:
        id:
          type: string
          format: uuid
          description: Identifier of the loan.
        protocol:
          type: string
          enum:
            - morpho
          description: Lending protocol.
        marketId:
          type: string
          description: Identifier of the lending market (protocol-specific).
        walletAddress:
          type: string
          description: The MSCA address that holds this position.
        protocolAddress:
          type: string
          description: >
            Onchain address of the lending protocol contract that holds this
            position,

            such as the Morpho Blue contract. Useful for verifying the position

            onchain.
          example: '0x33333aea097c193e66081E930c33020272b33333'
        borrowAsset:
          type: string
          description: |
            Circle currency code of the borrowed asset, such as `USD` for USDC.
            Distinct from the token symbol (`USDC`), which appears as a key in
            `wallet.depositAddresses`.
          example: USD
        collateralAsset:
          type: string
          description: >-
            Circle currency code of the collateral asset, such as `CIRBTC` for
            cirBTC.
          example: CIRBTC
        borrowDepositAddress:
          type: string
          description: Wallet deposit address that receives the borrowed funds.
        collateralDepositAddress:
          type: string
          description: >-
            Wallet deposit address that receives residual collateral after a
            position is partially liquidated.
        collateralAmount:
          type: string
          description: Collateral posted, in native token units (decimal string).
        debtAmount:
          type: string
          description: Outstanding debt, in native token units (decimal string).
        oraclePrice:
          type: string
          description: >
            Collateral price denominated in `borrowAsset` from the latest
            monitoring snapshot

            (decimal string).
        ltv:
          type: string
          description: >-
            Loan-to-value ratio from the latest snapshot (decimal string between
            `0.0` and `1.0`).
        healthFactor:
          type: string
          description: >
            Health factor from the latest snapshot (decimal string). Positions
            are

            liquidatable when this value drops below `1.0`.
        borrowApy:
          type: string
          description: >-
            Annualized borrow rate from the latest snapshot (decimal string,
            such as `0.0542`).
        status:
          type: string
          enum:
            - active
            - closed
            - liquidated
            - failed
          description: Status of the loan.
        liquidationDetectedAt:
          type: string
          format: date-time
          description: |
            Date and time when this position's liquidation was first detected.
            Present only for liquidated loans.
        liquidatedDebtAmount:
          type: string
          description: >
            Debt repaid by the liquidation, in native token units (decimal
            string). Present only

            for liquidated loans.
        liquidatedCollateralSeized:
          type: string
          description: >
            Collateral seized by the liquidator, in native token units (decimal
            string). Present

            only for liquidated loans.
        liquidationOraclePrice:
          type: string
          description: >
            Collateral price (denominated in `borrowAsset`) recorded at
            liquidation (decimal

            string). Present only for liquidated loans.
        createDate:
          type: string
          format: date-time
          description: Date and time when the loan was created.
        updateDate:
          type: string
          format: date-time
          description: Date and time when the loan was last updated.
      example:
        id: fc988ed5-c129-4f70-a064-e5beb7eb8e32
        protocol: morpho
        marketId: '0x3a85e6f1c2d3b4a596877869504132e1d0c9b8a7766554433221100ffeeddccbb'
        walletAddress: '0x742d35Cc6634C0532925a3b844Bc9e7595f9f68C'
        protocolAddress: '0x33333aea097c193e66081E930c33020272b33333'
        borrowAsset: USD
        collateralAsset: CIRBTC
        borrowDepositAddress: '0x5a0b4a11d3f9b2c1e8a7d6c5b4a39281f0e1d2c3'
        collateralDepositAddress: '0xbb81dcaf9e7a6b5c4d3e2f1908172635445362718'
        collateralAmount: '0.05'
        debtAmount: '1000.00'
        oraclePrice: '67234.51'
        ltv: '0.30'
        healthFactor: '2.85'
        borrowApy: '0.0542'
        status: active
        createDate: '2026-06-20T14:22:00.000Z'
        updateDate: '2026-06-21T09:00:00.000Z'
  responses:
    NotAuthorized:
      description: >-
        The request has not been applied because it lacks valid authentication
        credentials.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
      content:
        application/json:
          schema:
            type: object
            title: NotAuthorized
            required:
              - code
              - message
            properties:
              code:
                type: integer
                example: 400
              message:
                type: string
                example: Something went wrong.
            example:
              code: 401
              message: Malformed authorization.
          examples:
            response:
              value:
                code: 401
                message: Malformed authorization.
    Forbidden:
      description: >-
        The request provides authentication, but the authenticated user does not
        possess sufficient permissions for accessing this resource.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
      content:
        application/json:
          schema:
            type: object
            title: Forbidden
            required:
              - code
              - message
            properties:
              code:
                type: integer
                example: 400
              message:
                type: string
                example: Something went wrong.
            example:
              code: 3
              message: Forbidden
          examples:
            response:
              value:
                code: 3
                message: Forbidden
    NotFound:
      description: The specified resource was not found.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
      content:
        application/json:
          schema:
            type: object
            title: NotFound
            required:
              - code
              - message
            properties:
              code:
                type: integer
                example: 400
              message:
                type: string
                example: Something went wrong.
            example:
              code: 404
              message: Not found.
          examples:
            response:
              value:
                code: 404
                message: Not found.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````