Mesh Managed Transfers API
The Managed Transfers API from Mesh — 10 operation(s) for managed transfers.
The Managed Transfers API from Mesh — 10 operation(s) for managed transfers.
openapi: 3.0.1
info:
title: Mesh Connect Integration Assets Managed Transfers 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
security:
- Client-Secret: []
Client-Id: []
tags:
- name: Managed Transfers
paths:
/api/v1/transfers/managed/networks:
get:
tags:
- Managed Transfers
summary: Get networks
description: "**Get supported networks list.**\r\n<br />\r\n---\r\nGet the list of all networks supported by Mesh to perform transfers, including which tokens and integrations are supported."
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/NetworkModelResponseApiResult'
example:
content:
networks:
- tokens:
- symbol: ETH
logoUrl: https://frontuserfilecdn.azureedge.net/public/logos/tokens/ETH.svg
- symbol: USDC
logoUrl: https://frontuserfilecdn.azureedge.net/public/logos/tokens/USDC.svg
- symbol: USDT
logoUrl: https://frontuserfilecdn.azureedge.net/public/logos/tokens/USDT.svg
supportedBrokerTypes:
- deFiWallet
- robinhood
- coinbase
- kraken
- binanceInternational
- binanceUs
supportedTokens:
- ETH
- USDC
- USDT
nativeSymbol: ETH
id: e3c7fdd8-b1fc-4e51-85ae-bb276e075611
name: Ethereum
chainId: '1'
logoUrl: https://frontuserfilecdn.azureedge.net/public/logos/networks/Ethereum.svg
status: ok
message: ''
errorType: ''
'401':
description: Unauthorized
content:
application/json:
schema: {}
/api/v1/transfers/managed/integrations:
get:
tags:
- Managed Transfers
summary: Get integrations
description: "**Get supported integrations list.**\r\n<br />\r\n---\r\nGet the list of all integrations supported by Mesh to perform transfers, including which tokens and networks are supported."
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationNetworkResponseApiResult'
example:
content:
integrations:
- type: robinhood
networks:
- supportedTokens:
- USDC
- ETH
nativeSymbol: ETH
id: e3c7fdd8-b1fc-4e51-85ae-bb276e075611
name: Ethereum
chainId: '1'
logoUrl: https://frontuserfilecdn.azureedge.net/public/logos/networks/Ethereum.svg
- supportedTokens:
- MATIC
- ETH
nativeSymbol: MATIC
id: 7436e9d0-ba42-4d2b-b4c0-8e4e606b2c12
name: Polygon
chainId: '137'
logoUrl: https://frontuserfilecdn.azureedge.net/public/logos/networks/Polygon.svg
supportsOutgoingTransfers: true
supportsIncomingTransfers: true
status: ok
message: ''
errorType: ''
'401':
description: Unauthorized
content:
application/json:
schema: {}
/api/v1/transfers/managed/tokens:
get:
tags:
- Managed Transfers
summary: Get supported tokens list
description: Get the list of all tokens supported by Mesh to perform transfers, including which networks and integrations are supported.
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/TokenNetworksResponseApiResult'
example:
content:
tokens:
- token: ADA
networks:
- id: f7a660cd-bac0-4ae8-8ddb-c54d321b55dc
name: Cardano
logoUrl: https://frontuserfilecdn.azureedge.net/public/logos/networks/Cardano.svg
supportedIntegrations:
- gemini
- binanceInternational
status: ok
message: ''
errorType: ''
/api/v1/transfers/managed/verify:
get:
tags:
- Managed Transfers
summary: Verify the transfer request without authenticating the integration accounts
description: "Checks if the combination of integration ID, network ID, token is correct for transfer.\r\nChecks if the target address is in the correct format."
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/TransferVerificationRequest'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/TransferVerificationResponseApiResult'
example:
content:
status: succeeded
errorMessage: transfer request verification is successful
status: ok
message: ''
errorType: ''
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResult'
example:
status: badRequest
message: Error message
displayMessage: Optional display message
errorType: missingField
'401':
description: Unauthorized
content:
application/json:
schema: {}
/api/v1/transfers/managed/configure:
post:
tags:
- Managed Transfers
summary: Configure transfer
description: "**Get the list of networks and tokens eligible for a transfer, based on the provided request data.**\r\n<br />\r\n---\r\nTransfers can be configured either from one connected account to another connected account, or\r\nfrom a connected account to any arbitrary address or addresses.\r\n<br />\r\n* **From one connected account to another connected account:**\r\n<br />\r\nThe API client provides `FromAuthToken` that is representing the source account and `ToAuthToken` that is representing the target account. Front API maps networks and tokens supported by both accounts and returns all tokens and networks eligible for a transfer as the result.\r\n<br />\r\n* **From a connected account to any arbitrary address:**\r\n<br />\r\nThe API client provides `FromAuthToken` that is representing the source account and the list of target addresses using the `ToAddresses` field. Front API verifies the addresses and returns the list of tokens, eligible to be transferred as the result of the operation.\r\n<br /><br />\r\nReturns the list of holdings on the account that can be used to perform the transfer. Each holdings item\r\ncontains the list of supported networks that can be used to transfer the corresponding asset.\r\nEach network contains details such as gas fees and the amount eligible to be transferred."
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/ConfigureTransferRequest'
examples:
Configure with provided list of addresses:
value:
fromAuthToken: Secret authentication token
fromType: robinhood
toAddresses:
- networkId: 7436e9d0-ba42-4d2b-b4c0-8e4e606b2c12
symbol: USDT
address: '0x9Bf6207f8A3f4278E0C989527015deFe10e5D7c6'
- networkId: 0291810a-5947-424d-9a59-e88bb33e999d
symbol: USDT
address: HN7cABqLq46Es1jh92dQQisAq662SmxELLLsHHe4YWrH
- networkId: 0880db06-7c7c-4738-898f-cf74efc03c47
symbol: BTC
address: 3FZbgi29cpjq2GjdwV8eyHuJJnkLtktZc5
Configure transfer between two connected accounts:
value:
fromAuthToken: Secret authentication token
fromType: robinhood
toAuthToken: Secret authentication token
toType: coinbase
Configure with provided list of addresses, symbol and amount:
value:
fromAuthToken: Secret authentication token
fromType: robinhood
toAddresses:
- networkId: 7436e9d0-ba42-4d2b-b4c0-8e4e606b2c12
symbol: USDT
address: '0x9Bf6207f8A3f4278E0C989527015deFe10e5D7c6'
- networkId: 0291810a-5947-424d-9a59-e88bb33e999d
symbol: USDT
address: HN7cABqLq46Es1jh92dQQisAq662SmxELLLsHHe4YWrH
- networkId: 0880db06-7c7c-4738-898f-cf74efc03c47
symbol: BTC
address: 3FZbgi29cpjq2GjdwV8eyHuJJnkLtktZc5
symbol: USDT
amount: 130
fiatCurrency: USD
Configure transfer between two connected accounts, symbol, amount in fiat and preferred network:
value:
fromAuthToken: Secret authentication token
fromType: robinhood
toAuthToken: Secret authentication token
toType: coinbase
symbol: USDT
amountInFiat: 130
fiatCurrency: USD
networkId: 7436e9d0-ba42-4d2b-b4c0-8e4e606b2c12
text/json:
schema:
allOf:
- $ref: '#/components/schemas/ConfigureTransferRequest'
examples:
Configure with provided list of addresses:
value:
fromAuthToken: Secret authentication token
fromType: robinhood
toAddresses:
- networkId: 7436e9d0-ba42-4d2b-b4c0-8e4e606b2c12
symbol: USDT
address: '0x9Bf6207f8A3f4278E0C989527015deFe10e5D7c6'
- networkId: 0291810a-5947-424d-9a59-e88bb33e999d
symbol: USDT
address: HN7cABqLq46Es1jh92dQQisAq662SmxELLLsHHe4YWrH
- networkId: 0880db06-7c7c-4738-898f-cf74efc03c47
symbol: BTC
address: 3FZbgi29cpjq2GjdwV8eyHuJJnkLtktZc5
Configure transfer between two connected accounts:
value:
fromAuthToken: Secret authentication token
fromType: robinhood
toAuthToken: Secret authentication token
toType: coinbase
Configure with provided list of addresses, symbol and amount:
value:
fromAuthToken: Secret authentication token
fromType: robinhood
toAddresses:
- networkId: 7436e9d0-ba42-4d2b-b4c0-8e4e606b2c12
symbol: USDT
address: '0x9Bf6207f8A3f4278E0C989527015deFe10e5D7c6'
- networkId: 0291810a-5947-424d-9a59-e88bb33e999d
symbol: USDT
address: HN7cABqLq46Es1jh92dQQisAq662SmxELLLsHHe4YWrH
- networkId: 0880db06-7c7c-4738-898f-cf74efc03c47
symbol: BTC
address: 3FZbgi29cpjq2GjdwV8eyHuJJnkLtktZc5
symbol: USDT
amount: 130
fiatCurrency: USD
Configure transfer between two connected accounts, symbol, amount in fiat and preferred network:
value:
fromAuthToken: Secret authentication token
fromType: robinhood
toAuthToken: Secret authentication token
toType: coinbase
symbol: USDT
amountInFiat: 130
fiatCurrency: USD
networkId: 7436e9d0-ba42-4d2b-b4c0-8e4e606b2c12
application/*+json:
schema:
allOf:
- $ref: '#/components/schemas/ConfigureTransferRequest'
examples:
Configure with provided list of addresses:
value:
fromAuthToken: Secret authentication token
fromType: robinhood
toAddresses:
- networkId: 7436e9d0-ba42-4d2b-b4c0-8e4e606b2c12
symbol: USDT
address: '0x9Bf6207f8A3f4278E0C989527015deFe10e5D7c6'
- networkId: 0291810a-5947-424d-9a59-e88bb33e999d
symbol: USDT
address: HN7cABqLq46Es1jh92dQQisAq662SmxELLLsHHe4YWrH
- networkId: 0880db06-7c7c-4738-898f-cf74efc03c47
symbol: BTC
address: 3FZbgi29cpjq2GjdwV8eyHuJJnkLtktZc5
Configure transfer between two connected accounts:
value:
fromAuthToken: Secret authentication token
fromType: robinhood
toAuthToken: Secret authentication token
toType: coinbase
Configure with provided list of addresses, symbol and amount:
value:
fromAuthToken: Secret authentication token
fromType: robinhood
toAddresses:
- networkId: 7436e9d0-ba42-4d2b-b4c0-8e4e606b2c12
symbol: USDT
address: '0x9Bf6207f8A3f4278E0C989527015deFe10e5D7c6'
- networkId: 0291810a-5947-424d-9a59-e88bb33e999d
symbol: USDT
address: HN7cABqLq46Es1jh92dQQisAq662SmxELLLsHHe4YWrH
- networkId: 0880db06-7c7c-4738-898f-cf74efc03c47
symbol: BTC
address: 3FZbgi29cpjq2GjdwV8eyHuJJnkLtktZc5
symbol: USDT
amount: 130
fiatCurrency: USD
Configure transfer between two connected accounts, symbol, amount in fiat and preferred network:
value:
fromAuthToken: Secret authentication token
fromType: robinhood
toAuthToken: Secret authentication token
toType: coinbase
symbol: USDT
amountInFiat: 130
fiatCurrency: USD
networkId: 7436e9d0-ba42-4d2b-b4c0-8e4e606b2c12
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ConfigureTransferResponseApiResult'
examples:
Successful transfer configuration:
value:
content:
status: succeeded
holdings:
- symbol: USDC
availableBalance: 130
availableBalanceInFiat: 0
eligibleForTransfer: true
networks:
- name: Ethereum
id: e3c7fdd8-b1fc-4e51-85ae-bb276e075611
minimumAmount: 1
totalEstimatedTransferFeeInFiat: 1.8
estimatedNetworkGasFee:
fee: 0.000850608941007
feeCurrency: ETH
feeInFiat: 1.8
institutionTransferFee:
fee: 0
feeCurrency: ETH
feeInFiat: 0
eligibleForTransfer: true
eligibleForTransferWithFunding: false
- name: Solana
id: 0291810a-5947-424d-9a59-e88bb33e999d
minimumAmount: 1
totalEstimatedTransferFeeInFiat: 0.1
estimatedNetworkGasFee:
fee: 0.00025
feeCurrency: SOL
feeInFiat: 0.1
institutionTransferFee:
fee: 0
feeCurrency: SOL
feeInFiat: 0
eligibleForTransfer: true
eligibleForTransferWithFunding: false
eligibleForTransferWithFunding: false
status: ok
message: ''
errorType: ''
Transfer configuration with failed validation:
value:
status: badRequest
message: Either `ToAddresses` or `ToAuthToken` should be provided.
errorType: invalidField
Transfer configuration with no eligible tokens to transfer:
value:
content:
status: succeeded
holdings:
- symbol: USDC
availableBalance: 1
availableBalanceInFiat: 0
eligibleForTransfer: false
eligibleForTransferWithFunding: false
- symbol: ETH
availableBalance: 1.0e-05
availableBalanceInFiat: 0
eligibleForTransfer: false
eligibleForTransferWithFunding: false
status: ok
message: ''
errorType: ''
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResult'
example:
status: badRequest
message: Error message
displayMessage: Optional display message
errorType: missingField
'401':
description: Unauthorized
content:
application/json:
schema: {}
'403':
description: The API key used does not have write permission to call this Mesh endpoint.
content:
application/json:
schema: {}
/api/v1/transfers/managed/preview:
post:
tags:
- Managed Transfers
summary: Preview transfer
description: "**Validate and preview the transfer.**\r\n<br />\r\n---\r\nValidates the transfer, calculates the relevant amount in crypto if requested amount was in fiat and updates\r\nthe current network fee values.\r\n<br />\r\nThis endpoint uses the `NetworkId` field to specify which network will be used to perform the transfer. The target `NetworkId`\r\nshould be selected after configuring the transfer using `/configure` endpoint.\r\n<br /><br />\r\nReturns the `PreviewId` value that can be used to commit the transfer."
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/PreviewTransferRequest'
examples:
Preview with provided address:
value:
fromAuthToken: Secret authentication token
fromType: robinhood
networkId: 7436e9d0-ba42-4d2b-b4c0-8e4e606b2c12
symbol: USDT
toAddress: '0x9Bf6207f8A3f4278E0C989527015deFe10e5D7c6'
amount: 10
Preview transfer between two connected accounts:
value:
fromAuthToken: Secret authentication token
fromType: robinhood
toAuthToken: Secret authentication token
toType: coinbase
networkId: 7436e9d0-ba42-4d2b-b4c0-8e4e606b2c12
symbol: USDT
toAddress: '0x9Bf6207f8A3f4278E0C989527015deFe10e5D7c6'
amount: 10
Preview transfer between two connected accounts, using fiat amount:
value:
fromAuthToken: Secret authentication token
fromType: robinhood
toAuthToken: Secret authentication token
toType: coinbase
networkId: 7436e9d0-ba42-4d2b-b4c0-8e4e606b2c12
symbol: USDT
toAddress: '0x9Bf6207f8A3f4278E0C989527015deFe10e5D7c6'
amountInFiat: 10
text/json:
schema:
allOf:
- $ref: '#/components/schemas/PreviewTransferRequest'
examples:
Preview with provided address:
value:
fromAuthToken: Secret authentication token
fromType: robinhood
networkId: 7436e9d0-ba42-4d2b-b4c0-8e4e606b2c12
symbol: USDT
toAddress: '0x9Bf6207f8A3f4278E0C989527015deFe10e5D7c6'
amount: 10
Preview transfer between two connected accounts:
value:
fromAuthToken: Secret authentication token
fromType: robinhood
toAuthToken: Secret authentication token
toType: coinbase
networkId: 7436e9d0-ba42-4d2b-b4c0-8e4e606b2c12
symbol: USDT
toAddress: '0x9Bf6207f8A3f4278E0C989527015deFe10e5D7c6'
amount: 10
Preview transfer between two connected accounts, using fiat amount:
value:
fromAuthToken: Secret authentication token
fromType: robinhood
toAuthToken: Secret authentication token
toType: coinbase
networkId: 7436e9d0-ba42-4d2b-b4c0-8e4e606b2c12
symbol: USDT
toAddress: '0x9Bf6207f8A3f4278E0C989527015deFe10e5D7c6'
amountInFiat: 10
application/*+json:
schema:
allOf:
- $ref: '#/components/schemas/PreviewTransferRequest'
examples:
Preview with provided address:
value:
fromAuthToken: Secret authentication token
fromType: robinhood
networkId: 7436e9d0-ba42-4d2b-b4c0-8e4e606b2c12
symbol: USDT
toAddress: '0x9Bf6207f8A3f4278E0C989527015deFe10e5D7c6'
amount: 10
Preview transfer between two connected accounts:
value:
fromAuthToken: Secret authentication token
fromType: robinhood
toAuthToken: Secret authentication token
toType: coinbase
networkId: 7436e9d0-ba42-4d2b-b4c0-8e4e606b2c12
symbol: USDT
toAddress: '0x9Bf6207f8A3f4278E0C989527015deFe10e5D7c6'
amount: 10
Preview transfer between two connected accounts, using fiat amount:
value:
fromAuthToken: Secret authentication token
fromType: robinhood
toAuthToken: Secret authentication token
toType: coinbase
networkId: 7436e9d0-ba42-4d2b-b4c0-8e4e606b2c12
symbol: USDT
toAddress: '0x9Bf6207f8A3f4278E0C989527015deFe10e5D7c6'
amountInFiat: 10
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/PreviewTransferResponseApiResult'
examples:
Successful transfer preview:
value:
content:
status: succeeded
previewResult:
previewId: 29b185b1-2305-40fb-a0e2-929d61451568
previewExpiresIn: 300
fromAddress: '0x9Bf6207f8A3f4278E0C989527015deFe10e5D7c6'
toAddress: '0x326a8825472bb0f4719998e708a1eeeb4473ed1b'
symbol: USDT
amount: 10
amountInFiat: 10
totalEstimatedAmountInFiat: 11.21
networkId: e3c7fdd8-b1fc-4e51-85ae-bb276e075611
institutionTransferFee:
fee: 0
feeCurrency: USDT
feeInFiat: 0
estimatedNetworkGasFee:
fee: 1.1
feeCurrency: USDT
feeInFiat: 1.1
unitPrice: 0
customClientFee:
fee: 0.011
feeCurrency: USDT
feeInFiat: 0.011
isCustomClientFeeProvided: false
amountWithCustomClientFee: 0
isFeeIncluded: false
amountToReceive: 0
amountToReceiveInFiat: 0
status: ok
message: ''
errorType: ''
Failed transfer preview:
value:
status: badRequest
message: The specified amount is greater than the maximum amount allowed.
displayMessage: The specified amount is greater than the maximum amount allowed.
errorType: invalidField
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResult'
example:
status: badRequest
message: Error message
displayMessage: Optional display message
errorType: missingField
'401':
description: Unauthorized
content:
application/json:
schema: {}
'403':
description: The API key used does not have write permission to call this Mesh endpoint.
content:
application/json:
schema: {}
/api/v1/transfers/managed/execute:
post:
tags:
- Managed Transfers
summary: Execute transfer
description: "**Commit the previously previewed transfer.**\r\n<br />\r\n---\r\nPreviews the transfer, using the `PreviewId` value.\r\n<br />\r\nHandles multi-factor authentication codes if the account is configured to use them for additional security.\r\n<br /><br />\r\nReturns the status of the transfer and the details of the transfer if it was initiated successfully."
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/ExecuteTransferRequest'
examples:
Execute transfer:
value:
fromAuthToken: Secret authentication token
fromType: robinhood
previewId: 29b185b1-2305-40fb-a0e2-929d61451568
Execute transfer providing the MFA code:
value:
fromAuthToken: Secret authentication token
fromType: robinhood
previewId: 29b185b1-2305-40fb-a0e2-929d61451568
mfaCode: '112457'
text/json:
schema:
allOf:
- $ref: '#/components/schemas/ExecuteTransferRequest'
examples:
Execute transfer:
value:
fromAuthToken: Secret authentication token
fromType: robinhood
previewId: 29b185b1-2305-40fb-a0e2-929d61451568
Execute transfer providing the MFA code:
value:
fromAuthToken: Secret authentication token
fromType: robinhood
previewId: 29b185b1-2305-40fb-a0e2-929d61451568
mfaCode: '112457'
application/*+json:
schema:
allOf:
- $ref: '#/components/schemas/ExecuteTransferRequest'
examples:
Execute transfer:
value:
fromAuthToken: Secret authentication token
fromType: robinhood
previewId: 29b185b1-2305-40fb-a0e2-929d61451568
Execute transfer providing the MFA code:
value:
fromAuthToken: Secret authentication token
fromType: robinhood
previewId: 29b185b1-2305-40fb-a0e2-929d61451568
mfaCode: '112457'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ExecuteTransferResponseApiResult'
examples:
Successful transfer preview:
value:
content:
status: succeeded
executeTransferResult:
transferId: e332336c-de22-11ed-b5ea-0242ac120002
status: pending
statusDetails: In progress
fromAddress: '0x9Bf6207f8A3f4278E0C989527015deFe10e5D7c6'
toAddress: '0x326a8825472bb0f4719998e708a1eeeb4473ed1b'
symbol: USDT
networkName: Ethereum
networkId: e3c7fdd8-b1fc-4e51-85ae-bb276e075611
hash: '0xdcfd72635a9b16d3bc0e75311f6fe0612970e9714a1e9e93de0ea5acffc6a454'
amount: 10
amountInFiat: 10
totalAmountInFiat: 11.1
completedConfirmations: 1
institutionTransferFee:
fee: 0
feeCurrency: USDT
feeInFiat: 0
networkGasFee:
fee: 1.1
feeCurrency: USDT
feeInFiat: 1.1
status: ok
message: ''
errorType: ''
Transfer preview when MFA is required:
value:
content:
status: mfaRequired
status: ok
message: ''
errorType: ''
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResult'
example:
status: badRequest
message: Error message
displayMessage: Optional display message
errorType: missingField
'401':
description: Unauthorized
content:
application/json:
schema: {}
'403':
description: The API key used does not have write permission to call this Mesh endpoint.
content:
application/json:
schema: {}
/api/v1/transfers/managed/address/get:
post:
# --- truncated at 32 KB (115 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/mesh/refs/heads/main/openapi/mesh-managed-transfers-api-openapi.yml