Skip to main content
POST
cURL

Overview

Generate a signed authorization to claim scheduled withdrawals from the vault. This is step 2 of the two-phase withdrawal process. The authorization is valid for 30 seconds and can only be used once. It allows the user to claim up to their total unclaimed withdrawal amount.
To avoid ambiguity, we denote the smallest possible multiple of USDC (0.000001 USDC) as one uusdc, which stands for µUSDC (micro-USDC), and denote the smallest possible multiple of a contract (0.01 contract) as one ccontract (centicontract).User-facing USDC balances are specified as fixed-point strings (e.g. "1.2625" for USDC). Contract quantities in the API and SDK are specified as integer ccontracts strings (e.g. "1050" for 10.50 contracts at precision 2).

Withdrawal Flow

Bison uses a two-phase withdrawal process:
  1. Schedule (/schedule-withdraw): User signs a message to request a withdrawal for a specific amount
  2. Claim (/get-withdraw-authorization + on-chain tx): User gets authorization and executes the withdrawal on-chain
This endpoint handles step 2 - generating the authorization signature for claiming.

Request Body

string
required
Chain to claim withdrawals on. One of base or bsc.
string
required
User’s Ethereum wallet address (checksummed or lowercase).

Response

string
Unique authorization identifier used to prevent replay attacks.
string
EIP-712 signature for the withdrawal authorization that must be submitted to the vault contract.
number
Unix timestamp when the authorization expires (30 seconds from creation).
string
Total amount available to claim in µUSDC (integer string). This is the sum of all unclaimed scheduled withdrawals.

Error Responses

Returned when the user has no unclaimed withdrawals available.
Returned when the user already has an unexpired claim authorization.
Returned when authorization generation fails.

Example Request

Example Response

Usage Flow

  1. Schedule Withdrawals: Use /schedule-withdraw to request withdrawal(s)
  2. Check Status: Use /pending-withdraws/{userAddress} to see when withdrawals become unclaimed
  3. Get Authorization: Call this endpoint to get claim signature
  4. Execute Claim: Call withdrawUSDC on the vault contract with:
    • uuid: Unique authorization ID
    • usdcAmount: Amount to withdraw (≤ maxWithdrawAmount)
    • userAddress: User’s wallet address
    • expiry: Expiration timestamp
    • signature: EIP-712 signature

Important Notes

  • Authorization expires in 30 seconds
  • Each authorization can only be used once (replay protection via claim locks)
  • User must have scheduled withdrawals in unclaimed status
  • Multiple scheduled withdrawals are batched into a single claim
  • Partial claims are supported - withdraw any amount up to maxWithdrawAmount
  • After claiming, the user receives USDC directly to their wallet

Body

application/json
chain
enum<string>
required

Chain to execute the action on; one of: base, bsc

Available options:
base,
bsc
Example:

"base"

userAddress
string
required

User wallet address

Pattern: ^0x[a-fA-F0-9]{40}$
Example:

"0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"

Response

Withdraw authorization generated successfully

uuid
string
required

Unique authorization ID

signature
string
required

EIP-712 signature for the authorization

expiresAt
number
required

Unix timestamp when authorization expires

maxWithdrawAmount
string
required

Total amount available to withdraw in µUSDC