Core concepts

Executions & Runs

Executions & Runs

Run history, statuses, and error details per dispatch.

Every time Underlayer attempts to dispatch a task or cron job occurrence, it creates an execution run. Runs are immutable records with a full audit trail of what was sent, when, and what came back.

Run statuses

  • pending: waiting for execute_at.
  • processing: claimed by the worker; HTTP dispatch in progress.
  • retrying: dispatch failed but retries remain; waiting for next_retry_at.
  • success: terminal; last dispatch returned a 2xx status.
  • dead: terminal; retries exhausted without a 2xx (dead-letter queue).
  • cancelled: terminal; cancelled by the system (e.g. execution/storage limits).

Viewing runs in the dashboard

Open Activity to see all runs across your workspace. You can filter by:

  • Status (pending, processing, retrying, success, dead, cancelled)
  • Task or cron job name
  • Date range
  • HTTP method

Run detail

Clicking a run shows the full detail:

  • Request: URL, method, headers, payload sent.
  • Response: HTTP status code, response body, duration.
  • Timing: scheduled at, dispatched at, completed at.
  • Retry info: attempt number and total attempts for this task.

Fetching runs via API

GET /api/v1/scheduler/runs?status=dead&page=1&page_size=50

The response includes a total count for pagination and an array of run objects with the same fields visible in the dashboard.