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

# Get integrations supported for wallet verification

> **Get the wallets and networks that can verify wallet ownership.**


---
Use this list to decide which `integrationId` and `verifyWalletOptions.networkId` to send when creating a link
token for verification. Every pair returned with `isSupported: true` is accepted by `POST /api/v1/linktoken`
when the request has `verifyWalletOptions` and no `transferOptions`; other pairs are rejected or have no way to
verify in Link. The list does not apply the wallets your Link configuration includes or excludes.



`supportedDevices` lists where Link can complete the verification: `android` and `ios` for mobile apps and
mobile browsers, `web` for desktop browsers. Ledger and Trezor list mobile devices too: on a phone, Link hands
the signing step to a desktop browser.



Filter with `integrationId` (one wallet's networks) or `networkId` (every wallet on one network). Pass both to
check one pair: the response then always holds that pair, with `isSupported` and, when it cannot be verified,
`unsupportedReason`. Lists only hold supported pairs. An id that is not a self-custody wallet or a network Mesh
knows returns 400 with `errorType` `invalidIntegrationId` or `invalidNetworkId`; when both are wrong, the message
names both and `errorType` is `invalidIntegrationId`.



This list is for verification only. `GET /api/v1/transfers/managed/integrations` lists transfer support, which
differs.



## OpenAPI

````yaml get /api/v1/wallets/verify/integrations
openapi: 3.0.1
info:
  title: Mesh Connect Integration API
  description: >-

    Mesh allows users to connect accounts of financial institutions,

    crypto exchanges, and self-custody wallets. Mesh handles credential

    validation, MFA, and error handling for each integration. After

    an account is connected, Mesh allows client applications to read holdings,

    transaction history and balances and execute crypto transfers (with user
    approval).
  version: '1.0'
servers:
  - url: https://integration-api.meshconnect.com
  - url: https://sandbox-integration-api.meshconnect.com
security:
  - Client-Secret: []
    Client-Id: []
tags:
  - name: BlockchainQuery
  - name: CatalogGasSponsorship
  - name: CatalogSubscription
  - name: TokenNetworkPairs
  - name: Integrations account information
  - name: Managed Account Authentication
    description: >-
      The recommended approach for account authentication. Front manages
      multiple authentication flows and handles all authentication steps such as
      MFA codes and OAuth redirect through our web and mobile SDKs.
  - name: Portfolio
    description: |


      ### Supported integrations:
      ```Robinhood```
      ```Coinbase```
      ```Kraken```
      ```CryptoCom```
      ```OpenSea```
      ```Binance```
      ```Gemini```
      ```OkCoin```
      ```KuCoin```
      ```CexIo```
      ```BinanceInternational```
      ```Bitstamp```
      ```GateIo```
      ```Okx```
      ```BitFlyer```
      ```Coinlist```
      ```Huobi```
      ```Bitfinex```
      ```KrakenDirect```
      ```BinanceInternationalDirect```
      ```BitfinexDirect```
      ```Bybit```
      ```Paxos```
      ```CoinbasePrime```
      ```BtcTurkDirect```
      ```KuCoinDirect```
      ```OkxOAuth```
      ```ParibuDirect```
      ```RobinhoodConnect```
      ```BlockchainCom```
      ```BitsoDirect```
      ```BinanceOAuth```
      ```BybitDirect```
      ```ParibuOAuth```
      ```BinanceTrDirect```
      ```BybitDirectMobile```
      ```Sandbox```
      ```Uphold```
      ```SandboxCoinbase```
      ```KrakenOAuth```
      ```BluvoKrakenOAuth```
      ```SandboxKrakenOAuth```
      ```DeFiWallet```
  - name: Balance
    description: |


      ### Supported integrations:
      ```Robinhood```
      ```Coinbase```
      ```Kraken```
      ```CryptoCom```
      ```Binance```
      ```Gemini```
      ```OkCoin```
      ```KuCoin```
      ```CexIo```
      ```BinanceInternational```
      ```Bitstamp```
      ```GateIo```
      ```Okx```
      ```BitFlyer```
      ```Coinlist```
      ```Huobi```
      ```Bitfinex```
      ```KrakenDirect```
      ```BinanceInternationalDirect```
      ```BitfinexDirect```
      ```Bybit```
      ```Paxos```
      ```CoinbasePrime```
      ```BtcTurkDirect```
      ```KuCoinDirect```
      ```OkxOAuth```
      ```ParibuDirect```
      ```RobinhoodConnect```
      ```BlockchainCom```
      ```BitsoDirect```
      ```BybitDirect```
      ```ParibuOAuth```
      ```BinanceTrDirect```
      ```BybitDirectMobile```
      ```Sandbox```
      ```Uphold```
      ```SandboxCoinbase```
      ```KrakenOAuth```
      ```BluvoKrakenOAuth```
      ```SandboxKrakenOAuth```
  - name: Transfers
    description: >


      ### Supported integrations:

      ```Robinhood```

      ```Coinbase```

      ```Kraken```

      ```CryptoCom```

      ```Binance```

      ```Gemini```

      ```OkCoin```

      ```KuCoin```

      ```BinanceInternational```

      ```Bitstamp```

      ```GateIo```

      ```Okx```

      ```Huobi```

      ```Bitfinex```

      ```KrakenDirect```

      ```BinanceInternationalDirect```

      ```BitfinexDirect```

      ```Bybit```

      ```Paxos```

      ```CoinbasePrime```

      ```BtcTurkDirect```

      ```ParibuDirect```

      ```RobinhoodConnect```

      ```BlockchainCom```

      ```BinanceConnect```

      ```RevolutConnect```

      ```BinancePay```

      ```BybitDirect```

      ```ParibuOAuth```

      ```PayPalConnect```

      ```CoinbaseRamp```

      ```BybitDirectMobile```

      ```Sandbox```

      ```CryptoComPay```

      ```Uphold```

      ```BinancePayOnchain```

      ```SandboxCoinbase```

      ```BybitPay```

      ```CashApp```

      ```SandboxKrakenOAuth```

      ```KrakPay```

      ```OkxPay```

      ```BybitPayPsp```

      ```DeFiWallet```



      ### Integration-specific notes:



      #### Robinhood:



      Cryptocurrency transfers should be enabled in Robinhood settings.
      Transfers are disabled by default, enabling them for end users requires a
      review from Robinhood.


      Please note:
       * `MfaCode` parameter is required to initiate a transaction in Robinhood.
       * The user's security settings should be configured to use an authenticator application.
       * Robinhood doesn't allow initiation of transactions if the authenticator application is not configured.


      #### Coinbase:



      `MfaCode` parameter should be used to initiate transactions in Coinbase.
       * If the end user's Coinbase account is configured to use text messages (SMS) for two factor authentication, the API will return `MfaRequired` status, and a text code will then be sent by Coinbase. The code is expected to be provided in the subsequent call using the `MfaCode` request field
       * If the account is configured to use an authenticator application, the API is expecting to get the code in the `MfaCode` request field.


      #### Kraken:



      Kraken requires the explicit chain name to be provided (e.g. `Dogecoin` or
      `Ethereum (ERC20)`). The list of possible chains can be obtained by
      calling `symbol/details` endpoint.


      To initiate a transaction, a Kraken Address Key name should be provided in
      `TargetAddress` field. Target address should be added using Kraken UI,
      then its name should be used.



      #### Binance:



      `Enable Withdrawals` permission should be given to the user's API key to
      initiate transfers with Binance Us.


      Binance requires adding the IP address to the list of trusted IPs to be
      able to create API keys with transfer permission.
       * Please reach out to Front to get the static IP address. This address should be provided to the end user, and the user should be instructed to add it to the list of trusted IP addresses.
       * By default, the permission to enable withdrawals is turned off. If the end user's API key does not have the permission, asset transfers will not be available.


      #### KuCoin:



      KuCoin requires adding the IP address to the list of trusted IPs to be
      able to create API keys with transfer permission.


      `Fee` parameter should be used to initiate a transaction in KuCoin.


      Please note:
       * Please reach out to Front to get the static IP address. This address should be provided to the end user, and the user should be instructed to add it to the list of trusted IP addresses.
       * All currencies have their minimum `fee` and `amount` requirements. Please use `symbol/details` endpoint to get this data for a particular symbol.
       * KuCoin requires chain name to be provided for getting deposit address or initiating a cryptocurrency transfer. Some cryptocurrencies are supported over multiple chains. It's recommended to use `symbol/details` endpoint to get the list of supported chains and show it to the end user to select a target one.


      #### BinanceInternational:



      `Enable Withdrawals` permission should be given to the user's API key to
      initiate transfers with Binance International.


      Binance requires adding the IP address to the list of trusted IPs to be
      able to create API keys with transfer permission.
       * Please reach out to Front to get the static IP address. This address should be provided to the end user, and the user should be instructed to add it to the list of trusted IP addresses.
       * By default, the permission to enable withdrawals is turned off. If the end user's API key does not have the permission, asset transfers will not be available.


      #### GateIo:



      Gate.io requires adding IP address to the list of trusted IP addresses to
      be able to initiate a cryptocurrency transfers.


      Withdrawal address should be already verified or added on the Gate.io UI
      (in mobile application or on the web site).
       * Please reach out to Front to get the static IP address for withdrawals. This address should be provided to the end user, and the user should be instructed to add it to the list of trusted IP addresses.
       * Only verified withdrawal blockchain addresses are allowed for withdrawal with Gate.io API.
       * Gate.io requires chain name to be provided for getting deposit address or initiating a cryptocurrency transfer. Some cryptocurrencies are supported over multiple chains. It's recommended to use `symbol/details` endpoint to get the list of supported chains and show it to the end user to select a target one.


      #### Huobi:



      Warning: Huobi does not refund executed deposits that are below the
      `Minimum Deposit Amount`
       * Please check the MinimumDepositAmount in Get Deposit Address response in order to avoid making a deposit below the minimum amount
       * Huobi does not allow withdrawals to addresses that are not white-listed, please add the address that you would like to withdraw to the white list of addresses through the UI so that a withrawal can be processed


      #### Bitfinex:
       * The hash of transfer is not available when making a transfer in Bitfinex. To get the hash please re-query the transfer using the transaction id.
       * Bitfinex does not separate sub-accounts when returning the list of transfers.Therefore the same list of transfers is returned for all Bitfinex sub-accounts.


      #### KrakenDirect:



      Kraken requires the explicit chain name to be provided (e.g. `Dogecoin` or
      `Ethereum (ERC20)`). The list of possible chains can be obtained by
      calling `symbol/details` endpoint.


      To initiate a transaction, a Kraken Address Key name should be provided in
      `TargetAddress` field. Target address should be added using Kraken UI,
      then its name should be used.



      #### BitfinexDirect:
       * The hash of transfer is not available when making a transfer in Bitfinex. To get the hash please re-query the transfer using the transaction id.
       * Bitfinex does not separate sub-accounts when returning the list of transfers.Therefore the same list of transfers is returned for all Bitfinex sub-accounts.
  - name: Assets
  - name: Managed Transfers
  - name: Wallets
  - name: Headless Bridging
    description: >-
      Mesh's cross-chain bridging engine as a pure API, with no Mesh-hosted UI
      or SDK. Discover bridged routes, quote a pay-in amount and generate a
      single-use deposit address that bridges funds to the destination the user
      selected. Enabled per client; see
      https://docs.meshconnect.com/resources/headless-bridging.
paths:
  /api/v1/wallets/verify/integrations:
    get:
      tags:
        - Wallets
      summary: Get integrations supported for wallet verification
      description: "**Get the wallets and networks that can verify wallet ownership.**\r\n\n\r\n---\r\nUse this list to decide which `integrationId` and `verifyWalletOptions.networkId` to send when creating a link\r\ntoken for verification. Every pair returned with `isSupported: true` is accepted by `POST /api/v1/linktoken`\r\nwhen the request has `verifyWalletOptions` and no `transferOptions`; other pairs are rejected or have no way to\r\nverify in Link. The list does not apply the wallets your Link configuration includes or excludes.\r\n\n\n\r\n`supportedDevices` lists where Link can complete the verification: `android` and `ios` for mobile apps and\r\nmobile browsers, `web` for desktop browsers. Ledger and Trezor list mobile devices too: on a phone, Link hands\r\nthe signing step to a desktop browser.\r\n\n\n\r\nFilter with `integrationId` (one wallet's networks) or `networkId` (every wallet on one network). Pass both to\r\ncheck one pair: the response then always holds that pair, with `isSupported` and, when it cannot be verified,\r\n`unsupportedReason`. Lists only hold supported pairs. An id that is not a self-custody wallet or a network Mesh\r\nknows returns 400 with `errorType` `invalidIntegrationId` or `invalidNetworkId`; when both are wrong, the message\r\nnames both and `errorType` is `invalidIntegrationId`.\r\n\n\n\r\nThis list is for verification only. `GET /api/v1/transfers/managed/integrations` lists transfer support, which\r\ndiffers."
      parameters:
        - name: IntegrationId
          in: query
          description: >-
            Only return this self-custody wallet. Use the same id you send as
            `integrationId` when creating a link token.
          schema:
            type: string
        - name: NetworkId
          in: query
          description: "Only return this network. Use the same id you send as `verifyWalletOptions.networkId` when creating a link\r\ntoken. With `integrationId` too, the response always holds that one pair, with `isSupported` and, when it\r\ncannot be verified, `unsupportedReason`."
          schema:
            type: string
      responses:
        '200':
          description: Integrations obtained.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerifyIntegrationsResponseApiResult'
              examples:
                Supported pairs:
                  value:
                    content:
                      integrations:
                        - id: 56c7bfb1-4655-4581-9cb6-4cefd87b299c
                          type: deFiWallet
                          name: Ledger
                          networks:
                            - id: 03dee5da-7398-428f-9ec2-ab41bcb271da
                              name: Bitcoin
                              chainId: '0'
                              supportedDevices:
                                - android
                                - ios
                                - web
                              isSupported: true
                              unsupportedReason: null
                        - id: 34aeb688-decb-485f-9d80-b66466783394
                          type: deFiWallet
                          name: MetaMask
                          networks:
                            - id: 03dee5da-7398-428f-9ec2-ab41bcb271da
                              name: Bitcoin
                              chainId: '0'
                              supportedDevices:
                                - web
                              isSupported: true
                              unsupportedReason: null
                            - id: e3c7fdd8-b1fc-4e51-85ae-bb276e075611
                              name: Ethereum
                              chainId: '1'
                              supportedDevices:
                                - android
                                - ios
                                - web
                              isSupported: true
                              unsupportedReason: null
                    status: ok
                    message: ''
                    errorHash: e228dbf2
                    teamCode: P4
                    errorType: ''
                Pair check that cannot be verified (integrationId and networkId):
                  value:
                    content:
                      integrations:
                        - id: 7f4307ea-58c6-4678-9eb2-fec205de5401
                          type: deFiWallet
                          name: Trust Wallet
                          networks:
                            - id: 03dee5da-7398-428f-9ec2-ab41bcb271da
                              name: Bitcoin
                              chainId: '0'
                              supportedDevices: []
                              isSupported: false
                              unsupportedReason: networkNotSupportedByWallet
                    status: ok
                    message: ''
                    errorHash: e228dbf2
                    teamCode: P4
                    errorType: ''
        '400':
          description: '`integrationId` or `networkId` is not a valid id.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResult'
              example:
                status: badRequest
                message: >-
                  integrationId '7f4307ea-58c6-4678-9eb2-fec205de5402' is not a
                  valid self-custody wallet id.
                displayMessage: >-
                  integrationId '7f4307ea-58c6-4678-9eb2-fec205de5402' is not a
                  valid self-custody wallet id.
                errorHash: 7cb19488
                teamCode: P4
                errorType: invalidIntegrationId
        '401':
          description: 'Unauthorized: Client Id or Client Secret are not correct or missing.'
          content:
            application/json:
              schema: {}
components:
  schemas:
    VerifyIntegrationsResponseApiResult:
      type: object
      properties:
        status:
          enum:
            - ok
            - serverFailure
            - permissionDenied
            - badRequest
            - notFound
            - conflict
            - tooManyRequest
            - locked
            - unavailableForLegalReasons
            - serviceUnavailable
          allOf:
            - $ref: '#/components/schemas/ApiResultStatus'
          readOnly: true
        message:
          type: string
          description: A message generated by the API
          nullable: true
        displayMessage:
          type: string
          description: User-friendly display message that can be presented to the end user
          nullable: true
        errorHash:
          type: string
          description: >-
            An error grouping hash from string components and caller
            information. Used by bugsnag on FE for correct error grouping
          nullable: true
          readOnly: true
        teamCode:
          type: string
          description: "Opaque team code for error routing. Resolved from exception origin or caller file path via CODEOWNERS.\r\nFormat: 2-character code (e.g., \"7K\", \"M2\"). Use for alerting/routing, not display."
          nullable: true
          readOnly: true
        errorType:
          type: string
          description: "Strictly-typed error type that is explaining the reason of an unsuccessful status of the operation.\r\nAll possible error types are available in the documentation."
          nullable: true
        errorData:
          nullable: true
          readOnly: true
        content:
          allOf:
            - $ref: '#/components/schemas/VerifyIntegrationsResponse'
          nullable: true
      additionalProperties: false
    ApiResult:
      type: object
      properties:
        status:
          enum:
            - ok
            - serverFailure
            - permissionDenied
            - badRequest
            - notFound
            - conflict
            - tooManyRequest
            - locked
            - unavailableForLegalReasons
            - serviceUnavailable
          allOf:
            - $ref: '#/components/schemas/ApiResultStatus'
          readOnly: true
        message:
          type: string
          description: A message generated by the API
          nullable: true
        displayMessage:
          type: string
          description: User-friendly display message that can be presented to the end user
          nullable: true
        errorHash:
          type: string
          description: >-
            An error grouping hash from string components and caller
            information. Used by bugsnag on FE for correct error grouping
          nullable: true
          readOnly: true
        teamCode:
          type: string
          description: "Opaque team code for error routing. Resolved from exception origin or caller file path via CODEOWNERS.\r\nFormat: 2-character code (e.g., \"7K\", \"M2\"). Use for alerting/routing, not display."
          nullable: true
          readOnly: true
        errorType:
          type: string
          description: "Strictly-typed error type that is explaining the reason of an unsuccessful status of the operation.\r\nAll possible error types are available in the documentation."
          nullable: true
        errorData:
          nullable: true
          readOnly: true
      additionalProperties: false
    ApiResultStatus:
      enum:
        - ok
        - serverFailure
        - permissionDenied
        - badRequest
        - notFound
        - conflict
        - tooManyRequest
        - locked
        - unavailableForLegalReasons
        - serviceUnavailable
      type: string
    VerifyIntegrationsResponse:
      type: object
      properties:
        integrations:
          type: array
          items:
            $ref: '#/components/schemas/VerifyIntegrationModelResponse'
          description: Wallets that can verify ownership on at least one network.
          nullable: true
      additionalProperties: false
    VerifyIntegrationModelResponse:
      type: object
      properties:
        id:
          type: string
          description: >-
            Integration unique identifier. Pass it as `integrationId` when
            creating a link token.
          format: uuid
        type:
          enum:
            - robinhood
            - eTrade
            - alpaca
            - tdAmeritrade
            - weBull
            - stash
            - interactiveBrokers
            - public
            - coinbase
            - kraken
            - coinbasePro
            - cryptoCom
            - openSea
            - binanceUs
            - gemini
            - cryptocurrencyAddress
            - cryptocurrencyWallet
            - okCoin
            - bittrex
            - kuCoin
            - etoro
            - cexIo
            - binanceInternational
            - bitstamp
            - gateIo
            - acorns
            - okx
            - bitFlyer
            - coinlist
            - huobi
            - bitfinex
            - deFiWallet
            - krakenDirect
            - vanguard
            - binanceInternationalDirect
            - bitfinexDirect
            - bybit
            - paxos
            - coinbasePrime
            - btcTurkDirect
            - kuCoinDirect
            - okxOAuth
            - paribuDirect
            - robinhoodConnect
            - blockchainCom
            - bitsoDirect
            - binanceConnect
            - binanceOAuth
            - revolutConnect
            - binancePay
            - bybitDirect
            - paribuOAuth
            - payPalConnect
            - binanceTrDirect
            - coinbaseRamp
            - bybitDirectMobile
            - sandbox
            - cryptoComPay
            - bybitEuDirect
            - uphold
            - binancePayOnchain
            - sandboxCoinbase
            - bybitPay
            - krakenOAuth
            - bluvoKrakenOAuth
            - cashApp
            - sandboxKrakenOAuth
            - krakPay
            - unlimit
            - alchemyPay
            - okxPay
            - bybitPayPsp
          allOf:
            - $ref: '#/components/schemas/BrokerType'
          description: Type of the integration.
        name:
          type: string
          description: Name of the integration.
          nullable: true
        networks:
          type: array
          items:
            $ref: '#/components/schemas/VerifyNetworkModelResponse'
          description: >-
            The networks this integration can verify ownership on, and the
            devices each one works on.
          nullable: true
      additionalProperties: false
    BrokerType:
      enum:
        - robinhood
        - eTrade
        - alpaca
        - tdAmeritrade
        - weBull
        - stash
        - interactiveBrokers
        - public
        - coinbase
        - kraken
        - coinbasePro
        - cryptoCom
        - openSea
        - binanceUs
        - gemini
        - cryptocurrencyAddress
        - cryptocurrencyWallet
        - okCoin
        - bittrex
        - kuCoin
        - etoro
        - cexIo
        - binanceInternational
        - bitstamp
        - gateIo
        - acorns
        - okx
        - bitFlyer
        - coinlist
        - huobi
        - bitfinex
        - deFiWallet
        - krakenDirect
        - vanguard
        - binanceInternationalDirect
        - bitfinexDirect
        - bybit
        - paxos
        - coinbasePrime
        - btcTurkDirect
        - kuCoinDirect
        - okxOAuth
        - paribuDirect
        - robinhoodConnect
        - blockchainCom
        - bitsoDirect
        - binanceConnect
        - binanceOAuth
        - revolutConnect
        - binancePay
        - bybitDirect
        - paribuOAuth
        - payPalConnect
        - binanceTrDirect
        - coinbaseRamp
        - bybitDirectMobile
        - sandbox
        - cryptoComPay
        - bybitEuDirect
        - uphold
        - binancePayOnchain
        - sandboxCoinbase
        - bybitPay
        - krakenOAuth
        - bluvoKrakenOAuth
        - cashApp
        - sandboxKrakenOAuth
        - krakPay
        - unlimit
        - alchemyPay
        - okxPay
        - bybitPayPsp
      type: string
    VerifyNetworkModelResponse:
      type: object
      properties:
        id:
          type: string
          description: >-
            The Id of the network in Mesh system. Pass it as
            `verifyWalletOptions.networkId` when creating a link token.
          format: uuid
        name:
          type: string
          description: The name of the network.
          nullable: true
        chainId:
          type: string
          description: >-
            The Inner id of the chain, used for reference. For example,
            Polygon's (MATIC) chain Id is 137.
          nullable: true
        supportedDevices:
          type: array
          items:
            $ref: '#/components/schemas/DeviceType'
          description: "Devices on which Link can verify this wallet on this network: `android` and `ios` cover native apps (including\r\nReact Native and Flutter) and mobile browsers, `web` covers desktop browsers. A device is left out when the\r\nwallet is unsupported on any of its surfaces. Empty when `isSupported` is false."
          nullable: true
        isSupported:
          type: boolean
          description: "Whether a link token can verify this wallet on this network. Always true unless both `integrationId` and\r\n`networkId` are passed, since lists only hold supported pairs."
        unsupportedReason:
          allOf:
            - $ref: '#/components/schemas/VerifyUnsupportedReason'
          description: Why the pair cannot be verified, or null when `isSupported` is true.
          nullable: true
      additionalProperties: false
    DeviceType:
      enum:
        - unknown
        - android
        - ios
        - web
      type: string
    VerifyUnsupportedReason:
      enum:
        - networkRetired
        - networkUnavailable
        - walletUnavailable
        - networkNotSupportedByWallet
        - noConnectionAvailable
        - noSupportedDevice
      type: string
      description: >-
        Why a wallet and network pair cannot be verified. When several apply,
        the first in this order is returned.
  securitySchemes:
    Client-Secret:
      type: apiKey
      description: Contact Mesh to get client Secret
      name: X-Client-Secret
      in: header
    Client-Id:
      type: apiKey
      description: Contact Mesh to get client Id
      name: X-Client-Id
      in: header

````

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