Initiate a transfer from a Link account
The destination kind is selected by destination.kind and dispatched
server-side. Supported kinds today: on-chain address ('address') and
BitGo wallet ('wallet').
Path Params
-
enterpriseIdstring requiredYour enterprise id. -
accountIdstring requiredThe source Link account id.
Header Params
-
user-idstring requiredUser id of the user making the request.
Body Params
object
(genericAsset, network) pair), the optional venue sub-account
bucket, and the discriminated destination describing where the funds
should land.-
externalIdstring requiredClient-supplied idempotency key, scoped to the source
accountId.Two requests with the same
externalIdand identical hard fields (amount, asset, network, destination, …) resolve to the sameLinkTransfer— the second call is reconciled against the first and the venue is not charged twice. A retry that disagrees on any hard field returns 409TransferIdempotencyConflict.Required. Callers should generate a stable identifier (e.g. UUIDv4) per logical transfer and reuse it across retries.
-
amountstring requiredAmount to withdraw in Big Units (always positive — direction is implied). -
genericAssetstring requiredGeneric asset symbol (chain-agnostic, e.g.usdc). Paired withnetworkthe service resolves a venue-specific raw asset. Using a generic-asset + network pair (rather than a BitGo concrete symbol) lets the endpoint support assets BitGo doesn't yet carry a concrete symbol for. -
accountSubTypestringOptional venue sub-account / bucket (e.g.SPOTvsMARGIN). Required for venues that hold balances across multiple sub-types where the caller needs to disambiguate which bucket to debit. When omitted, the venue's default sub-account is used. -
destinationobject requiredDestination — discriminated bykind. SeeTransferDestination.ONE OF
-
kindstring enum requiredaddress -
toAddressstring required -
networkstring requiredNetwork identifier (e.g.ethereum,bitcoin). -
memostring
-
kindstring enum requiredwallet -
walletIdstring required -
networkstring requiredNetwork identifier (e.g.ethereum,bitcoin).
-
kindstring enum requiredaccount -
accountIdstring required -
accountSubTypestring
-
-
venueOtpstringVenue-specific one-time password (TOTP code). Required only when the venue has OTP withdrawal protection enabled. When omitted and the venue requires OTP, the transfer is created withstatus: "failed_retriable"andreason.code: "OtpRequired". Call the retry endpoint with a fresh code to proceed.
Responses
201
Created
Response Body
object
-
idstring required -
accountIdstring required -
statusstring enum requiredpending_policy_evaluationprocessingpending_approvalpendingcompletedfailedfailed_retriablecanceledrejected -
amountstring required -
genericAssetstring -
rawAssetstring required -
displayAssetstring required -
rawNetworkstring -
fromAssetstring -
fromNetworkstring -
fromIdstring -
fromTypestring enumaddressbitgo_walletlink_accountvenue_account -
toAssetstring -
toNetworkstring -
toIdstring -
toTypestring enumaddressbitgo_walletlink_accountvenue_account -
initiatedBystring -
fromNamestring -
toNamestring -
fromVenueIdstring -
toVenueIdstring -
accountSubTypestringNormalized sub-account-type for the transfer's owning Link account. Read from the Link DB column populated by the normalized-transfers Kafka consumer. Absent when the upstream message omitted a sub-type. For pass-through values (no matching venue-config entry), this carries the raw venue label andrawAccountSubType/accountSubTypeLabelare absent. -
rawAccountSubTypestringVenue-raw sub-type label, projected from venue config. Absent for pass-through values. -
accountSubTypeLabelstringHuman-readable sub-type display label, projected from venue config. Absent for single-sub-type venues or pass-through values. -
fromAccountSubTypestringSource-leg normalized sub-account-type. Only set forlink_accountlegs that ingested with a sub-type. -
fromRawAccountSubTypestring -
fromAccountSubTypeLabelstring -
toAccountSubTypestringDestination-leg normalized sub-account-type. Only set forlink_accountlegs that ingested with a sub-type. -
toRawAccountSubTypestring -
toAccountSubTypeLabelstring -
cryptoDetailobjectCrypto detail response for a transfercryptoDetail object
-
confirmationsnumber -
createdAtstring date-time required -
feeAmountstring -
feeAssetstring -
feeNetworkstring -
feeRawAssetstring -
feeRawNetworkstring -
fromAddressstring -
hashstring required -
idstring required -
linkTransferIdstring required -
statusstring enum requiredunconfirmedconfirmedfailedcanceledunknown -
toAddressstring -
updatedAtstring date-time required
-
-
bitgoDetailobjectBitGo detail response for a transferbitgoDetail object
-
bitgoWalletAddressstring -
createdAtstring date-time required -
evaluationIdstring -
idstring required -
linkTransferIdstring required -
pendingApprovalIdstring -
transactionRequestIdstring -
transferIdstring -
updatedAtstring date-time required -
walletIdstring
-
-
venueDetailobjectVenue detail response for a transfervenueDetail object
-
createdAtstring date-time required -
idstring required -
linkTransferIdstring required -
updatedAtstring date-time required -
venueCreatedDatestring date-time required -
venueModifiedDatestring date-time required -
venueTransactionIdstring -
venueTransferIdstring
-
-
reasonobjectNormalized failure context. Set whenstatusisfailed(terminal) orfailed_retriable(the venue rejected this attempt but the same transfer can be retried under the sameexternalIdonce external state changes).codeis a stable string the caller can branch on;messageis a human-readable description from the venue.reason object
-
codestring required -
messagestring required
-
-
sortTimestampstring date-time -
createdAtstring date-time required -
updatedAtstring date-time required
401
Unauthorized
Response Body
object
-
errorNamestring required -
errorstring required
403
Forbidden
Response Body
object
-
errorNamestring required -
errorstring required
404
Not Found
Response Body
object
-
errorNamestring required -
errorstring required
409
Conflict
Response Body
object
-
errorNamestring required -
errorstring required
422
Unprocessable Entity
Response Body
object
-
errorNamestring required -
errorstring required
500
Internal Server Error
Response Body
object
-
errorNamestring required -
errorstring required