curl --request POST \
--url https://api.hyperliquid.xyz/exchange \
--header 'Content-Type: application/json' \
--data '{
"action": {
"type": "usdSend",
"hyperliquidChain": "Mainnet",
"signatureChainId": "0xa4b1",
"destination": "0x1234567890123456789012345678901234567890",
"amount": "100.000000",
"time": 1705234567890
},
"nonce": 1705234567890,
"signature": {
"r": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
"s": "0xfedcba0987654321fedcba0987654321fedcba0987654321fedcba0987654321",
"v": 27
},
"vaultAddress": null
}'
{
"status": "ok",
"response": {
"type": "usdSend",
"data": {
"status": "success"
}
}
}
curl --request POST \
--url https://api.hyperliquid.xyz/exchange \
--header 'Content-Type: application/json' \
--data '{
"action": {
"type": "usdSend",
"hyperliquidChain": "Mainnet",
"signatureChainId": "0xa4b1",
"destination": "0x1234567890123456789012345678901234567890",
"amount": "100.000000",
"time": 1705234567890
},
"nonce": 1705234567890,
"signature": {
"r": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
"s": "0xfedcba0987654321fedcba0987654321fedcba0987654321fedcba0987654321",
"v": 27
},
"vaultAddress": null
}'
{
"status": "ok",
"response": {
"type": "usdSend",
"data": {
"status": "success"
}
}
}
action
(object, required) — The USD send action object containing:
type
(string) — Must be "usdSend"
hyperliquidChain
(string) — "Mainnet"
for mainnet, "Testnet"
for testnetsignatureChainId
(string) — Chain ID used for signing in hex format (e.g., "0xa4b1"
for Arbitrum)destination
(string) — Recipient address in 42-character hexadecimal formatamount
(string) — Amount of USDC to send (e.g., "100.5"
for 100.5 USDC)time
(number) — Current timestamp in milliseconds (must match nonce)nonce
(number, required) — Current timestamp in milliseconds (must match action.time)
signature
(object, required) — EIP-712 signature of the action
{
"types": {
"HyperliquidTransaction:UsdSend": [
{"name": "hyperliquidChain", "type": "string"},
{"name": "destination", "type": "string"},
{"name": "amount", "type": "string"},
{"name": "time", "type": "uint64"}
]
},
"primaryType": "HyperliquidTransaction:UsdSend",
"domain": {
"name": "HyperliquidSignTransaction",
"version": "1",
"chainId": 42161,
"verifyingContract": "0x0000000000000000000000000000000000000000"
},
"message": {
"hyperliquidChain": "Mainnet",
"destination": "0x...",
"amount": "100.5",
"time": 1234567890123
}
}
status
— "ok"
if successfulresponse
— Contains transfer details:
type
— "default"
curl -X POST https://api.hyperliquid.xyz/exchange \
-H "Content-Type: application/json" \
-d '{
"action": {
"type": "usdSend",
"hyperliquidChain": "Mainnet",
"signatureChainId": "0xa4b1",
"destination": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0",
"amount": "100.5",
"time": 1234567890123
},
"nonce": 1234567890123,
"signature": {...}
}'
{
"status": "ok",
"response": {
"type": "default"
}
}
time
parameter in the action must exactly match the nonce
parameter. This ensures signature uniqueness and prevents replay attacks.USDC transfer result
The response is of type object
.