Skip to main content
Retrieve a list of orders for the authenticated user and return it as a JSON object.
only_open_orders
bool
If True, filter to only open orders (PENDING, PARTIALLY_FILLED, PARTIALLY_MERGED).
market_id
object
Optional market ID to filter orders. If 0, returns all orders.
returns
object
required
Dictionary containing orders data if found, None otherwise
Raises
  • ValueError — If API_SERVER_URL or ACCOUNT environment variable is not set
Example
>>> import os
>>> os.environ["API_SERVER_URL"] = "http://localhost:8080"
>>> os.environ["ACCOUNT"] = "0x1234..."
>>> orders = await getOrders()
>>> print(len(orders.get("orders", [])))
5
>>> open_orders = await getOrders(only_open_orders=True)
>>> print(len(open_orders.get("orders", [])))
2
async def getOrders(only_open_orders: bool=False, market_id: Union[str, int]=0) -> Optional[Dict[str, Any]]:
    base_url = os.getenv('API_SERVER_URL')
    if not base_url:
        raise ValueError('API_SERVER_URL environment variable not set')
    address = os.getenv('ACCOUNT')
    if not address:
        raise ValueError('ACCOUNT environment variable not set')
    async with httpx.AsyncClient() as session:
        client = PerpetualsClient(base_url=base_url, session=session)
        try:
            orders = await client.get_orders(address, market_id=market_id)
            if orders is not None:
                orders_list = [MessageToDict(order, always_print_fields_with_no_presence=True) for order in orders]
                if only_open_orders:
                    open_statuses = ['ORDER_STATUS_PENDING', 'ORDER_STATUS_PARTIALLY_FILLED', 'ORDER_STATUS_PARTIALLY_MERGED']
                    orders_list = [order for order in orders_list if order.get('status') in open_statuses]
                return {'orders': orders_list}
            return None
        except Exception as e:
            print(f'Error getting orders: {e}')
            print('\nTroubleshooting:')
            print('  - Is the server running?')
            print('  - Is the ACCOUNT environment variable set?')
            print('  - Is this a valid address in the database?')
            return None