Skip to content

Get Withdrawable Amounts

Query withdrawable amounts for one or more collateral symbols on the authenticated subaccount.

Endpoint

POST https://papi.synthetix.io/v1/trade

Request

Request Format

{
  "params": {
    "action": "getWithdrawableAmounts",
    "subAccountId": "1867542890123456789",
    "symbols": ["USDT", "WETH"]
  },
  "expiresAfter": 1704153600,
  "signature": {
    "v": 28,
    "r": "0x19480589384695193600abcdef19480589384695193600abcdef19480589384695193600abcdef19480589384695193600abcdef",
    "s": "0xabcdef19480589384695193600abcdef19480589384695193600abcdef19480589384695193600abcdef19480589384695193600"
  }
}

Request Parameters

ParameterTypeRequiredDescription
paramsobjectYesRequest parameters wrapper
params.actionstringYesMust be "getWithdrawableAmounts"
params.subAccountIdstringYesSubAccount ID to query
params.symbolsstring[]YesCollateral symbols to query. Must include 1-100 symbols
ParameterTypeRequiredDescription
nonceuint64Yes*Positive integer nonce (must be incrementing and unique per request)
signatureobjectYesEIP-712 signature object
expiresAfteruint64NoUnix milliseconds expiration timestamp (5x rate limit on stale cancels)

:::info Common Parameters These are top-level request parameters. The subAccountId parameter is specified within the params object (see each endpoint's parameter table). :::

:::info SubAccountAction Endpoints Endpoints using SubAccountAction signing (getPositions, getOpenOrders, getOrderHistory, getTrades, getFundingPayments, getSubAccount, getSubAccounts, getDelegatedSigners, getBalanceUpdates, getWithdrawableAmounts) do not require the nonce parameter. Only signature and optional expiresAfter are needed. :::

Response

Success Response

{
  "status": "ok",
  "response": {
    "items": [
      {
        "symbol": "USDT",
        "withdrawableAmount": "995.00",
        "quantity": "1000.00",
        "pendingWithdraw": "0",
        "withdrawFee": "5.00"
      }
    ],
    "totalWithdrawableUsdt": "995.00"
  },
  "request_id": "5ccf215d37e3ae6d"
}

Response Fields

FieldTypeDescription
itemsarrayPer-collateral withdrawable amounts
items[].symbolstringCollateral symbol
items[].withdrawableAmountstringAmount currently withdrawable for this collateral
items[].quantitystringCurrent collateral quantity
items[].pendingWithdrawstringAmount already pending withdrawal
items[].withdrawFeestringWithdrawal fee for this collateral
totalWithdrawableUsdtstringAggregate USD-equivalent withdrawable value

Error Response

{
  "status": "error",
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "At least one symbol is required"
  },
  "request_id": "5ccf215d37e3ae6d"
}

Implementation Notes

  • Uses SubAccountAction EIP-712 signing with action: "getWithdrawableAmounts"
  • symbols must be non-empty and cannot exceed 100 entries
  • Requests can return HTTP 400 when the account is in liquidation

Signing

All trading methods are signed using EIP-712. Each successful trading request will contain:

  • A piece of structured data that includes the sender address
  • A signature of the hash of that structured data, signed by the sender

For detailed information on EIP-712 signing, see EIP-712 Signing.

Nonce Management

The nonce system prevents replay attacks and ensures order uniqueness:

  • Use any positive integer as nonce
  • Each nonce must be greater than the previous one (incrementing)
  • Date.now() is a convenient option, not a requirement
  • If nonce conflicts occur, increment by 1 and retry

:::note SubAccountAction Exception SubAccountAction endpoints (getPositions, getOpenOrders, getOrderHistory, getTrades, getFundingPayments, getSubAccount, getSubAccounts, getDelegatedSigners, getBalanceUpdates, getWithdrawableAmounts) do not require a nonce. Only the signature and optional expiresAfter parameters are needed. :::

Error CodeDescriptionRetryable
UNAUTHORIZEDEIP-712 signature validation failedNo
VALIDATION_ERRORRequest validation failedNo
MISSING_REQUIRED_FIELDRequired field is missingNo
INVALID_FORMATField format is invalidNo
INVALID_VALUEInvalid parameter valueNo
RATE_LIMIT_EXCEEDEDToo many requests in time windowYes
INSUFFICIENT_MARGINNot enough margin for tradeNo
ORDER_NOT_FOUNDOrder does not existNo
OPERATION_TIMEOUTOperation timed outYes