Changing a user's email address via api

We have a section on our website that allows users to manage their Discourse account preferences. Most of our users only use Discourse as a sort of mailing list, so we made it easy for them to manage that activity within their website account.

I need to be able to modify the user’s email address via an api call. We do all sorts of stuff with api calls now, but I can’t figure out how to change the email address.

I’m guessing I need the update action of the UsersEmailController ( but I don’t know how to reach that endpoint.

Does anyone know the URL of the endpoint to change a user’s email address (using the api key and api username method)?


1 Like

Did you try:


with email parameter?


If you look at the routes.rb file you will see this line

put "users/:username/preferences/email" => "users_email#update", constraints: {username: USERNAME_ROUTE_FORMAT}

which means you need to PUT<username>/preferences/email

Got ninja-ed by @Falco :wink:


Yep…And I got a 200 OK, but it didn’t change the email address in Discourse.

Looks like it send an e-mail for confirmation! Did you get one :e-mail: ?

It does send a confirmation…Ah…So it works and I had it correct. I guess I’m not going crazy.

Now, is there a way to not send the confirmation and just confirm it straight away?

I don’t think so, unless you wanna mess without the api.

But confirmations are good to stop typos!


Cool…Thanks for all the help!


1 Like