Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.simplefunctions.dev/llms.txt

Use this file to discover all available pages before exploring further.

SimpleFunctions delivers signed webhook events to endpoints registered via Webhooks. All bodies are JSON. All deliveries include the headers documented in Webhook receiver.

Common envelope

{
  "id": "evt_...",
  "type": "alert.fired",
  "createdAt": "2026-05-01T00:00:00.000Z",
  "deliveryId": "del_...",
  "endpointId": "we_...",
  "data": { /* event-specific */ }
}

alert.fired

{
  "type": "alert.fired",
  "data": {
    "ruleId": "ar_...",
    "watchedObjectId": "wo_...",
    "ticker": "KXRATECUT-26DEC31",
    "condition": "price_above",
    "threshold": 65,
    "snapshot": {
      "priceCents": 67,
      "volume24h": 125000,
      "regimeLabel": "observable_macro_long_skewed"
    },
    "firedAt": "..."
  }
}

alert.paused

Emitted when a rule auto-pauses after repeated delivery failures.
{
  "type": "alert.paused",
  "data": {
    "ruleId": "ar_...",
    "reason": "endpoint_consecutive_failures",
    "failureCount": 5
  }
}

thesis.confidence_changed

{
  "type": "thesis.confidence_changed",
  "data": {
    "thesisId": "th_...",
    "previousConfidence": 0.62,
    "currentConfidence": 0.74,
    "delta": 0.12,
    "trigger": "monitor_cycle | signal | evaluation"
  }
}

thesis.killed

{
  "type": "thesis.killed",
  "data": {
    "thesisId": "th_...",
    "reason": "kill_flag_raised",
    "evaluation": { /* full evaluation that triggered the kill */ }
  }
}

portfolio.tick_completed

{
  "type": "portfolio.tick_completed",
  "data": {
    "tickId": "pt_...",
    "tickAt": "...",
    "executionMode": "dry-run",
    "actionsCount": 3,
    "balanceCents": 100000,
    "exposureCents": 25000,
    "tickDurationMs": 145000
  }
}

portfolio.halt_triggered

{
  "type": "portfolio.halt_triggered",
  "data": {
    "drawdownCents": 51000,
    "haltCapCents": 50000,
    "newExecutionMode": "halted"
  }
}

Dedupe

Each event carries a stable deliveryId. Receivers should idempotency-key on this id. See Webhook receiver for sample code.

Retries

5 attempts, exponential backoff (1s, 4s, 16s, 64s, 256s). After 5 failures, endpoint enters degraded state; after sustained failures over 24h, endpoint auto-pauses.

Test deliveries

sf webhooks test <endpoint-id>
Sends a synthetic alert.fired event with data.snapshot.priceCents = 50.