How can i use IFTTT -> HA MQTT without http.api_password?

NOW I’m using with web request
https://domain/api/services/mqtt/publish?api_password=xxxx
POST
application/json
{“payload”: “aaa”, “topic”: “bbb”, “retain”: “True”}

How can i use IFTTT -> HA MQTT without http.api_password ?

You can use webhooks, which is an alternative to exposing your api password in your URL. As a matter of fact, I think api password method will be going away in the future, so you should start with Webhooks as soon as you can. BTW, you’ll need to use Nabu Casa, but its well worth it.

https://www.nabucasa.com/config/webhooks/

IFTTT doesn’t support MQTT directly, so you’ll need something that converts HTTP requests from IFTTT into MQTT messages for HA. There are a few options available, including Nabu Casa as mentioned. I like to keep as much in my control as possible, so I use a separate Node Red instance that does this and nothing else, given it needs to be accessible from the Internet for IFTTT.

Do you mind sharing your node-red setup for this ifttt to mqtt bridge?

There’s not really any setup to share. I installed a separate stand-alone Node Red (I chose to do it in a docker container) and exposed it to the Internet. This could have been done in the HA Node Red add-on, but I wanted a bit more isolation (if only in my head). Don’t forget to secure Node Red’s admin page with a password.

Then I used an HTTP-in node to receive an IFTTT request with url “/light” (for example), followed by an HTTP Auth node (node-red-contrib-httpauth) to validate a username/password. Then the webhook in IFTTT is

http://username:password@your-exposed-domain:1881/light?entity_id=light.kitchen&action=on

Where username, password, and your-exposed-domain are the values you configured. Node Red receives the query string as JSON, and these can then be passed to an MQTT out node.