feat(MiniMax Node): Add standalone MiniMax vendor node (backport to release-candidate/2.18.x)#28868
Merged
DawidMyslak merged 1 commit intoApr 22, 2026
Conversation
Co-authored-by: Michael Kret <[email protected]> (cherry picked from commit 0295369)
5 tasks
Contributor
There was a problem hiding this comment.
No issues found across 21 files
Architecture diagram
sequenceDiagram
participant UI as n8n Workflow Engine
participant Node as MiniMax Node
participant Router as NEW: Action Router
participant Ops as NEW: Resource Operations
participant Trans as NEW: Transport & Polling
participant Ext as MiniMax API (External)
participant Tool as AI Tool (Optional)
UI->>Node: execute()
Node->>Router: router.call()
Note over Router,Ops: Routes by Resource (Text, Image, Video, Audio)
Router->>Ops: NEW: execute(operation)
alt Resource: Text (Chat)
Ops->>Trans: apiRequest(POST /chat/completions)
Trans->>Ext: Authorized HTTPS Request
Ext-->>Ops: Response (content / tool_calls)
loop NEW: Tool Iteration (maxToolsIterations)
opt if finish_reason == 'tool_calls'
Ops->>Tool: invoke(arguments)
Tool-->>Ops: Tool Output
Ops->>Trans: apiRequest(Submit Tool Results)
Trans->>Ext: Next LLM Iteration
Ext-->>Ops: Next Response
end
end
else Resource: Video (Async)
Ops->>Trans: apiRequest(POST /video_generation)
Trans->>Ext: Create Video Task
Ext-->>Ops: task_id
loop NEW: pollVideoTask (Max 60 attempts)
Ops->>Trans: GET /query/video_generation
Trans->>Ext: Check Status
Ext-->>Ops: Status (Processing / Success / Fail)
end
Ops->>Trans: NEW: getVideoDownloadUrl()
Trans->>Ext: GET /files/retrieve?file_id=...
Ext-->>Ops: download_url
else Resource: Image or Audio
Ops->>Trans: apiRequest(POST /...)
Trans->>Ext: Generate Resource
Ext-->>Ops: URL / Result Data
end
opt NEW: if download (Audio/Image/Video) == true
Ops->>UI: helpers.httpRequest(GET URL)
UI->>Ext: Fetch Binary Stream
Ext-->>Ops: Buffer
Ops->>UI: helpers.prepareBinaryData()
end
Ops-->>Router: INodeExecutionData[]
Router-->>Node: returnData
Node-->>UI: Final Node Output
Contributor
Performance ComparisonComparing current → latest master → 14-day baseline Memory consumption baseline with starter plan resources
docker-stats
Idle baseline with Instance AI module loaded
How to read this table
|
DawidMyslak
approved these changes
Apr 22, 2026
Bundle ReportChanges will increase total bundle size by 537 bytes (0.0%) ⬆️. This is within the configured threshold ✅ Detailed changes
Affected Assets, Files, and Routes:view changes for bundle: editor-ui-esmAssets Changed:
|
Merged
Contributor
Author
|
Got released with |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Backport of #28748 to
release-candidate/2.18.x.Checklist for the author (@DawidMyslak) to go through.
After this PR has been merged, it will be picked up in the next patch release for release track.
Original description
Summary
Add a standalone MiniMax vendor node following the Moonshot/AlibabaCloud pattern with four resources:
Loom Recording
Reuses the existing
minimaxApicredential and icon from PR #28305.📋 Test Workflow JSON
Import into n8n and configure your MiniMax API credentials.
{"name":"MiniMax - Test All Actions","nodes":[{"parameters":{},"id":"trigger-main","name":"Run All Tests","type":"n8n-nodes-base.manualTrigger","typeVersion":1,"position":[0,780]},{"parameters":{"resource":"text","operation":"message","modelId":"MiniMax-M2.7","messages":{"values":[{"content":"What is the capital of France? Answer in one sentence.","role":"user"}]},"simplify":true,"options":{"temperature":0.7,"maxTokens":256,"hideThinking":true}},"id":"text-message-simple","name":"Text: Simple Message","type":"@n8n/n8n-nodes-langchain.minimax","typeVersion":1,"position":[400,0],"credentials":{"minimaxApi":{"id":"","name":"MiniMax API"}}},{"parameters":{"resource":"text","operation":"message","modelId":"MiniMax-M2.7","messages":{"values":[{"content":"You are a friendly pirate.","role":"assistant"},{"content":"Tell me about the weather today.","role":"user"}]},"simplify":true,"options":{"system":"You are a helpful assistant who always responds in a fun way.","temperature":0.9,"maxTokens":512,"hideThinking":true}},"id":"text-message-multiturn","name":"Text: Multi-turn + System","type":"@n8n/n8n-nodes-langchain.minimax","typeVersion":1,"position":[400,280],"credentials":{"minimaxApi":{"id":"","name":"MiniMax API"}}},{"parameters":{"resource":"text","operation":"message","modelId":"MiniMax-M2.7","messages":{"values":[{"content":"Explain quantum computing in 3 sentences.","role":"user"}]},"simplify":false,"options":{"hideThinking":false,"maxTokens":1024}},"id":"text-message-full","name":"Text: Full Response + Thinking","type":"@n8n/n8n-nodes-langchain.minimax","typeVersion":1,"position":[400,560],"credentials":{"minimaxApi":{"id":"","name":"MiniMax API"}}},{"parameters":{"resource":"text","operation":"message","modelId":"MiniMax-M2.5","messages":{"values":[{"content":"Say hello and tell me a joke.","role":"user"}]},"simplify":true,"options":{"temperature":0.5,"topP":0.9,"maxTokens":256}},"id":"text-message-m25","name":"Text: M2.5 Model","type":"@n8n/n8n-nodes-langchain.minimax","typeVersion":1,"position":[400,840],"credentials":{"minimaxApi":{"id":"","name":"MiniMax API"}}},{"parameters":{},"id":"tool-calculator","name":"Calculator","type":"@n8n/n8n-nodes-langchain.toolCalculator","typeVersion":1,"position":[400,1280]},{"parameters":{"resource":"text","operation":"message","modelId":"MiniMax-M2.7","messages":{"values":[{"content":"What is 1547 * 382 + 9281? Use the calculator tool to compute this precisely.","role":"user"}]},"simplify":true,"options":{"temperature":0.1,"maxTokens":512,"maxToolsIterations":5}},"id":"text-message-tools","name":"Text: With Calculator Tool","type":"@n8n/n8n-nodes-langchain.minimax","typeVersion":1,"position":[400,1120],"credentials":{"minimaxApi":{"id":"","name":"MiniMax API"}}},{"parameters":{"resource":"image","operation":"generate","prompt":"A cute golden retriever puppy playing in autumn leaves, photorealistic style","aspectRatio":"1:1","numberOfImages":1,"downloadImage":true,"options":{}},"id":"image-generate-download","name":"Image: Generate + Download","type":"@n8n/n8n-nodes-langchain.minimax","typeVersion":1,"position":[900,0],"credentials":{"minimaxApi":{"id":"","name":"MiniMax API"}}},{"parameters":{"resource":"image","operation":"generate","prompt":"A futuristic cityscape at sunset with flying cars, cyberpunk style","aspectRatio":"16:9","numberOfImages":2,"downloadImage":false,"options":{"promptOptimizer":true}},"id":"image-generate-url","name":"Image: URL Only + Optimizer","type":"@n8n/n8n-nodes-langchain.minimax","typeVersion":1,"position":[900,280],"credentials":{"minimaxApi":{"id":"","name":"MiniMax API"}}},{"parameters":{"resource":"image","operation":"generate","prompt":"A serene Japanese garden with cherry blossoms and a koi pond","aspectRatio":"9:16","numberOfImages":1,"downloadImage":true,"options":{"seed":42}},"id":"image-generate-seed","name":"Image: Portrait + Seed","type":"@n8n/n8n-nodes-langchain.minimax","typeVersion":1,"position":[900,560],"credentials":{"minimaxApi":{"id":"","name":"MiniMax API"}}},{"parameters":{"resource":"video","operation":"textToVideo","modelId":"MiniMax-Hailuo-2.3","prompt":"A cat stretching and yawning on a sunny windowsill, camera slowly zooms in","duration":6,"resolution":"768P","downloadVideo":true,"options":{"promptOptimizer":true}},"id":"video-t2v-download","name":"Video T2V: Download","type":"@n8n/n8n-nodes-langchain.minimax","typeVersion":1,"position":[1400,0],"credentials":{"minimaxApi":{"id":"","name":"MiniMax API"}}},{"parameters":{"resource":"video","operation":"textToVideo","modelId":"T2V-01-Director","prompt":"A drone shot flying over a mountain lake at sunrise [Pan right] [Push in]","duration":10,"resolution":"1080P","downloadVideo":false,"options":{}},"id":"video-t2v-url","name":"Video T2V: Director Model","type":"@n8n/n8n-nodes-langchain.minimax","typeVersion":1,"position":[1400,280],"credentials":{"minimaxApi":{"id":"","name":"MiniMax API"}}},{"parameters":{"resource":"video","operation":"imageToVideo","modelId":"MiniMax-Hailuo-2.3","imageInputType":"url","imageUrl":"https://cdn.hailuoai.com/prod/2024-09-18-16/user/multi_chat_file/9c0b5c14-ee88-4a5b-b503-4f626f018639.jpeg","prompt":"A mouse runs toward the camera, smiling and blinking","duration":6,"resolution":"768P","downloadVideo":true,"options":{}},"id":"video-i2v-url","name":"Video I2V: From URL","type":"@n8n/n8n-nodes-langchain.minimax","typeVersion":1,"position":[1400,560],"credentials":{"minimaxApi":{"id":"","name":"MiniMax API"}}},{"parameters":{"resource":"video","operation":"imageToVideo","modelId":"MiniMax-Hailuo-2.3","imageInputType":"binary","binaryPropertyName":"data","prompt":"The image comes to life with gentle animation","duration":6,"resolution":"768P","downloadVideo":false,"options":{}},"id":"video-i2v-binary","name":"Video I2V: From Binary","type":"@n8n/n8n-nodes-langchain.minimax","typeVersion":1,"position":[1400,840],"credentials":{"minimaxApi":{"id":"","name":"MiniMax API"}}},{"parameters":{"resource":"audio","operation":"textToSpeech","modelId":"speech-2.8-hd","text":"Hello! Welcome to the MiniMax text to speech demo. This is a test of the audio generation capabilities.","voiceId":"English_Graceful_Lady","downloadAudio":true,"options":{}},"id":"audio-tts-download","name":"Audio TTS: Download MP3","type":"@n8n/n8n-nodes-langchain.minimax","typeVersion":1,"position":[1900,0],"credentials":{"minimaxApi":{"id":"","name":"MiniMax API"}}},{"parameters":{"resource":"audio","operation":"textToSpeech","modelId":"speech-2.8-turbo","text":"Today is a wonderful day! The sun is shining and the birds are singing. Let us celebrate this beautiful moment together.","voiceId":"English_Graceful_Lady","downloadAudio":true,"options":{"speed":1.2,"volume":2,"pitch":3,"emotion":"happy","audioFormat":"wav","languageBoost":"English"}},"id":"audio-tts-options","name":"Audio TTS: All Options","type":"@n8n/n8n-nodes-langchain.minimax","typeVersion":1,"position":[1900,280],"credentials":{"minimaxApi":{"id":"","name":"MiniMax API"}}},{"parameters":{"resource":"audio","operation":"textToSpeech","modelId":"speech-2.6-hd","text":"This audio will not be downloaded. Only the URL will be returned for later use.","voiceId":"English_Graceful_Lady","downloadAudio":false,"options":{"audioFormat":"mp3"}},"id":"audio-tts-url","name":"Audio TTS: URL Only","type":"@n8n/n8n-nodes-langchain.minimax","typeVersion":1,"position":[1900,560],"credentials":{"minimaxApi":{"id":"","name":"MiniMax API"}}}],"connections":{"Run All Tests":{"main":[[{"node":"Text: Simple Message","type":"main","index":0},{"node":"Text: Multi-turn + System","type":"main","index":0},{"node":"Text: Full Response + Thinking","type":"main","index":0},{"node":"Text: M2.5 Model","type":"main","index":0},{"node":"Image: Generate + Download","type":"main","index":0},{"node":"Image: URL Only + Optimizer","type":"main","index":0},{"node":"Image: Portrait + Seed","type":"main","index":0},{"node":"Video T2V: Download","type":"main","index":0},{"node":"Video T2V: Director Model","type":"main","index":0},{"node":"Video I2V: From URL","type":"main","index":0},{"node":"Audio TTS: Download MP3","type":"main","index":0},{"node":"Audio TTS: All Options","type":"main","index":0},{"node":"Audio TTS: URL Only","type":"main","index":0},{"node":"Text: With Calculator Tool","type":"main","index":0}]]},"Calculator":{"ai_tool":[[{"node":"Text: With Calculator Tool","type":"ai_tool","index":0}]]},"Image: Generate + Download":{"main":[[{"node":"Video I2V: From Binary","type":"main","index":0}]]}},"active":false,"settings":{"executionOrder":"v1"},"meta":{"templateCredsSetupCompleted":true}}Related Linear tickets
https://linear.app/n8n/issue/NODE-4760
Review / Merge checklist
Backport to Beta,Backport to Stable, orBackport to v1(if the PR is an urgent fix that needs to be backported)