Documentation menu

More

Limits & fair use

The hard limits the API enforces, and the soft expectations that keep the service fast for everyone.

Sizes and counts

WhatLimit
Active tokens per person per workspace25
Knowledge bases per workspace50
Entries per knowledge base20 000
Search / ask query1 000 characters · topK ≤ 20
Entry question / answer500 / 2 000 characters
altQuestions / keywords per entry5 / 10
Import rows per call · bulk ids per call2 000 · 500
Submission text · attachments per submission400 000 characters · 8
Uploaded file20 MB · pdf, doc, docx, xls, xlsx, csv, txt, md, json
Entries listed per page500
Flow name · node label · node description200 · 120 · 2 000 characters
Messages sent by one sendWhatsapp step20
Executions listedlast 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.

FieldDefaultMeaning
perMinute30Inbound messages per chat per minute that may start or resume a run. 0 = off. Hard cap 120.
loopDetecttrueTrips 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.
cooldownMinutes15Once 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 402 means 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.

WhatsApp

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.