How to know if create new order is filled or not?

As I checked the response for Create Order API, it doesn’t return any status of the order like if it’s still open or filled or partially filled. This just says to return success or failure. How do I know if the limit order is filled?

Use the Get Order endpoint of the Advanced Trade API to get the completion percentage data point of your order.

https://docs.cloud.coinbase.com/advanced-trade-api/reference/retailbrokerageapi_gethistoricalorder

Below is an example output of an open order using the endpoint mentioned above.

{'order': {'order_id': 'fc4e5206-88c7-48c3-4488-58c664231e70', 'product_id': 'ETH-USD', 'user_id': 'a3a4ba9c-5c07-5c3e-a154-6fec0162907a', 'order_configuration': {'limit_limit_gtc': {'base_size': '0.005', 'limit_price': '2002.22', 'post_only': False}}, 'side': 'SELL', 'client_order_id': '2948713a-e609-11ea-8b50-00133e3e30a1', 'status': 'OPEN', 'time_in_force': 'GOOD_UNTIL_CANCELLED', 'created_time': '2023-04-28T23:05:00.000069Z', 'completion_percentage': '0', 'filled_size': '0', 'average_filled_price': '0', 'fee': '', 'number_of_fills': '0', 'filled_value': '0', 'pending_cancel': False, 'size_in_quote': False, 'total_fees': '0', 'size_inclusive_of_fees': False, 'total_value_after_fees': '0', 'trigger_status': 'INVALID_ORDER_TYPE', 'order_type': 'LIMIT', 'reject_reason': 'REJECT_REASON_UNSPECIFIED', 'settled': False, 'product_type': 'SPOT', 'reject_message': '', 'cancel_message': '', 'order_placement_source': 'RETAIL_ADVANCED', 'outstanding_hold_amount': '0.005', 'is_liquidation': False}}

Let me know if you need more assistance in using this endpoint. The order_id and other information in this example have been scrambled for obscuration.

Thanks for your reply. That means I have to make one more call just to get status, which is definitely not very efficient as compared to Coinbase Pro APIs, which gives the status back in response to the ‘Create Order’ call.

Hi @SamRich

The reason status was initially not returned in the CreateOrder response is because to return a response as soon as possible to the user and to let the user know that we’ve received their request and the order is successfully being processed.

We hope this is helpful. Please let us know if you have any questions.