Guards API — Mimeo docs
Guards API
Send-time checkpoints: a condition about the person, checked at the moment an email is about to go out, and what to do when it's true.
| Method & path | What it does |
|---|---|
GET /api/v1/guards |
Every guard in evaluation order, what each is holding, plus the condition vocabulary this install knows. |
POST /api/v1/guards |
Create one. |
GET /api/v1/guards/:id |
One guard. |
PATCH /api/v1/guards/:id |
Update it. |
DELETE /api/v1/guards/:id |
Delete it, releasing whatever it held. |
POST /api/v1/guards/:id/toggle |
Body: enabled. Turning one off releases its holds. |
POST /api/v1/guards
{ "name": "Members skip pitches",
"action": "skip",
"scope_kind": "label",
"scope_value": "pitch",
"enabled": true,
"condition": { "type": "has_tag", "tag": "member" } }
Note:action is read from the request body specifically, because action is also Rails' own routing parameter. Send it as JSON and it works as written.
Actions, in escalating order
| Action | What happens to this send |
|---|---|
pause |
Held, and it waits. Releases by itself when the condition stops being true. |
skip |
Dropped, and the person carries on to whatever comes next. |
cancel_sequence |
Their whole run through that sequence ends. |
exit_flow |
Their run through the flow ends. |
Scopes
scope_kind |
Covers |
|---|---|
all |
Every email. scope_value is ignored and cleared. |
label |
Emails carrying that label. |
flow |
Emails scheduled by that flow (by key). |
sequence |
Emails from that sequence (by id). |
broadcast |
That broadcast's sends (by id). |
The built-in suppression guard
Unsubscribed → drop. Always on, not deletable, and toggle refuses it with 422. It's the standing guarantee the entire provider seam rests on: the local database is the suppression authority, checked before every send, whatever the provider does or doesn't do on its side. A guard you can switch off wouldn't be that.
Conditions
The same vocabulary as flow branches and segments — the flow schema lists every type and operator. GET /api/v1/guards returns the install's own fields, tags, products and segments alongside, so a condition can be written without guessing at names.