I think that the other group I was helping had users logging in to Discourse (through SSO, maybe?) so that they acted on their own behalf. That way you get all of the user protections afforded by Rails. Doing everything with a single admin API key seems like a recipe for disaster.
But I guess what you’d do to do what your current problem is would be to create the topic as adin and then change its ownership. That should be reasonably straightforward. (And then hope that nothing goes wrong between the start and end of the entire transaction.)
I guess another possiblity would be to create a custom plugin that added a create-as-user route (I haven’t looked at the routes I linked earlier to see if that’s already there somehow.)
But the more I think about it (knowing nothing about what you’re really doing, mind you), the more I think that you want your front end to log in as the users so that it can interact with the API as the user.