@@ -97,32 +97,50 @@ async def create_order(
9797 order_count: Total number of orders to execute
9898 frequency: Time between each order in seconds (as string, e.g., "3600" for hourly)
9999 payer: Optional payer wallet address for gasless (defaults to user)
100- min_out_amount: Optional minimum output amount per order
101- max_out_amount: Optional maximum output amount per order
100+ min_out_amount: Optional minimum output amount per order (as price, not amount)
101+ max_out_amount: Optional maximum output amount per order (as price, not amount)
102102 start_at: Optional start time in unix seconds (as string)
103103
104104 Returns:
105105 RecurringOrderResponse with transaction to sign
106106 """
107+ # Build the time-based order params per Jupiter API spec
108+ time_params : Dict [str , Any ] = {
109+ "inAmount" : int (in_amount ),
110+ "numberOfOrders" : int (order_count ),
111+ "interval" : int (frequency ),
112+ "minPrice" : None ,
113+ "maxPrice" : None ,
114+ "startAt" : None ,
115+ }
116+
117+ # Handle optional price bounds
118+ if min_out_amount :
119+ try :
120+ time_params ["minPrice" ] = float (min_out_amount )
121+ except (ValueError , TypeError ):
122+ pass
123+ if max_out_amount :
124+ try :
125+ time_params ["maxPrice" ] = float (max_out_amount )
126+ except (ValueError , TypeError ):
127+ pass
128+ if start_at :
129+ try :
130+ time_params ["startAt" ] = int (start_at )
131+ except (ValueError , TypeError ):
132+ pass
133+
107134 body = {
108135 "user" : user ,
109136 "payer" : payer or user ,
110137 "inputMint" : input_mint ,
111138 "outputMint" : output_mint ,
112139 "params" : {
113- "depositAmount" : in_amount ,
114- "orderCount" : order_count ,
115- "frequency" : frequency ,
140+ "time" : time_params ,
116141 },
117142 }
118143
119- if min_out_amount :
120- body ["params" ]["minOutAmount" ] = min_out_amount
121- if max_out_amount :
122- body ["params" ]["maxOutAmount" ] = max_out_amount
123- if start_at :
124- body ["params" ]["startAt" ] = start_at
125-
126144 try :
127145 async with httpx .AsyncClient (timeout = 30.0 ) as client :
128146 response = await client .post (
0 commit comments