Behaviour settings
These settings shape how a universe behaves. In the dashboard they are under Settings: AI writing, pace, who exists, Spam & Junk and links on Realism, faults on Chaos, retention on Data.
AI writing
Section titled “AI writing”With AI writing on, people write their own replies in their own voice, and the AI settles close calls, such as whether someone clicks a link. Each AI call uses one of your plan’s AI credits.
With it off, people reply from templates and the rules decide everything. Replies still arrive on schedule, threaded and in each person’s temperament, so most tests behave the same, but they are instant, repeatable and use no credits. It suits CI and trying out the API. The World’s new senders and their emails come from templates too, and attachments are not read.
GET /api/ai
Section titled “GET /api/ai”{ "mode": "on" }PUT /api/ai
Section titled “PUT /api/ai”Body: {"mode": "off"}. mode is on or off. Changing it needs the member role.
Pace scales how long every person takes to reply. It is separate from the clock.
| Call | Body |
|---|---|
GET /api/pace | |
PUT /api/pace | {"factor": 0.1, "ignore_hours": true} |
| Field | Meaning |
|---|---|
factor | 1 is as configured, 0.1 ten times faster, 2 twice as slow. 0 means 1. |
ignore_hours | true: people reply at any hour, any day. |
Changing pace needs the member role.
Recipients
Section titled “Recipients”Recipient rules decide what is on the other side of addresses: which exist, which are dead, full or blocking, and who (if anyone) is behind a never-seen address. Changing them needs the admin role.
| Call | |
|---|---|
GET /api/recipients | The rules. |
PUT /api/recipients | Replaces them. |
PUT /api/mailboxes/{address}/status | Sets one address’s status (member role). |
{ "default": { "create": true, "bad_rate": 0.05, "stranger": "ai" }, "domains": { "yourcompany.test": { "create": true, "stranger": "off" }, "closed.test": { "create": false } }, "seed": ""}| Field | Meaning |
|---|---|
default | The rule for addresses simmail has not seen. |
domains | Rules for particular domains, which win over default. |
status | Fixed outcomes for single addresses: unknown, domain, full, disabled or blocked. |
seed | Change it to pick a different set of “bad” addresses. |
A rule:
| Field | Meaning |
|---|---|
create | true: make a mailbox and deliver. false: refuse never-seen addresses at RCPT with 550 5.1.1. |
bad_rate | Share (0 to 1) of never-seen addresses that are bad. The same address is always the same. |
bad_kinds | Which kinds bad addresses are. Default: mostly unknown, some domain, full and blocked. |
fail_at | dsn (default): accept, then send a bounce notice a little later, as many providers do. rcpt: refuse in the SMTP conversation. |
stranger | Who is behind a never-seen address: off, basic or ai. See strangers. |
silent | true: accept and discard. |
An address with a fixed status is bad even if its mailbox already exists. Otherwise, mailboxes that already exist always receive.
What each bad kind sends back:
| Kind | Reply |
|---|---|
unknown | 550 5.1.1 User unknown |
domain | 550 5.1.2 Domain not found |
full | 552 5.2.2 Mailbox full |
disabled | 550 5.2.1 Mailbox disabled |
blocked | 554 5.7.1 Rejected under policy |
The rules for people opening links. See Links and sender look-up. Changing them needs the admin role and the lifelike behaviour feature of your plan.
| Call | |
|---|---|
GET /api/links | {"policy": {…}, "habits": [...], "default_user_agent": "…"} |
PUT /api/links | Replaces the policy. Send every field. |
| Field | Default | Meaning |
|---|---|---|
enabled | true | Whether people open links at all. |
allow_private | false; can’t be switched on | Whether links to localhost and private networks may be opened. |
allow | If set, only these hosts (exact, or *.example.com). | |
deny | Never these hosts. | |
max_links | 3 | Links opened per email. |
unsubscribe | false | Whether people may follow unsubscribe links. |
user_agent | simmail’s | What the requests say they are. |
sender_check | 0.35 | How often (0 to 1) people look up a sender they do not know. |
missing_site | imagine | When the sender’s site does not exist: imagine or notice. |
local_links | ignore | Links to the sender’s own machine: ignore them as testing links, or click and find them broken. |
Only http and https links are opened, and mail ports are always refused.
Retention
Section titled “Retention”How long mail and the activity log are kept, in simulated days. Changing it needs the admin role.
| Call | |
|---|---|
GET /api/retention | {"mail_days": 0, "event_days": 0} |
PUT /api/retention | {"mail_days": 30, "event_days": 90}. 0 keeps forever. |
POST /api/retention/prune | Applies it now. Answers with how many messages, events and jobs were removed. |
Old mail is also pruned every hour. Your plan’s retention limit caps both values. People keep their notes on each other when old mail goes.