When you pass in a symbol, the symbol has to be placed in a context.
http://reference.wolfram.com/language/tutorial/Contexts.html
If you run Context on eq, you'll see some weird stuff. Basically, the input gets put in a randomized context by default so that it won't potentially conflict with anything defined in the Global context.
So, what needs to happen is that we to ensure that everything is in the "right" context, the "Global`" context. The documentation for MathExpression shows how to do this, but the details are still a bit fuzzy in the documentation. Here is what I would do:
CloudDeploy[APIFunction[{"eq" ->
Interpreter[Restricted["MathExpression", All, Automatic, "Global`"]]},
Integrate[#eq, x] &]]
So instead of just "MathExpression", I've written out an entire Interpreter expression. This InterpreterExpression uses a syntax that allows it to define what context the resulting symbols should be put into.