> ## 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 the wallet

> Returns the wallet as a single-element array.




## OpenAPI

````yaml openapi/digital-asset-backed-borrowing.yaml get /v1/borrow/wallets
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/wallets:
    get:
      tags:
        - Borrow Wallets
      summary: Get the wallet
      description: |
        Returns the wallet as a single-element array.
      operationId: listBorrowWallets
      responses:
        '200':
          description: Successfully retrieved the wallet.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/json:
              schema:
                title: ListBorrowWalletsResponse
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/OnchainWallet'
              examples:
                response:
                  value:
                    data:
                      - id: 9c1b2a3d-4e5f-6071-8293-a4b5c6d7e8f9
                        walletAddress: '0x742d35Cc6634C0532925a3b844Bc9e7595f9f68C'
                        owners:
                          - id: 1f2e3d4c-5b6a-7980-1234-56789abcdef0
                            userId: 2a3b4c5d-6e7f-8091-2345-6789abcdef01
                            ownerType: passkey
                            publicKey: >-
                              0x04b0a1c2d3e4f5061728394a5b6c7d8e9f00112233445566778899aabbccddeeff
                            credentialId: a1b2c3d4e5f60718
                            status: active
                            addedDate: '2026-06-20T14:10:00.000Z'
                        depositAddresses:
                          USDC: '0x5a0b4a11d3f9b2c1e8a7d6c5b4a39281f0e1d2c3'
                          cirBTC: '0xbb81dcaf9e7a6b5c4d3e2f1908172635445362718'
                        createDate: '2026-06-20T14:10:00.000Z'
        '401':
          $ref: '#/components/responses/NotAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
      security:
        - bearerAuth: []
components:
  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:
    OnchainWallet:
      type: object
      description: >
        A modular smart contract account (MSCA) that custodies your collateral
        and

        holds your borrowed funds. You can have only one wallet.
      required:
        - id
        - walletAddress
        - owners
        - depositAddresses
        - createDate
      properties:
        id:
          type: string
          format: uuid
          description: Identifier of the wallet.
        walletAddress:
          type: string
          description: The onchain MSCA address.
          example: '0x742d35Cc6634C0532925a3b844Bc9e7595f9f68C'
        owners:
          type: array
          description: Owners currently authorized to sign transactions on this wallet.
          minItems: 1
          items:
            $ref: '#/components/schemas/OnchainWalletOwner'
        depositAddresses:
          $ref: '#/components/schemas/DepositAddresses'
        createDate:
          type: string
          format: date-time
          description: Date and time when the wallet was created.
      example:
        id: 9c1b2a3d-4e5f-6071-8293-a4b5c6d7e8f9
        walletAddress: '0x742d35Cc6634C0532925a3b844Bc9e7595f9f68C'
        owners:
          - id: 1f2e3d4c-5b6a-7980-1234-56789abcdef0
            userId: 2a3b4c5d-6e7f-8091-2345-6789abcdef01
            ownerType: passkey
            publicKey: >-
              0x04b0a1c2d3e4f5061728394a5b6c7d8e9f00112233445566778899aabbccddeeff
            credentialId: a1b2c3d4e5f60718
            status: active
            addedDate: '2026-06-20T14:10:00.000Z'
        depositAddresses:
          USDC: '0x5a0b4a11d3f9b2c1e8a7d6c5b4a39281f0e1d2c3'
          cirBTC: '0xbb81dcaf9e7a6b5c4d3e2f1908172635445362718'
        createDate: '2026-06-20T14:10:00.000Z'
    OnchainWalletOwner:
      type: object
      description: |
        An authorized signer on the wallet. A wallet has a single active owner.
      required:
        - id
        - ownerType
        - publicKey
        - status
        - addedDate
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier of this owner record.
        userId:
          type: string
          format: uuid
          description: >
            Identifier of the Mint user linked to this owner. Omitted for owners
            not

            linked to any Mint user (for example, API-key onboarding).
        ownerType:
          type: string
          enum:
            - ecdsa
            - passkey
          description: >
            Signing material type. `passkey` is a WebAuthn P256 credential;
            `ecdsa` is a

            20-byte EOA address.
        publicKey:
          type: string
          description: >
            Hex-encoded signing material. For `passkey` owners this is the raw
            P256 public key

            bytes; for `ecdsa` owners this is the 20-byte EOA address.
          example: 0x04b0...
        credentialId:
          type: string
          description: >
            Hex-encoded WebAuthn credential identifier captured at passkey
            registration. Used to

            populate `allowCredentials` so the authenticator selects the right
            passkey. Omitted for

            `ecdsa` owners.
        status:
          type: string
          enum:
            - active
            - pending
            - removed
          description: >
            Lifecycle state of this owner record. `active` owners can sign.
            `pending`

            owners are being added. `removed` owners have been revoked and are

            retained for audit.
        addedDate:
          type: string
          format: date-time
          description: Date and time when this owner was added to the wallet.
      example:
        id: 1f2e3d4c-5b6a-7980-1234-56789abcdef0
        userId: 2a3b4c5d-6e7f-8091-2345-6789abcdef01
        ownerType: passkey
        publicKey: '0x04b0a1c2d3e4f5061728394a5b6c7d8e9f00112233445566778899aabbccddeeff'
        credentialId: a1b2c3d4e5f60718
        status: active
        addedDate: '2026-06-20T14:10:00.000Z'
    DepositAddresses:
      type: object
      description: >
        Deposit addresses for routing inbound transfers to the wallet. Each key
        is

        an asset symbol (such as `USDC` or `cirBTC`) and each value is a 20-byte
        EVM

        address. Addresses are provisioned when the wallet is created and
        immutable

        thereafter.
      additionalProperties:
        type: string
      example:
        USDC: 0x5a0b4a11d3f...
        cirBTC: 0xbb81dcaf9e...
  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
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````