Triggers

Triggers are automated event handlers. They fire on cron schedules, inbound webhooks, file changes, HTTP polling, incoming email, or at a specific datetime (once). Each trigger executes a shell command or an agent prompt when it fires.

GET/triggersAuthenticated

List all triggers, optionally filtered by type or enabled state.

ParameterTypeRequiredDescription
typestringNoFilter by type (query param)
enabledbooleanNoFilter by enabled state (query param)
curl "http://127.0.0.1:7741/triggers?type=cron&enabled=true" \
  -H "Authorization: Bearer $TOKEN"
GET/triggers/:idAuthenticated

Get a single trigger by ID. Webhook triggers include the computed webhook_url.

POST/triggersAuthenticated

Create a new trigger.

ParameterTypeRequiredDescription
typestringYesTrigger type: cron, webhook, file, http, email, or once
configobjectYesType-specific configuration (see below)
actionobjectYesAction to execute: { type: "shell"|"agent", command?, prompt?, notify? }
labelstringNoHuman-readable display name
enabledbooleanNoStart enabled (default: true)
max_runsnumberNoAuto-disable after N fires (0 = unlimited)

Config by Type

TypeConfig Fields
cronexpression (cron string), timezone?
webhookservice? (stripe, github, paypal, twilio), secret? (HMAC key)
filepaths (string[]), events? (create, modify, delete), debounceMs?
httpurl, method?, headers?, intervalMs?, jqFilter?
emailconnector? (gmail, outlook), user?, intervalMs?
onceat (ISO 8601 datetime string)
curl -X POST http://127.0.0.1:7741/triggers \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "cron",
    "config": { "expression": "0 9 * * MON", "timezone": "America/New_York" },
    "action": { "type": "agent", "prompt": "Summarize my week" },
    "label": "Weekly summary"
  }'
201Response
{
  "ok": true,
  "data": {
    "id": "a1b2c3d4",
    "type": "cron",
    "enabled": true,
    "label": "Weekly summary",
    "run_count": 0,
    "created_at": "2026-03-03T12:00:00Z"
  }
}
PUT/triggers/:idAuthenticated

Update an existing trigger (partial update).

ParameterTypeRequiredDescription
configobjectNoUpdated type-specific config
actionobjectNoUpdated action
labelstringNoUpdated label
enabledbooleanNoEnable or disable
max_runsnumberNoUpdated max runs
DELETE/triggers/:idAuthenticated

Delete a trigger permanently.

200Response
{
  "ok": true,
  "data": {
    "id": "a1b2c3d4",
    "status": "deleted"
  }
}
POST/triggers/:id/toggleAuthenticated

Toggle a trigger between enabled and disabled.

POST/triggers/:id/fireAuthenticated

Manually fire a trigger for testing.

ParameterTypeRequiredDescription
payloadanyNoOptional test payload

Auto-Disable

Triggers auto-disable after 5 consecutive errors or when max_runs is reached. Disabled triggers can be re-enabled via the toggle endpoint.