How to use Darkbloom with n8n
Updated · Checked with n8n 2.44.6 on
Short answer: yes. In n8n, create an OpenAI credential, replace its Base URL with https://api.darkbloom.dev/v1 and enter your Darkbloom key. Then add an OpenAI Chat Model node (or the OpenAI node), choose that credential and pick a model ID that Darkbloom lists, such as gemma-4-26b. A new OpenAI Chat Model node is preset to gpt-5-mini, which Darkbloom refuses with a 403, so choose the model before you run anything. Darkbloom runs open-weight models on Macs and is a public alpha, so start with a small workflow.
At a glance
| Item | Value |
|---|---|
| Base URL | https://api.darkbloom.dev/v1 |
| Key | Created on the API console page of the Darkbloom console. n8n keeps it encrypted in its database, in a credential that you name. |
| Billing | Prepaid credits, charged per token, with a minimum of $0.0001 per request. Minimum deposit $0.50 (Darkbloom docs). |
| Model in n8n | The OpenAI Chat Model node (or the OpenAI node), with a Darkbloom model ID such as gemma-4-26b chosen from its Model list |
| Tested with | n8n 2.44.6 on October 23, 2026 |
| Darkbloom status | Public alpha (Darkbloom console) |
| Where to set it | Credentials: an OpenAI credential with its Base URL changed. n8n has no Darkbloom node. |
How do I use Darkbloom with n8n?
n8n has no Darkbloom node (a search for it in n8n 2.44.6 finds nothing). It does not need one: n8n’s OpenAI credential has a Base URL field, and Darkbloom answers the same requests as OpenAI’s API. So you point an OpenAI credential at Darkbloom and use n8n’s OpenAI nodes. The steps below describe n8n 2.44.6, which we ran in Docker on our own machine. Menu names can differ in other versions, and we did not run n8n Cloud.
- Get a Darkbloom API key. Open the Darkbloom console and sign in, add credits (the minimum is $0.50, and Darkbloom says credits are non-refundable and never expire), then choose API console in the console’s left menu and Create API key (Darkbloom’s docs call this page Settings → API Keys). The console shows the key only once, so copy it right away. Every key spends from your prepaid balance, so add only what you are willing to spend while you test, and watch your first runs, because an AI Agent can send several requests for one message.
- Create an OpenAI credential that points at Darkbloom. In n8n, click + at the top of the left bar and choose New credential. Type
OpenAI, choose OpenAI and click Continue. Click the name at the top,OpenAI account, and rename itDarkbloom, so you can tell it from a real OpenAI credential. Paste your key into API Key, and replace the address in Base URL with the one below. Leave Organization ID empty and everything else as it is, then click Save.YOUR_DARKBLOOM_API_KEYhttps://api.darkbloom.dev/v1 - Read the connection test. When you save, n8n tests the credential by asking the Base URL for its model list. Connection tested successfully means Darkbloom accepted the key. Couldn’t connect with these settings with Unauthorized means the key is wrong, and with Not Found it means the Base URL does not end at
/v1. n8n saves the credential either way, so fix the field and save again. - Build a small workflow. Click + at the top of the left bar and choose New workflow. Click the large + box, choose On chat message, and close its panel. Click the + after that node, search for
AI Agentand choose it. At the bottom of the AI Agent panel, click the + under Chat Model and choose OpenAI Chat Model. - Choose the model. In the OpenAI Chat Model panel, check that Credential shows
Darkbloom. n8n fills it in when it is your only OpenAI credential. If you choose another one later, n8n empties Model, so choose the credential first. Then open Model, keep From list and choose a Darkbloom model. n8n fills the list from Darkbloom, sorted by name, for examplegemma-4-26b. Do not leave the preset,gpt-5-mini: it is not a Darkbloom model.gemma-4-26b - Turn off Use Responses API. A new OpenAI Chat Model node in n8n 2.44.6 has this switch on, so it sends its requests to Darkbloom’s
/v1/responses. That also worked in our checks, but Darkbloom’s docs describe only chat completions, so we switch it off to use/v1/chat/completions. Switching it off also hides Built-in Tools. We tried one of them, Web Search, and Darkbloom answered 400. - Send a message. Close the panel. The chat is at the bottom of the canvas, with the Logs panel next to it. If the chat is hidden, click Open chat at the bottom of the canvas. Type
Say hello in five words.in the message box and press Enter. The reply appears in the chat, and Logs lists the nodes that ran, how long they took and how many tokens they used. - Optional: limit the length of the answers. In the OpenAI Chat Model panel, click Add Option under Options and choose Maximum Number of Tokens. Enter the most tokens you want back, with room for thinking if your model thinks first (see the models section).
What does each setting in n8n mean?
The first rows are the fields of the credential and the rest are the node settings that mattered when we tested. We left every setting that is not listed at its default.
| Setting | What to enter, and what it does |
|---|---|
| Credential: API Key | Your Darkbloom key. n8n sends it as Authorization: Bearer <key> (checked with a test server). |
| Credential: Organization ID | Leave it empty. n8n’s docs say it is needed only if you belong to several OpenAI organizations. |
| Credential: Base URL | https://api.darkbloom.dev/v1. n8n adds /models for the connection test and the model list, and /chat/completions or /responses for requests. Without /v1, Darkbloom answers 404. A trailing slash made no difference in our check. |
| Credential: Add Custom Header and Allowed HTTP Request Domains | Off, and All, as n8n presets them. We did not change them. |
| Node: Credential | The Darkbloom credential. Changing it empties Model. |
| Node: Model | Choose From list, which n8n fills from Darkbloom’s model list, or By ID to type an ID. With By ID the box still holds the preset, gpt-5-mini, which is not a Darkbloom model, so replace it. Both ways worked with gemma-4-26b. |
| Node: Use Responses API | On in a new node. On: n8n sends POST /v1/responses. Off: it sends POST /v1/chat/completions. Both worked with gemma-4-26b, including a tool call. Darkbloom’s docs describe only chat completions, so the steps turn it off. |
| Node: Built-in Tools | Offered only with Use Responses API. When we added Web Search, Darkbloom answered 400. Leave this empty. |
| Option: Maximum Number of Tokens | Not set by default. Then n8n sends no limit, and Darkbloom adds its own default of 8192 (Darkbloom docs). When we set 50, n8n sent max_tokens: 50 (chat completions) or max_output_tokens: 50 (responses), and Darkbloom stopped at 50 tokens both times. |
| Option: Sampling Temperature | Not sent unless you add it. When you add it, the row starts at 0.7. |
| Options: Timeout and Max Retries | The rows start at 60000 (milliseconds) and 2. We did not test retries. |
| AI Agent option: Max Iterations | The row starts at 10. It limits how many rounds the agent may take for one message, and every round is a request (see the cost section). |
| Chat Trigger option: Response Mode, and AI Agent option: Enable Streaming | With Response Mode set to Streaming and Enable Streaming added to the agent, n8n sent stream: true and stream_options: {"include_usage": true}, and the reply arrived. |
Which n8n nodes work with Darkbloom?
We ran the text nodes. Darkbloom’s API has no routes for several of the other things the OpenAI credential offers, as the last rows show.
| Node or setting | What we saw | Notes |
|---|---|---|
| OpenAI Chat Model in an AI Agent | Worked, with Use Responses API on or off. A Calculator tool call worked too, and so did a Simple Memory node. | This is the setup in the steps above. |
| OpenAI Chat Model in a Basic LLM Chain | Worked, through chat completions. | Other nodes that take a Chat Model use the same sub-node. We ran only the Basic LLM Chain. |
| OpenAI node, action Message a model | Worked with gemma-4-26b. It sent POST /v1/responses. | The Model list shows the IDs in capital letters, but n8n sends the real ID. |
| Streaming | Worked. See the settings table. | We tested it with the AI Agent only. |
| Built-in Tools: Web Search, File Search, Code Interpreter | Web Search: Darkbloom answered 400 request endpoint payload contains an unsupported item. We did not run the other two. | Leave Built-in Tools empty. |
| Embeddings OpenAI, the OpenAI node’s Classify text for violations, Files and Conversations | Not run in n8n. Called directly, Darkbloom answers 404 endpoint POST /v1/embeddings is not implemented, and the same for /v1/moderations, /v1/files and /v1/conversations. | Use another service for embeddings. Darkbloom’s README says unimplemented OpenAI endpoints answer 404. |
| Image, audio and video actions | Not run. |
Which Darkbloom model should I use with n8n?
Use any ID that GET /v1/models returns. On October 23, 2026 it listed 12 models, shown here from the cheapest output price up, in US dollars per million tokens. Check the live prices before you rely on a number; that public list also names models that are not online. A key can be limited to some models, and Darkbloom refuses any other with a 403 (see the errors table).
| Model ID | Context window, tokens | Input, $ per million tokens | Output, $ per million tokens | Features Darkbloom lists |
|---|---|---|---|---|
gpt-oss-20b | 131,072 | $0.018 | $0.09 | none listed |
nvidia-nemotron-3.5-lightning | 262,144 | $0.025 | $0.12 | tools, reasoning |
EigenLabs/Ternary-Bonsai-2-9B-MLX-2bit | 262,144 | $0.08 | $0.13 | tools, reasoning |
Qwen3.5-9B | 262,144 | $0.08 | $0.13 | tools, image input |
glm-5.3-flash | 262,144 | $0.065 | $0.18 | tools, reasoning, image input |
gemma-4-26b | 131,072 | $0.042 | $0.22 | tools, reasoning, json mode, image input |
mimo-v2.6-flash-mopd | 1,048,576 | $0.10 | $0.28 | tools, reasoning |
nvidia-nemotron-3.5-super | 262,144 | $0.075 | $0.35 | tools, reasoning, json mode, image input |
ternary-bonsai-2-27b | 262,144 | $0.075 | $0.50 | tools, reasoning, image input |
qwen3.6-35b-a3b-vl-mtp-mxfp8 | 262,144 | $0.05 | $0.70 | tools, image input |
qwen3.5-35b-a3b | 262,144 | $0.065 | $0.75 | tools, image input |
EigenLabs/Qwen3.8-27B-4bit-mtp | 262,144 | $0.035 | $2.20 | tools, image input |
n8n’s Model list shows every model that Darkbloom returns, so a listed model can still be refused with a 403 if your key is limited to some models. An AI Agent sends tool definitions when you connect a tool, so choose a model whose Features column lists tools. We ran gemma-4-26b for every check, and EigenLabs/Qwen3.8-27B-4bit-mtp for one-line messages through both APIs. A model that thinks first spends part of the token limit on its thinking: with Maximum Number of Tokens at 30, EigenLabs/Qwen3.8-27B-4bit-mtp used all 30 and n8n showed { "output": "" } as a success.
How much does n8n cost with Darkbloom, and how do I keep it low?
Darkbloom bills the tokens you use from your prepaid balance: (input tokens × input price + output tokens × output price) ÷ 1,000,000, with a minimum of $0.0001 per request. n8n adds little to a request beyond your message, the agent’s instructions and the definitions of the tools you connect. A one-line message to gemma-4-26b was 19 tokens in and 7 or 8 out, depending on the reply, which at the October 23, 2026 prices is worth no more than $0.000003, so Darkbloom billed the minimum, $0.0001. An AI Agent with the Calculator tool answered one question with two requests (95 tokens in and 22 out, then 136 in and 27 out), and each was billed the minimum. A model that thinks pays for its thinking: EigenLabs/Qwen3.8-27B-4bit-mtp used 84 tokens out for a five-word reply, and Darkbloom billed $0.000186.
The token count in n8n’s Logs panel is only a guide, and the bill is Darkbloom’s count. With chat completions it matched: the panel showed 26 tokens for a request that Darkbloom logged as 19 in and 7 out, and 27 for 19 in and 8 out. With Use Responses API on, it showed “~14 Tokens”, an estimate.
| What n8n does | What it costs you | How to reduce it |
|---|---|---|
| Every test is a real request | The chat panel and Execute step call Darkbloom each time, and each request is billed at least $0.0001. | Test with short messages, and stop once it works. |
| An agent can make several requests for one message | Each tool call adds a request, because the model has to answer again after it sees the tool’s result. | The AI Agent’s Max Iterations option limits the rounds. With 1, our calculator question made one request and stopped with Max iterations (1) reached. The agent could not complete the task within the allowed number of iterations. |
| A Memory node resends the conversation | With a Simple Memory node, our second message carried 3 messages and 47 tokens in, against 24 for the first. | Use a memory node only where the workflow needs the history, and start a new session for a new job. |
| No answer length limit by default | n8n sends no limit, so Darkbloom adds its default of 8192 (Darkbloom docs). A long answer is billed for all its tokens. | Add Maximum Number of Tokens, and leave room for thinking if the model thinks first. |
Check your real spend in the Darkbloom console, or call GET /v1/payments/usage with your key (Darkbloom docs: usage history).
Where does n8n keep my API key?
Encrypted, in n8n’s own database. n8n makes an encryption key the first time it starts and saves it in a config file in its data folder (~/.n8n, which is /home/node/.n8n in Docker). With n8n’s documented Docker command, that file could be read only by its owner (mode 600). In our test the key text did not appear in the database files, and the n8n screen shows it masked. Anyone who can use the credential in n8n can run workflows with your key, so share it only with people who should spend your balance. If the key leaks, delete it in the Darkbloom console and create a new one.
| Place | What we saw |
|---|---|
The database files in ~/.n8n (database.sqlite and the write-ahead file beside it) | The key was not readable. The credential is stored encrypted. |
n8n export:credentials --all | The key stays encrypted in the file. |
n8n export:credentials --all --decrypted | The key is written as plain text. Keep that file out of Git and backups. |
| An exported workflow | It holds the credential’s name and ID, not the key. |
| The container’s log | The key did not appear. |
What do the common errors mean?
In the chat panel, a failed run says only Error in workflow. Look at the Logs panel next to the chat and click OpenAI Chat Model: its Output shows n8n’s sentence first and Darkbloom’s own answer on the line below it. n8n also pops up a message that starts with Problem in node and the name of the AI Agent, followed by the first sentence. Each row was reproduced with n8n 2.44.6, except the empty-balance row.
| What you see | Cause | Fix |
|---|---|---|
Forbidden - perhaps check your credentials? and then this API key is not permitted to use model "gpt-5-mini" | n8n asked for its preset model, gpt-5-mini, because Model was never changed. Darkbloom answered 403. n8n’s sentence blames the credentials, but the key is fine. | Open the OpenAI Chat Model node and choose a model in the Model list. |
| The same two lines with another model name | Darkbloom answered 403 model_not_allowed. Either the key has an Allowed models list that does not include this model, or the ID is not a real one: Darkbloom gives the same answer for an ID that does not exist. | Check the ID letter for letter against GET /v1/models. If it is listed, open the key on the console’s API console page, choose Edit, and add the model to Allowed models, or leave that list blank to allow every model. |
Authorization failed - please check your credentials and then invalid API key | Darkbloom does not accept the key. This is the text its API returns for a wrong key. | Copy the key again in full, without quotes or spaces, or create a new key in the console. |
In the credential: Couldn’t connect with these settings and Unauthorized | Darkbloom rejected the key in the connection test. n8n still saves the credential. | Paste the key again in full, or create a new key in the console, and click Retry. |
In the credential: Couldn’t connect with these settings and Not Found. In a run: The resource you are requesting could not be found and 404 404 page not found, followed by a LangChain “MODEL_NOT_FOUND” link | The Base URL does not end at /v1, so n8n asked for a path that Darkbloom does not have. The LangChain link is misleading: the model is not the problem. | Set the Base URL to exactly https://api.darkbloom.dev/v1 and save the credential again. |
Bad request - please check your parameters and then model is required | The Model field is empty. n8n empties it when you change the node’s credential. | Choose the model again, after you have chosen the credential. |
Bad request - please check your parameters and then request endpoint payload contains an unsupported item | A built-in tool is switched on while Use Responses API is on. We reproduced the error with Web Search and did not try the other built-in tools. | Remove it under Built-in Tools, or turn Use Responses API off. |
Request timed out. | The request took longer than the Timeout option, which starts at 60000 milliseconds. We set it to 1 to reproduce the text, and did not wait out a real 60 seconds. | Raise Timeout under Options, or choose a faster model. |
Max iterations (1) reached. The agent could not complete the task within the allowed number of iterations. | The AI Agent used up its Max Iterations before it had an answer. We set 1 to reproduce it, and the option starts at 10. | Raise Max Iterations, or give the agent fewer tools. |
The run succeeds, but the answer is { "output": "" } | A model that thinks first used all of Maximum Number of Tokens for its thinking. With a limit of 30, EigenLabs/Qwen3.8-27B-4bit-mtp did. | Raise the limit, remove the option, or choose a model that does not think first. |
| A 403 with no model named | If your balance is too low, Darkbloom answers 403 (Darkbloom docs: insufficient balance), and every request fails the same way. n8n will probably show Forbidden - perhaps check your credentials? again. | Add credits in the console under Billing. |
Is Darkbloom private, and is it ready for production?
Not yet for sensitive work. Darkbloom’s quickstart calls the service “an experimental research prototype” and says not to use it in production applications, and its console labels it Public alpha. Darkbloom says prompts are encrypted to a verified provider Mac. Its security overview says the coordinator re-encrypts each request for the chosen provider and runs in a confidential VM. An independent review by Wavect (September 2026) reads Darkbloom’s technical documentation as saying that both the coordinator and the provider handle your prompt as plaintext inside protected boundaries.
n8n sends the text of your message, the earlier messages if you connect a Memory node, the instructions of the AI node, its tool list and each tool’s output to Darkbloom. Do not send secrets, customer data or code you are not allowed to share.
n8n keeps a copy of your test messages and replies for itself. In our test, the text of the messages was readable in n8n’s database files and in its event log, all in the data folder (~/.n8n). The key was not. Protect that folder and its backups like the prompts themselves.
How this guide was checked
- A paid request from n8n to api.darkbloom.dev worked on October 23, 2026. We ran the steps on this page again as written, from a clean state. n8n 2.44.6 in Docker, with an empty data folder, answered a chat message through an AI Agent with
gemma-4-26bchosen from the Model list, again with the ID typed by hand, and again with Maximum Number of Tokens set to 50. Darkbloom’s usage log shows those three requests billed $0.0001 each, the minimum. - The setup steps were compared with n8n’s own docs (linked under Sources) on October 22, 2026. Where the docs and the program differ, this page follows what we saw: n8n’s OpenAI credential page lists only an API key and an Organization ID, and the form also has Base URL, Add Custom Header and Allowed HTTP Request Domains; the OpenAI Chat Model page says the node defaults to the Chat Completions API, and a new node in 2.44.6 had Use Responses API switched on and
gpt-5-minichosen; the OpenAI node page lists “Generate a Chat Completion” and “Generate a Model Response”, and the node in 2.44.6 offers “Message a model” and “Classify text for violations”; and the AI Agent page says you must connect a tool, while an agent with only a chat model ran. - We ran n8n 2.44.6, the stable version in n8n’s docs that day, in Docker, with n8n’s documented command and these changes for our machine: n8n’s image on GitHub’s registry (
ghcr.io/n8n-io/n8n) because Docker Hub was limiting our test machine, the host network, a listening address without IPv6, our network’s proxy and certificate file, and switches that turn off version notices, diagnostics, templates and the hiring banner. We used a browser from a fresh start: the owner account screen, the credential as on this page, a workflow with a chat trigger, an AI Agent and an OpenAI Chat Model, and chat messages. We also ran a Basic LLM Chain, a Calculator tool, a Simple Memory node, the Maximum Number of Tokens, Timeout and Max Iterations options, streaming, a built-in tool, and the OpenAI node’s Message a model action. To see what n8n sends, we also ran it through a local forwarder that passed each request to Darkbloom unchanged and logged its path, size and settings. - On October 23, 2026 we ran the steps again, in the order of this page, in a new container with an empty data folder: the credential from the + menu (its test said Connection tested successfully), the workflow from the + menu, the model chosen from the list and typed by ID, Use Responses API off, and Maximum Number of Tokens at 50. Left at its preset,
gpt-5-mini, the same workflow gave the 403 of the first row in the errors table. Darkbloom’s usage log shows the three requests that it accepted, each billed $0.0001, and no row for the refused one. - The error rows were reproduced with n8n against Darkbloom, except the “invalid API key” rows, which used a test server that returns Darkbloom’s real reply for a wrong key, and the empty-balance row, because that needs an empty balance. Darkbloom’s 404 for
/v1/embeddings,/v1/moderations,/v1/filesand/v1/conversationscomes from calling it directly, not from n8n. - The request sizes and amounts in the cost section come from Darkbloom’s usage log. We matched each request to its row by the job ID that Darkbloom returns. On the key storage, we looked in n8n’s database files, its event log and the container’s log for the key text and for a test message, and exported the workflows and credentials with n8n’s command line.
- That Darkbloom lists
POST /v1/responsescomes from Darkbloom’s console, which names it in its API console page, and from the README of its source code; its docs site documents only chat completions. We called it with n8n and it worked for the two models we tried. - The model list, context windows, features and prices come from
GET /v1/modelson October 22, 2026 (it needs a key). The key steps in the console come from the console’s own page text. We tested with a key that already existed, so we did not click through key creation ourselves. - Our test machine adds that key to requests to Darkbloom on their way out, so in the runs against Darkbloom the credential held this page’s placeholder. That n8n sends the key it is given was checked separately, with a local test server that prints the
Authorizationheader it receives: it gotBearerand the key we had entered. - Not run: n8n Cloud, the npm and desktop installs, Windows, publishing a workflow and running it from a trigger other than the chat panel, the Embeddings, Files, Conversations, moderation, image, audio and video actions, a vector store, retries, other n8n versions, and an empty balance.
- Our Darkbloom link was opened in a clean browser profile on October 22, 2026. It saved the referral code and the page said the code “is saved and will be applied after you sign in”. We did not create an account to test the sign-in step itself.
About this guide
BloomGauge is a free Mac app for people who run Darkbloom providers, so we benefit when Darkbloom has more paying demand. We are independent of Darkbloom and not endorsed by it. Our Darkbloom sign-in links carry our referral code, BLOOMGAUGE. If you sign in to Darkbloom after opening one, Darkbloom attaches the code to your account and pays us a share of your eligible token spend. Darkbloom funds that reward, so it does not change your price.
Sources
- n8n docs: OpenAI credentials
- n8n docs: OpenAI Chat Model node
- n8n docs: OpenAI node
- n8n docs: AI Agent node
- n8n docs: install with Docker
- Darkbloom console: API console (endpoint list)
- Darkbloom source code: README (API surface)
- Darkbloom docs: quickstart
- Darkbloom docs: chat completions
- Darkbloom docs: authentication and API keys
- Darkbloom docs: add credits
- Darkbloom docs: usage history
- Darkbloom live prices (GET /v1/pricing)
Found something out of date? Tell us in #bloomgauge on the Darkbloom Slack or at Support.