Documentation
Quickstart
How a campaign runs — and the safety rules that never bend.
1. Create a campaign
Pick a template, name your company, list the targets. The API renders the simulation — it does not send email itself.
curl -s -H "Authorization: Bearer <key>" -X POST https://sim.baitproof.example/v1/campaigns \
-H "Content-Type: application/json" \
-d '{"name":"October sim","company":"Acme Law",
"template_id":"invoice","targets":["don+baitproof@lifeofmorr.com","don+baitproof@lifeofmorr.com"]}'
# {"id":"cmp_0001","note":"NOT SENT — v1 renders simulations only. ...","rendered":[...]}2. Deliver with authorization
Rendered messages are logged NOT SENT. Delivery runs through your ESP (or ours) only with your written authorization on file, per SOP-01.
3. Track the recipient journey
Pixel opens, click redirects to the disclosure landing page, and one-click 'I reported this' — all tracked per recipient.
# open pixel (public) curl -s -o /dev/null https://sim.baitproof.example/t/<token>.png # click follows a 302 to the disclosure + training page curl -sL https://sim.baitproof.example/c/<token> | grep -o "simulated phishing test"
4. Read the report
Click rate, report rate, and the needs-training list.
curl -s -H "Authorization: Bearer <key>" https://sim.baitproof.example/v1/campaigns/cmp_0001/report
# {"sent":2,"opened":1,"clicked":1,"reported":0,"click_rate":50.0,
# "needs_training":["don+baitproof@lifeofmorr.com"]}Honest limits
- Simulations run only against the customer's own employees, with their explicit written authorization.
- Every landing page discloses the simulation. No credential fields, ever — we track clicks, never credentials.
- v1 renders simulations; it does not send email. Delivery is a per-customer step with written authorization.
- We never claim guaranteed outcomes or use breach statistics we didn't measure ourselves.