I have been working on a subflow (WIP) that utilises an AI integration built around the Pollinations API. This API is completely free to use - without authication/keys and gives various capabilities with many models:
- Text to Text
- Text to Text including reasoning
- Text to Image (image generation)
- Text to Audio
- Audio to Text (Transcription)
- Image to Text (image description)
They obviously have rate limits (included in the subflow) and heavy caching to make it financially possible (some results contain advertisements - subflow removes them). For text it is 1req/3s and for images 1req/5s. Their API is compatible with OpenAI, although the responses are a bit different.
To give an example how AI can work in conjunction with node-red:
I have a directory with movies, the filenames are messed up and my media player is very specific with filenames so they need to be formatted/renamed in a certain way for the library to scan them. I provide the AI with the filenames and provide a system prompt. The system prompt tells the AI how it needs to behave and respond. You can be very specific, ie. if you want json response, it generates json.
Example renaming movie files and provide synopsis
system_prompt
:
# You are a movie expert and you know everything about audio and video formats
### The user will provide you a list of movie filenames.
### These filenames need to be renamed in a specific format.
examples:
- Movie title (year).2160p.dv.dolby.5.1.mkv
- Star Wars Episode VIII - The Last Jedi (2017).1080p.dts.5.1.mkv
- 1917 (2019).2160p.hdr.truehdatmos.7.1.mkv
# Rules:
##### 7.1 and DTS HD MA are labelled as 'truehdatmos', do not use ddp.
##### if the audio label does not exist, omit it.
##### remove strange characters from the title, single quotes from begin and end should be removed
##### include a short movie synopis if available, else omit it, make sure not to hallucinate
### You will respond in json using the following properties:
{
original_filename: ''
new_filename: '',
movie_title:'',
synopis: ''
}
### You will provide an array of objects.
### only return json, do not include markdown formatting.
My prompt
(this could come from a directory listing)
The_Last_Voyage_of_the_Demeter_2023_UHD_BluRay_2160p_DDP_7_1_DV_HDR_x265-hallowed
'TRON_ Legacy (2010) 1080p DTS-HD MA 5_1 NL Subs x264'
'War Pony (2022)'
Result:
[
{
"original_filename": "The_Last_Voyage_of_the_Demeter_2023_UHD_BluRay_2160p_DDP_7_1_DV_HDR_x265-hallowed",
"new_filename": "The Last Voyage of the Demeter (2023).2160p.truehdatmos.mkv",
"movie_title": "The Last Voyage of the Demeter",
"synopis": "The terrifying journey of the doomed ship Demeter, transporting Dracula from Transylvania to England."
},
{
"original_filename": "'TRON_ Legacy (2010) 1080p DTS-HD MA 5_1 NL Subs x264'",
"new_filename": "TRON Legacy (2010).1080p.truehdatmos.mkv",
"movie_title": "TRON Legacy",
"synopis": "A young man enters a digital world to find his father and end the control of a tyrannical program."
},
{
"original_filename": "'War Pony (2022)'",
"new_filename": "War Pony (2022).mkv",
"movie_title": "War Pony",
"synopis": "Two Native American boys try to navigate a troubled life on the reservation while finding friendship and hope."
}
]
generate image:
For fun I can plug this into an image generator:
prompt
:
Create a movie cover.
Title: TRON Legacy
Synopsis: A young man enters a digital world to find his father and end the control of a tyrannical program.
Home automation control
system_prompt
:
# You are a home automation expert.
### The user will provide you with information from devices that they want to control.
### This could be opening of curtains, awning, setting brightness of a lamp, turning on/off of lamps, turn on the heating, setting the tempature etc.
### You will respond in json using the following properties:
{
device_name: '' // when specified - livingroom lamp etc.
device: '', // lamp, heating etc
control: '' // brightness, tempature, on, off etc
value: // int or float - if available
unit: // %, C etc
}
## If the user asks to set a value, assume that the device is turned off and include a separate object to turn the device.
### You will provide an array of objects, each device and each action separately.
## Make sure to only respond with json, do not include markdown formatting.
--
prompt
:
Set the temperature to 21c, turn on the livingroom lights and close the curtains
--
result:
[
{"device":"heating","control":"tempature","value":21,"unit":"C"},
{"device":"heating","control":"on"},
{"device_name":"livingroom lights","device":"lamp","control":"on"},
{"device":"curtains","control":"close"}
]
For now, only text to text (no reasoning) and text to image works.
Note
Each AI model responds differently, some are more specialized in coding, others in general knowledge, you will have to experiment with different models. OpenAI GPT4.1 mini is quite allround and very fast.
Example flows:
[{"id":"e9d49572657b6dba","type":"subflow","name":"Pollinations AI","info":"","category":"AI","in":[{"x":80,"y":80,"wires":[{"id":"92aabdad2613b573"}]}],"out":[{"x":1470,"y":40,"wires":[{"id":"085cb7b5be7baf60","port":0},{"id":"66d19dc0201e90b6","port":0}]},{"x":1500,"y":140,"wires":[{"id":"e896f584e145b8ca","port":0}]}],"env":[{"name":"action","type":"str","value":"","ui":{"icon":"font-awesome/fa-question-circle","label":{"en-US":"Action"},"type":"select","opts":{"opts":[{"l":{"en-US":"Select AI action type"},"v":""},{"l":{"en-US":"Text to text"},"v":"text_to_text"},{"l":{"en-US":"Text to text with reasoning"},"v":"text_to_text_reason"},{"l":{"en-US":"Text to image"},"v":"text_to_image"},{"l":{"en-US":"Text to audio"},"v":"text_to_audio"},{"l":{"en-US":"Image to text"},"v":"image_to_text"},{"l":{"en-US":"Audio to text"},"v":"audio_to_text"}]}}},{"name":"text_model","type":"str","value":"","ui":{"icon":"font-awesome/fa-comment-o","label":{"en-US":"Text model"},"type":"select","opts":{"opts":[{"l":{"en-US":"Select text model"},"v":""},{"l":{"en-US":"OpenAI GPT-4.1-nano"},"v":"openai"},{"l":{"en-US":"OpenAI GPT-4.1 mini"},"v":"openai-large"},{"l":{"en-US":"Qwen 2.5 Coder 32B"},"v":"qwen-coder"},{"l":{"en-US":"Llama 3.3 70B"},"v":"llama"},{"l":{"en-US":"Llama 4 Scout 17B"},"v":" llamascout"},{"l":{"en-US":"Mistral Small 3"},"v":"mistral"},{"l":{"en-US":"Unity Mistral Large"},"v":"unity"},{"l":{"en-US":"Midijourney"},"v":"midijourney"},{"l":{"en-US":"Rtist"},"v":"rtist"},{"l":{"en-US":"SearchGPT"},"v":"searchgpt"},{"l":{"en-US":"Evil"},"v":"evil"},{"l":{"en-US":"Phi-4 Instruct"},"v":"phi"}]}}},{"name":"reasoning_model","type":"str","value":"","ui":{"icon":"font-awesome/fa-commenting-o","label":{"en-US":"Reasoning model"},"type":"select","opts":{"opts":[{"l":{"en-US":"Select reasoning model"},"v":""},{"l":{"en-US":"OpenAI o4-mini"},"v":"openai-reasoning"},{"l":{"en-US":"DeepSeek-R1 Distill Qwen 32B"},"v":"deepseek-reasoning"},{"l":{"en-US":"DeepSeek R1 - Llama 70B"},"v":"deepseek-reasoning-large"}]}}},{"name":"reasoning_effort","type":"str","value":"low","ui":{"icon":"font-awesome/fa-commenting-o","label":{"en-US":"Reasoning effort (o4-mini)"},"type":"select","opts":{"opts":[{"l":{"en-US":"low"},"v":"low"},{"l":{"en-US":"medium"},"v":"medium"},{"l":{"en-US":"high"},"v":"high"}]}}},{"name":"text_to_audio_model","type":"str","value":"","ui":{"icon":"font-awesome/fa-file-audio-o","label":{"en-US":"Audio voice"},"type":"select","opts":{"opts":[{"l":{"en-US":"alloy"},"v":"alloy"},{"l":{"en-US":"echo"},"v":"echo"},{"l":{"en-US":"fable"},"v":"fable"},{"l":{"en-US":"onyx"},"v":"onyx"},{"l":{"en-US":"nova"},"v":"nova"},{"l":{"en-US":"shimmer"},"v":"shimmer"},{"l":{"en-US":"coral"},"v":"coral"},{"l":{"en-US":"verse"},"v":"verse"},{"l":{"en-US":"ballad"},"v":"ballad"},{"l":{"en-US":"ash"},"v":"ash"},{"l":{"en-US":"sage"},"v":"sage"},{"l":{"en-US":"amuch"},"v":"amuch"},{"l":{"en-US":"dan"},"v":"dan"},{"l":{"en-US":"Select voice"},"v":""}]}}},{"name":"text_to_image_model","type":"str","value":"","ui":{"icon":"font-awesome/fa-image","label":{"en-US":"Text to image model"},"type":"select","opts":{"opts":[{"l":{"en-US":"Select image model"},"v":""},{"l":{"en-US":"flux"},"v":"flux"},{"l":{"en-US":"turbo"},"v":"turbo"}]}}},{"name":"seed","type":"num","value":"","ui":{"label":{"en-US":"Seed"},"type":"input","opts":{"types":["num"]}}},{"name":"random_seed","type":"bool","value":"true","ui":{"type":"checkbox"}},{"name":"width","type":"num","value":"1024","ui":{"icon":"font-awesome/fa-image","label":{"en-US":"Image width"},"type":"input","opts":{"types":["str","num","bool","json","bin","env","conf-types"]}}},{"name":"height","type":"num","value":"768","ui":{"icon":"font-awesome/fa-file-image-o","label":{"en-US":"Image height"},"type":"input","opts":{"types":["str","num","bool","json","bin","env","conf-types"]}}},{"name":"enhance","type":"bool","value":"true","ui":{"icon":"font-awesome/fa-image","label":{"en-US":"Enchance prompt with LLM ?"},"type":"checkbox"}}],"meta":{},"color":"#AAAA66","outputLabels":["result","complete object"],"icon":"node-red/comment.svg","status":{"x":420,"y":220,"wires":[{"id":"de2a0e451b5e582b","port":0},{"id":"f5c53bccf14f555c","port":0},{"id":"7c8667893eedcafe","port":0}]}},{"id":"92aabdad2613b573","type":"function","z":"e9d49572657b6dba","name":"validate input","func":"const params = {};\nparams.action = env.get(\"action\");\n\nif (msg.prompt && typeof msg.prompt === 'string') {\n params.prompt = msg.prompt;\n} else {\n throw new Error(\"Missing or invalid parameter: prompt\");\n}\n\nif (msg?.system_prompt && typeof msg?.system_prompt === 'string') {\n params.system_prompt = msg.system_prompt \n} else {\n params.system_prompt = \"You are a helpful assistant\";\n}\n\nif (msg.payload && typeof msg.payload.reasoning_effort === 'string') {\n params.reasoning_effort = env.get(\"reasoning_effort\");\n} else {\n params.reasoning_effort = \"low\";\n}\n\nparams.text_model = env.get(\"text_model\");\nparams.reasoning_model = env.get(\"reasoning_model\");\nparams.text_to_image_model = env.get(\"text_to_image_model\");\nparams.text_to_audio_model = env.get(\"text_to_audio_model\");\nparams.seed = env.get(\"seed\");\nparams.random_seed = env.get(\"random_seed\");\nparams.width = env.get(\"width\");\nparams.height = env.get(\"height\");\nparams.enhance = env.get(\"enhance\");\n\nfunction validateParams(params) {\n switch (params.action) {\n case 'text_to_text':\n if (!params.text_model) {\n throw new Error(\"Missing required parameter: text_model\");\n }\n break;\n case 'text_to_text_reason':\n if (!params.reasoning_model) {\n throw new Error(\"Missing required parameters: reasoning_model\");\n }\n break;\n case 'text_to_image':\n if (!params.text_to_image_model) {\n throw new Error(\"Missing required parameter: text_to_image_model\");\n }\n if (!params.width) {\n throw new Error(\"Missing required parameter: width\");\n }\n if (!params.height) {\n throw new Error(\"Missing required parameter: height\");\n }\n break;\n case 'text_to_audio':\n if (!params.text_to_audio_model) {\n throw new Error(\"Missing required parameter: text_to_audio_model \");\n }\n break;\n default:\n throw new Error(`Unsupported action: ${params.action}`);\n }\n}\n\ntry {\n validateParams(params);\n if(params.random_seed) delete params.seed\n return params\n} catch (error) {\n throw new Error(error.message);\n}","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":220,"y":80,"wires":[["eef2cc5a69eeb539"]]},{"id":"eef2cc5a69eeb539","type":"switch","z":"e9d49572657b6dba","name":"action type","property":"action","propertyType":"env","rules":[{"t":"eq","v":"text_to_text","vt":"str"},{"t":"eq","v":"text_to_text_reason","vt":"str"},{"t":"eq","v":"text_to_image","vt":"str"}],"checkall":"true","repair":false,"outputs":3,"x":410,"y":80,"wires":[["6b59cbbb079aeb6c"],[],["4f36c97fca88c4e1"]]},{"id":"6b59cbbb079aeb6c","type":"template","z":"e9d49572657b6dba","name":"text_to_text template","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\n \"model\": \"{{{text_model}}}\",\n \"messages\": [\n {\"role\": \"system\", \"content\": \"{{{system_prompt}}}\"},\n {\"role\": \"user\", \"content\": \"{{{prompt}}}\"}\n ],\n \"private\":true\n \n }\n\n\n","output":"json","x":620,"y":80,"wires":[["669962140d465265","9bc31109ce2e0f38"]]},{"id":"e896f584e145b8ca","type":"http request","z":"e9d49572657b6dba","name":"","method":"POST","ret":"obj","paytoqs":"ignore","url":"https://text.pollinations.ai/openai","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":910,"y":80,"wires":[["966057472ac87cb1","4ed38f424797ea57"]]},{"id":"966057472ac87cb1","type":"change","z":"e9d49572657b6dba","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.choices[0].message.content","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1080,"y":40,"wires":[["085cb7b5be7baf60"]]},{"id":"085cb7b5be7baf60","type":"function","z":"e9d49572657b6dba","name":"try parse","func":"let cleanedJsonString = msg.payload.replace(/---.*$/s, '');\n\nfunction isJsonString(str) {\n try {\n JSON.parse(str);\n } catch (e) {\n return false;\n }\n return true;\n}\n\nconst _msg = {}\nif (isJsonString(cleanedJsonString)){\n \n _msg.payload = JSON.parse(cleanedJsonString)\n}else{\n _msg.payload = cleanedJsonString\n}\n\nreturn _msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1280,"y":40,"wires":[[]]},{"id":"669962140d465265","type":"link out","z":"e9d49572657b6dba","name":"link out 5","mode":"link","links":["3527c998acfc4f68"],"x":755,"y":120,"wires":[]},{"id":"de2a0e451b5e582b","type":"change","z":"e9d49572657b6dba","name":"processing","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"fill\":\"green\",\"shape\":\"ring\",\"text\":\"processing...\"}","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":210,"y":200,"wires":[[]]},{"id":"3527c998acfc4f68","type":"link in","z":"e9d49572657b6dba","name":"processing","links":["669962140d465265"],"x":105,"y":200,"wires":[["de2a0e451b5e582b"]]},{"id":"f5c53bccf14f555c","type":"change","z":"e9d49572657b6dba","name":"done","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"fill\":\"blue\",\"shape\":\"ring\",\"text\":\"done\"}","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":230,"y":240,"wires":[["62f5c8c3cc583818"]]},{"id":"4ed38f424797ea57","type":"link out","z":"e9d49572657b6dba","name":"link out 6","mode":"link","links":["d9ae376c1582ec6e"],"x":1325,"y":160,"wires":[]},{"id":"d9ae376c1582ec6e","type":"link in","z":"e9d49572657b6dba","name":"done","links":["4ed38f424797ea57"],"x":105,"y":240,"wires":[["f5c53bccf14f555c"]]},{"id":"7c8667893eedcafe","type":"change","z":"e9d49572657b6dba","name":"clear","rules":[{"t":"set","p":"payload","pt":"msg","to":"{}","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":270,"y":320,"wires":[[]]},{"id":"62f5c8c3cc583818","type":"delay","z":"e9d49572657b6dba","name":"","pauseType":"delay","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":120,"y":320,"wires":[["7c8667893eedcafe"]]},{"id":"9bc31109ce2e0f38","type":"delay","z":"e9d49572657b6dba","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"3","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":785,"y":80,"wires":[["e896f584e145b8ca"]],"l":false},{"id":"4f36c97fca88c4e1","type":"template","z":"e9d49572657b6dba","name":"text_to_image template","field":"url","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"https://image.pollinations.ai/prompt/{{{prompt}}}?width={{width}}&height={{height}}&seed={{seed}}&model={{text_to_image_model}}&private=true&nologo=true&enhance={{enhance}}","output":"str","x":610,"y":160,"wires":[["669962140d465265","1ce45bc46305829a"]]},{"id":"66d19dc0201e90b6","type":"http request","z":"e9d49572657b6dba","name":"","method":"GET","ret":"bin","paytoqs":"ignore","url":"","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":1090,"y":160,"wires":[["4ed38f424797ea57"]]},{"id":"1ce45bc46305829a","type":"delay","z":"e9d49572657b6dba","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"5","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":805,"y":160,"wires":[["66d19dc0201e90b6"]],"l":false},{"id":"02d0eea41aeac055","type":"subflow:e9d49572657b6dba","z":"62ac09fb283351d9","name":"","env":[{"name":"action","value":"text_to_text","type":"str"},{"name":"text_model","value":"openai-large","type":"str"},{"name":"text_to_image_model","value":"flux","type":"str"}],"x":780,"y":200,"wires":[["5f443e274bbc55b0"],[]],"info":"### Pollinations AI API\n"},{"id":"7a5a3c29c009e709","type":"inject","z":"62ac09fb283351d9","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":140,"y":200,"wires":[["765ad88e5bd32c3d"]]},{"id":"5f443e274bbc55b0","type":"debug","z":"62ac09fb283351d9","name":"debug 13","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":980,"y":200,"wires":[]},{"id":"8d93087c491b38bd","type":"template","z":"62ac09fb283351d9","name":"Home automation expert - return json","field":"system_prompt","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"# You are a home automation expert.\n\n### The user will provide you with information from devices that they want to control. \n### This could be opening of curtains, awning, setting brightness of a lamp, turning on/off of lamps, turn on the heating, setting the tempature etc. \n\n### You will respond in json using the following properties:\n\n{\n device_name: '' // when specified - livingroom lamp etc.\n device: '', // lamp, heating etc\n control: '' // brightness, tempature, on, off etc\n value: // int or float - if available\n unit: // %, C etc\n}\n\n## If the user asks to set a value, assume that the device is turned off and include a separate object to turn the device.\n###You will provide an array of objects, each device and each action separately.\n## Make sure to only respond with json, do not include markdown formatting.","output":"str","x":530,"y":200,"wires":[["02d0eea41aeac055"]]},{"id":"56494af4030bb662","type":"template","z":"62ac09fb283351d9","name":"Movie file rename expert - returns json","field":"system_prompt","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"# You are a movie expert and you know everything about audio and video formats\n\n### The user will provide you a list of movie filenames. \n### These filenames need to be renamed in a specific format.\n\nexamples:\n- Movie title (year).2160p.dv.dolby.5.1.mkv\n- Star Wars Episode VIII - The Last Jedi (2017).1080p.dts.5.1.mkv\n- 1917 (2019).2160p.hdr.truehdatmos.7.1.mkv\n\n# Rules:\n##### 7.1 and DTS HD MA are labelled as 'truehdatmos', do not use ddp. \n##### if the audio label does not exist, omit it.\n##### remove strange characters from the title, single quotes from begin and end should be removed\n##### include a short movie synopis if available, else omit it, make sure not to hallucinate\n\n### You will respond in json using the following properties:\n\n{\n original_filename: ''\n new_filename: '',\n movie_title:'',\n synopis: ''\n \n}\n\n### You will provide an array of objects.\n### only return json, do not include markdown formatting.","output":"str","x":530,"y":280,"wires":[["b837028ece55c682"]]},{"id":"b8bb53626d88bdab","type":"template","z":"62ac09fb283351d9","name":"prompt","field":"prompt","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"Europa_Report_2013_BluRay_1080p_AVC_DTS-HD_MA_5_1_REMUX-FraMeSToR\n'John Carter (2012)'\n'Kingdom of Heaven (2005) - 4K HDR - Degrained _ Regraded - NLsub'\n'Kingdom of Heaven (2005) Director_s cut - 1080p x264 - NL sub'\nNumber_24_2024_1080p_WEB_H264-GP-M-NLsubs\nSmall_Things_Like_These_2024_1080p_AMZN_WEB-DL_DDP5_1_H_264-FLUX\nThe_Last_Voyage_of_the_Demeter_2023_UHD_BluRay_2160p_DDP_7_1_DV_HDR_x265-hallowed\n'TRON_ Legacy (2010) 1080p DTS-HD MA 5_1 NL Subs x264'\n'Venom_ The Last Dance (2024) - 4K HDR 2160p WEBrip - NLsub'\n'War Pony (2022)'","output":"str","x":280,"y":280,"wires":[["56494af4030bb662"]]},{"id":"557c1803c6cc3b8c","type":"inject","z":"62ac09fb283351d9","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":140,"y":280,"wires":[["b8bb53626d88bdab"]]},{"id":"b837028ece55c682","type":"subflow:e9d49572657b6dba","z":"62ac09fb283351d9","name":"","env":[{"name":"action","value":"text_to_text","type":"str"},{"name":"text_model","value":"openai-large","type":"str"},{"name":"text_to_image_model","value":"flux","type":"str"}],"x":780,"y":280,"wires":[["ecbbfb39c3363123"],[]],"info":"### Pollinations AI API\n"},{"id":"ecbbfb39c3363123","type":"debug","z":"62ac09fb283351d9","name":"debug 15","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":980,"y":280,"wires":[]},{"id":"183204d0f229ce69","type":"subflow:e9d49572657b6dba","z":"62ac09fb283351d9","name":"","env":[{"name":"action","value":"text_to_image","type":"str"},{"name":"text_to_image_model","value":"flux","type":"str"},{"name":"seed","value":"15","type":"num"},{"name":"random_seed","type":"bool","value":"false"},{"name":"height","value":"1024","type":"num"}],"x":460,"y":380,"wires":[["71a828a846436f8f"],[]],"info":"### Pollinations AI API\n"},{"id":"8cfd543ea253597d","type":"inject","z":"62ac09fb283351d9","name":"","props":[{"p":"prompt","v":"movie cover. Title: The Last Voyage of the Demeter. Synopsis: An ex-Civil War soldier is mysteriously transported to Mars, where he becomes involved in a conflict among the planet's inhabitants.","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":130,"y":380,"wires":[["6609336a6f50d5f2"]]},{"id":"71a828a846436f8f","type":"image viewer","z":"62ac09fb283351d9","name":"","width":"400","data":"payload","dataType":"msg","active":true,"x":630,"y":380,"wires":[[]]},{"id":"6609336a6f50d5f2","type":"template","z":"62ac09fb283351d9","name":"prompt","field":"prompt","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"Create a movie cover. \nTitle: TRON Legacy\nSynopsis: A young man enters a digital world to find his father and end the control of a tyrannical program.","output":"str","x":280,"y":380,"wires":[["183204d0f229ce69"]]},{"id":"765ad88e5bd32c3d","type":"template","z":"62ac09fb283351d9","name":"prompt","field":"prompt","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"Set the temperature to 21c, turn on the livingroom lights and close the curtains","output":"str","x":280,"y":200,"wires":[["8d93087c491b38bd"]]}]