Single-thread worker in multi-thread webservice
Basically, you have the right idea: producer-consumer is probably the pattern you need. 

The way you implemented it is the problem, because so many things have gone wrong...


Queue is not thread-safe, so access to it has to be synchronized, otherwise at best you gonna be losing tasks at worst it will straight up crash your software.  
I don't see a single good reason why your ApiManager should be static. Having a mutable static dependency in code is already bad enough, having a static dependency that you also have to synchronize - is straight up awful.
Your thread is never terminated and it will keep running even if you close your application.
You have racing conditions all over the place. For example, if you have only two tasks, and the second one is added to queue after the first one is in completed but before wakeUp.Reset() is called in your loop, the second task will never be executed. 
You create IDisposable objects that you never dispose (I'm talking about wait handles).


Bottom line is: it's hard to fully understand thread-safety and it's even harder to write correct thread-safe code in complex multi-threaded environment. It is not something you can just jump into. You should definitely do some reading on how multi-threading is done in C# before attempting to implement it in your production code. Reading lock keyword documentation is a good place to start.