H3 Official Context-IR
The node that really does call MiniMax — and refuses to until you say so
- request
- reference_registry
- media
- prompt
- receipt
- consent_notice
Most nodes in this pack are deterministic arithmetic with a nice name. This one is the exception: it talks to MiniMax's hosted Context-IR service over the network, using your credentials. Queue it and you get a validation error called transport_unconfigured, because the package ships with no connection to that service. That's deliberate, and it's the single most important thing to understand about the node.
What it does
It sends a typed request to MiniMax's official Context-IR endpoint and returns an enhanced prompt. It does not generate video - that's a separate hosted path, and this node is a comparison surface against the official implementation, not a local reimplementation of it. The pack's README says so in its own words: this is an independent project and not MiniMax's official Context-IR implementation.
The API contract is MiniMax's create-plus-query pair, and the node's lifecycle is built around them: resolve credentials for this run, check authority before and after every network call, poll the task, handle the result. If a run is cancelled or revoked locally after the task exists on MiniMax's side, polling simply stops - the node doesn't pretend it can unsend a request.
What "host-configurable" means in practice
Until a host operator registers a transport, the node refuses before any network use. A Python-level factory is installed with configure_official_context_ir_host(factory), and each run gets an opaque credential reference which the host resolves. The package does not create accounts, hunt for API keys, or install a provider SDK; billing is between you and MiniMax. This is documented in docs/HOST_INTEGRATION.md.
The operator-side responsibilities are laid out explicitly, and they're worth reading if you're the one running the box: check that a session owns the credential reference before using it, keep credentials in memory only - never in node inputs, saved workflows, receipts or logs - and keep the session authorized until cleanup finishes. The pack's security posture here matches its author's earlier work; the same developer's ComfyUI-OpenClaw pack is built around deny-by-default webhooks, an explicit admin token, and a strict outbound policy.
Inputs and outputs
Required:
- request - the typed
H3_CONTEXT_REQUESTenvelope. No native H3 generation is queued by this node. - ratio - the official aspect-ratio contract.
adaptiveby default;21:9,16:9,4:3,1:1,3:4and9:16are the explicit alternatives. - upload_consent - boolean, default false. Confirms that media may leave your machine.
- network_allowed - boolean, default false. Allows the selected official provider network path.
- credential_reference - default
env.official_minimax. This is an opaque reference, never the credential value.
Optional: reference_registry (to reconcile canonical reference ownership before mapping media) and media (H3_CONTEXT_IR_MEDIA values already admitted, in canonical order).
Outputs: prompt, receipt (H3_PROVIDER_RECEIPT), and consent_notice (H3_PROVIDER_CONSENT). The receipt is the record of the call; the consent notice is what the pipeline keeps to show permission was given.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/rookiestar28/ComfyUI-MiniMaxH3-Studio.git
# restart ComfyUI
No Python dependencies declared and no SDKs fetched at install - the transport is injected rather than bundled. Python 3.10+, and for the rest of the pipeline you'll want the native ComfyUI H3 nodes plus official weights.
Should you use it?
Probably not yet, and that's fine - it costs you nothing to leave it out. The default authoring path in this pack is entirely local and provider-free, and the assisted-authoring profiles for Ollama, Anthropic, OpenAI and Gemini are configured separately in the sidebar's Settings and never feed this node.
Where it becomes relevant: you want to compare your locally-authored prompt against what MiniMax's own Context-IR produces, or your production pipeline is explicitly the hosted one. Either way, remember two things - you're sending prompt text (never media) off your machine, and you're on the hook for the provider's terms and quota. And on the licence side, H3's open weights carry a territory carve-out for the US, EU, UK and Korea, while the hosted API runs under separate terms (MiniMax H3 panel). The hosted route and the local route are not the same legal object.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| request | H3_CONTEXT_REQUEST | Typed H3 request envelope; no native H3 generation is queued. | |
| ratio | COMBO | adaptive | Official Context-IR aspect-ratio contract. |
| upload_consent | BOOLEAN | false | Explicitly confirm that media may leave this host. |
| network_allowed | BOOLEAN | false | Explicitly allow the selected official provider network path. |
| credential_reference | STRING | env.official_minimax | Opaque runtime credential reference; never the credential value. |
| reference_registryopt | H3_REFERENCE_REGISTRY | Optional canonical registry to reconcile before mapping media. | |
| mediaopt | H3_CONTEXT_IR_MEDIA | Already-admitted OfficialContextIRMedia values in canonical order. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| prompt | H3_PROMPT_STRING | — |
| receipt | H3_PROVIDER_RECEIPT | — |
| consent_notice | H3_PROVIDER_CONSENT | — |