---
{
  "id": "platform.cron.targets-and-delivery",
  "topic": "cron",
  "title": "Cron targets and delivery",
  "locale": "en",
  "version": "2026-09-06",
  "summary": "Cron has six closed targets: Agent wakeup, conversation message, Workflow run, in-app notification, outbound delivery, and allowlisted action call.",
  "content": "Omitting `target` uses `agent_wakeup` for the current Agent, which must be external. `conversation_message` requires an accessible `conversationId`. `workflow_run` requires an active owned `workflowId`; Web/API v1 may leave it Agent-less and omit `message`. It creates no wakeup outbox. Its 102400-byte payload includes Cron IDs/times, `message`, `metadata`, timezone, and derived local date/time fields. A deterministic retry reuses the Workflow run; an unavailable Workflow records a visible skip.\n\n`notify` creates a free in-app `cron_result`, never wakes an Agent, and needs a 1–100 character `title`, non-empty `message`, and optional single-slash in-app `url`. Its per-fire key preserves distinct reminders inside the 24-hour push window and deduplicates replay. Even with caller attribution it uses the owner scope, capped at 50 delivered or pending-reserved fires per rolling day.\n\n`outbound_delivery` needs an active owned `endpointId`, `event`, and optional JSON `bodyTemplate`; Agent callers need endpoint write access at creation and fire time. Rendering uses the Cron time/message/metadata context and enforces 262144 bytes. Existing price, endpoint/owner limits, wallet, audit, and SSRF-safe transport apply. A transaction lock plus unique `source_fire_event_id` returns replay's receipt before Redis or debit. Endpoint loss and insufficient credit skip visibly; infrastructure failures retry.\n\n`action_call` needs a bound owned Agent, `action`, and object `arguments`. Fire time renders string leaves and rechecks registry policy, schema, and size. Confirmation, progress, cancellation, deprecated/removed actions and Cron, Trigger, Workflow, Agent, or Memory namespaces are denied. The fire ID is the idempotency key; detached execution avoids blocking ticks. `arinova.note.create_note` is supported with normal authorization.\n\nAll targets revalidate dependencies at fire time. Messages are redacted; metadata/dedupe never bypass authorization, quota, billing, or audit.\n",
  "aliases": [
    "agent wakeup",
    "conversation message",
    "scheduled message",
    "cron target",
    "conversationId",
    "delivery target",
    "workflow run",
    "workflowId",
    "notify target",
    "scheduled notification",
    "outbound delivery",
    "scheduled action"
  ],
  "tags": [
    "cron",
    "delivery",
    "target"
  ],
  "relatedActions": [
    "arinova.cron.schedule",
    "arinova.cron.get_job",
    "arinova.note.create_note"
  ],
  "relatedActionPrefixes": [],
  "url": "https://docs.arinova.ai/en/kb/cron/targets-and-delivery/"
}
---

Omitting `target` uses `agent_wakeup` for the current Agent, which must be external. `conversation_message` requires an accessible `conversationId`. `workflow_run` requires an active owned `workflowId`; Web/API v1 may leave it Agent-less and omit `message`. It creates no wakeup outbox. Its 102400-byte payload includes Cron IDs/times, `message`, `metadata`, timezone, and derived local date/time fields. A deterministic retry reuses the Workflow run; an unavailable Workflow records a visible skip.

`notify` creates a free in-app `cron_result`, never wakes an Agent, and needs a 1–100 character `title`, non-empty `message`, and optional single-slash in-app `url`. Its per-fire key preserves distinct reminders inside the 24-hour push window and deduplicates replay. Even with caller attribution it uses the owner scope, capped at 50 delivered or pending-reserved fires per rolling day.

`outbound_delivery` needs an active owned `endpointId`, `event`, and optional JSON `bodyTemplate`; Agent callers need endpoint write access at creation and fire time. Rendering uses the Cron time/message/metadata context and enforces 262144 bytes. Existing price, endpoint/owner limits, wallet, audit, and SSRF-safe transport apply. A transaction lock plus unique `source_fire_event_id` returns replay's receipt before Redis or debit. Endpoint loss and insufficient credit skip visibly; infrastructure failures retry.

`action_call` needs a bound owned Agent, `action`, and object `arguments`. Fire time renders string leaves and rechecks registry policy, schema, and size. Confirmation, progress, cancellation, deprecated/removed actions and Cron, Trigger, Workflow, Agent, or Memory namespaces are denied. The fire ID is the idempotency key; detached execution avoids blocking ticks. `arinova.note.create_note` is supported with normal authorization.

All targets revalidate dependencies at fire time. Messages are redacted; metadata/dedupe never bypass authorization, quota, billing, or audit.
