Package Information
Documentation
@exado/n8n-nodes-exado
n8n community node for the Exado AI API — RAG chat, OpenAI-compatible completions/embeddings, document ingestion, conversations, FAQ.
Installation
From the n8n UI (recommended)
Self-hosted n8n only — n8n Cloud does not yet support community nodes installed at runtime.
Make sure
N8N_COMMUNITY_PACKAGES_ENABLED=trueis set on the n8n container (it is by default in recent n8n versions).Open n8n → Settings → Community Nodes → Install.
Enter the package name:
@exado/n8n-nodes-exadoTick "I understand the risks" → Install. The
ExadoandExado Triggernodes appear in the palette after ~30s.
Manually (CLI)
cd ~/.n8n/custom # or wherever your n8n custom dir is
npm install @exado/n8n-nodes-exado
# then restart n8n
Local development (npm link)
git clone https://github.com/vado-innovation-tech/n8n-nodes-exado.git
cd n8n-nodes-exado
npm install && npm run build
npm link
cd ~/.n8n/custom
npm link @exado/n8n-nodes-exado
Credentials
Two pieces of information are needed:
- Base URL — the root of your Exado API, e.g.
https://api.exado.example.com. No trailing slash. - API Key — a long-lived key with the
exado_prefix.
To issue a key:
- Log into the Exado web UI as any user that owns the workflows you want to drive.
- Open Settings → API Keys (or call
POST /api/admin/api-keysonce with a Keycloak JWT). - Copy the generated key the moment it is shown — it cannot be retrieved later.
The server's
UnifiedAuthdependency accepts the sameexado_key on both the public OpenAI-compat surface and the internal endpoints. One credential covers every operation this node exposes.
After saving the credential, click Test — the node hits GET /api/users/me and returns the key owner.
Supported resources & operations
| Resource | Operations |
|---|---|
| Chat | Send Message (streaming or non-streaming) |
| Chat Completion | Create Chat Completion, Create Completion (both streaming) |
| Embedding | Create |
| Model | List Available, List OpenAI-Compatible |
| Document | Upload, Get, Get Content, Get Status, Get Many, Update, Delete, Bulk Delete, Translate, Get Translation Status, Get Translation Result |
| Conversation | Get Many, Get, Ask (streaming), Get Status, Cancel Generation |
| Conversation Config | Create, Get Many |
| Conversation Template | Create, Create Conversation From Template |
| Metadata | Create, Get, Get Many, Update, Delete, Pending Status, Generate |
| Folder | Create, List Children, Rename |
| Group | Get Many, Get |
| FAQ Topic | Create, Get, Get Many, Update, Delete |
| Quick | Quick Ask |
Trigger node
Exado Trigger is a polling trigger with four modes:
- Document Ingestion Complete — emits when a previously unseen document reaches
status: "success". - Translation Complete — emits when a translation transitions to
completed. - New Conversation — emits for each new conversation visible to the API key.
- New FAQ Topic — emits for each new FAQ topic.
The first poll silently primes dedupe state, so the workflow does not flood-fire on existing items. Subsequent polls emit only what is new. In Test Step (manual) mode the trigger ignores dedupe state and emits the latest items so you can wire downstream nodes.
Streaming usage
For Chat, Chat Completion, and Conversation → Ask, set Stream Response to true. By default the node consumes the full SSE stream and returns a single item:
{
"content": "Hello, world!",
"chunks": 12,
"model": "gpt-4o-mini",
"finishReason": "stop"
}
Toggle Emit Each Chunk to produce one output item per parsed frame. This is useful for live-streaming downstream consumers but breaks single-item nodes like Set / Merge.
Mid-stream [ERROR] frames are surfaced as NodeApiError, with the partial buffered content attached on the error context.
Document upload example
- Add a Read Binary File (or any node that produces a binary item with
binary.data). - Wire it into an Exado node configured as Resource = Document, Operation = Upload.
- In the node's Options, set Folder Path and Parsing Mode as desired.
- Downstream, poll Get Status until
status === "success"(or use the Exado Trigger with mode = Document Ingestion Complete).
Known limitations
- Exado does not emit
Retry-AfterorX-RateLimit-*headers — failed requests surface asNodeApiErrorwith the raw HTTP status. - The buffered streaming mode loads the full response into memory before returning. For very long completions use
Emit Each Chunk. loadOptionsdropdowns for models / groups / folders cache the first page (up to 100 items). For larger libraries enter the ID manually.
Development
npm install
npm run dev # tsc --watch
npm test # jest
npm run lint
npm run build # tsc + gulp icons
Tests use Jest with ts-jest. The HTTP layer is mocked at this.helpers.httpRequestWithAuthentication — see tests/resources/chat.test.ts for the standard stub.
License
MIT — see LICENSE.