Package Information
Documentation
n8n-nodes-hubris
Official n8n community nodes for Hubris — one API key for Claude, GPT, Gemini, DeepSeek and 400+ other models, paid in rubles.
The package ships two nodes:
- Hubris — a regular node with text, image, audio, video, embedding and account operations. Can be used as a tool by AI Agents.
- Hubris Chat Model — a sub-node that plugs any text model from the Hubris catalog into the AI Agent, chains and other LangChain-style nodes.
Documentation in Russian: https://hubris.pw/docs/integrations/n8n
Installation
n8n Cloud and verified community nodes: open the nodes panel, search for "Hubris" and click Install.
Self-hosted n8n: go to Settings → Community Nodes → Install, enter n8n-nodes-hubris and confirm. To let AI Agents use the Hubris node as a tool on self-hosted instances, start n8n with N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true.
Requirements: n8n 1.100 or newer (Node.js 22). The Hubris Chat Model sub-node uses @n8n/ai-node-sdk on n8n 2.20+ and falls back to the LangChain client bundled with older n8n versions, so it works on both.
Credentials
Create a Hubris API credential:
| Field | Value |
|---|---|
| API Key | an inference key from https://hubris.pw/keys (starts with sk-gw-) |
| Base URL | https://api.hubris.pw/v1 (change only for a proxy or staging) |
The credential test calls GET /v1/key, so a wrong or disabled key is reported right away.
Operations
| Resource | Operation | What it does |
|---|---|---|
| Text | Chat | POST /chat/completions. Simple prompt or full messages array, vision input from a binary field, JSON mode / JSON Schema, reasoning effort, tools. |
| Text | Response | POST /responses. Plain text or input items, instructions, JSON Schema output. |
| Embedding | Embed | POST /embeddings. One text or a JSON array batch; one item per vector. |
| Image | Generate | POST /images/generations. Returns each picture as a binary field (data by default). |
| Audio | Transcribe | POST /audio/transcriptions. Reads an audio file from a binary field (wav, mp3, flac, m4a, ogg, webm, aac). |
| Audio | Generate Speech | POST /audio/speech. Returns an MP3 or PCM file in a binary field. |
| Video | Generate | POST /videos. Starts the job and returns its ID and status right away — the node never waits. |
| Video | Get | Checks a job by ID and downloads the MP4 once status is completed. Videos are stored for 72 hours. |
| Account | Get Key Info | GET /key: spending limit, usage in the current period, balance. |
Every response that carries Hubris' usage.cost (kopecks) also gets a cost_rub field with the same amount in rubles. Image generation and speech responses carry no cost field; check the usage log for those.
Models are picked from the live catalog (GET /models), filtered by the modality of the operation. Any model ID can also be given as an expression.
Hubris Chat Model
Add Hubris Chat Model to an AI Agent, Basic LLM Chain or any node with a Model input, pick a model from the catalog and connect the credential. Options cover temperature, top-p, penalties, max tokens, reasoning effort, timeout and retries. Temperature and top-p are sent only when set explicitly: Claude 5 models reject them.
For vector stores use the built-in Embeddings OpenAI sub-node with an OpenAI credential pointing at https://api.hubris.pw/v1 and your Hubris key.
Example workflow
Generate an article and a cover image, then post both to your CMS:
- Hubris → Text → Chat — model
anthropic/claude-sonnet-5, promptWrite a 300-word article about {{ $json.topic }}. - Hubris → Text → Chat — model
openai/gpt-4o-mini, Response Format JSON Schema with{ "type": "object", "properties": { "prompt": { "type": "string" } }, "required": ["prompt"] }, promptDescribe a cover image for this article: {{ $json.text }}. - Hubris → Image → Generate — model
google/gemini-2.5-flash-image, prompt{{ $json.json.prompt }}. - Your CMS node — text from step 1, image from the
databinary field of step 3.
Waiting for a video
Video generation runs on the provider side and takes minutes, so the node never blocks the workflow. Build the wait yourself:
- Hubris → Video → Generate — returns
{ id, status: "pending" }. - Wait — 30 seconds.
- Hubris → Video → Get — Video ID
{{ $('Hubris').item.json.id }}. - If —
{{ $json.status }}equalscompleted? Yes: continue, the MP4 is in thedatabinary field. No: back to the Wait node.
The same job ID also works from another workflow or a later run, as long as it is fetched within 72 hours.
Errors
API errors keep the HTTP status and Hubris' message, so 402 Insufficient balance, 429 daily_limit_exceeded and 401 invalid_api_key are visible in the execution log and can be handled with Continue On Fail.
Development
npm install
npm run lint
npm run build
npm test
npm run dev # starts a local n8n with the package loaded
Releases are published from GitHub Actions with npm provenance (npm run release).