401 access denied in /order/placeorder

I am using /order/placeorder and this is what my request body looks like
{"accountSpec": "DEMO312394", "accountId": ID, "action": "Buy", "symbol": "ESH22", "orderQty": 1, "orderType": "Limit", "price": 4570, "isAutomated": true, "timeInForce": "GTC"}
I am getting the following back
{'failureReason': 'UnknownReason', 'failureText': 'Access is denied'}

I have already given full permission to orders in the api

I have tried getting token from both demo.tradovateapi.com/v1/auth/accesstokenrequest and demo-api.tradovate.com/v1/auth/accesstokenrequest

All ready apis are working but write apis are not working

If you are getting a 401 error, it most likely has something to do with your authorization token.

Try cloning this git repo and entering your user credentials. There is a boilerplate placeOrder template that should give you a 200 response.

As for the startOrderStrategy endpoint (productFind too!), it looks like there is a bug in submitting orders through the WebSocket. But you should be fine with orders fetched via POST through the REST URL.

Hopefully they will fix the bracket order bug soon, because it looks like it’s been an issue for several months now.


After looking at it again, productFind actually is functional, but should be queried using GET from the REST API and not through the WebSocket. Also, it is very sensitive to product strings, which is why I was getting errors. It only takes in the prices name of the product, not the contract type.

For example, it will return an error if you search for ESH2, and only accept ES.

You would think that productSuggest would have some error checking and return a list of suggestions (I don’t know what else you would use it for), but I implemented my own error checker to clean the strings being submitted to productFind, so that works for me.

Thanks, using contractid instead of ESH22 worked for me. They need better error handling.

I am not able to put two brackert in /order/placeoso, only 1 bracket works

I read some where else you were having some issue in placing sso with brackets.

Any suggested work around for the above issue?

Haha only orders are going through in demo environment but not in live environment

I haven’t tried it yet, but from what you are asking, you will probably need to put it in as two separate orders.


I think I misunderstood what you meant. Like I said, I haven’t tried it, but the issue I was having was placing orders through the web socket, which doesn’t even look like it is functioning right now. No quote stream or user sync events coming through. Won’t be able to check anything it is up again.

Got it, thanks for the help, finally I was able to get the live end point working
live-api.tradovate.com worked for me but live.tradovateapi.com wasn’t working for some reason

Glad to hear, didn’t even know that URL existed!

Also, an update, that the web socket was fine… it was my brain that was not functioning then.