Sizes and counts
| What | Limit |
|---|---|
| Active tokens per person per workspace | 25 |
| Knowledge bases per workspace | 50 |
| Entries per knowledge base | 20 000 |
Search / ask query | 1 000 characters · topK ≤ 20 |
Entry question / answer | 500 / 2 000 characters |
altQuestions / keywords per entry | 5 / 10 |
| Import rows per call · bulk ids per call | 2 000 · 500 |
| Submission text · attachments per submission | 400 000 characters · 8 |
| Uploaded file | 20 MB · pdf, doc, docx, xls, xlsx, csv, txt, md, json |
| Entries listed per page | 500 |
| Flow name · node label · node description | 200 · 120 · 2 000 characters |
Messages sent by one sendWhatsapp step | 20 |
| Executions listed | last 20 |
| Automated WhatsApp replies per chat (default) | 30 / minute |
Exceeding a limit answers 400 with a message that names it.
WhatsApp automation guards
Every WhatsApp-triggered flow is rate-limited per chat, per minute so that a runaway conversation — most often an AI answering another AI — cannot burn credits or get a number restricted. The guards run once per inbound message, before any run starts or a paused run resumes, and are configured on the whatsappTrigger node (config.guards, or the Safety section in the editor). Defaults apply to every flow that doesn't set them.
| Field | Default | Meaning |
|---|---|---|
perMinute | 30 | Inbound messages per chat per minute that may start or resume a run. 0 = off. Hard cap 120. |
loopDetect | true | Trips when five replies in a row arrive within 10 seconds of a message your flow sent, or when the same text arrives four times in a row — the signature of a bot talking to a bot. |
cooldownMinutes | 15 | Once a guard trips, automation ignores that chat for this long. Between 1 and 1 440. |
What happens when a guard trips:
- Messages from that chat still arrive in the Inbox — nothing is dropped for humans.
- No flow runs for that chat and a run paused on a Wait node for that chat is cancelled (its log says why).
- The Inbox shows Automation paused — … · Resume now on the conversation; a teammate can lift the pause early, otherwise it ends after the cooldown.
- Nothing is returned to the sender — an automatic "slow down" message would be fuel for a loop.
Scope
Guards are keyed by chat (receiving account + conversation). With several active flows listening on the same account the strictest values win. Messages from your own other numbers are treated like any customer — testing from a second phone keeps working — so the guards, not the sender, are what stop two of your bots looping.
Fair use
- Credits are the meter. Model calls (Ask, extraction, LLM nodes) are billed to your balance at the app's rates; there is no separate API fee. A
402means your balance is empty — top up in the app rather than retrying. - Be gentle with polling. Poll executions every 1–3 seconds, not in a tight loop; they finish in seconds.
- Iterate on search, not ask. Search is free; use it for development loops and reserve model calls for real answers.
- Automated writes should be idempotent. Search before adding entries, re-read a graph before replacing it. The API rejects exact-duplicate questions and flags near-duplicates so retries don't multiply content.
- Sustained high request rates may be throttled to protect other customers. If you have a bulk job (tens of thousands of entries, hundreds of flows), tell us first at admin@djc.ai and we will make room.
Flows that send WhatsApp messages use accounts connected in your workspace. Bulk or unsolicited messaging can get a number restricted by WhatsApp; keep automated replies conversational and opt-in.
Compatibility
- We add fields and endpoints without notice; we do not remove or rename documented fields without a changelog entry and a transition period.
- Ignore response fields you don't recognise.
- Node config shapes come from
GET /node-types— read them at runtime rather than hard-coding. - The version badge in the header (
2026-08) and the changelog track every customer-visible change.