Skip to main content
When you trigger a definition, GetDialed creates two kinds of records: one job for the triggering event, and one or more executions for the actual runs. You never create jobs or executions directly — they’re always produced by a trigger.

Jobs

A job represents one triggering event and groups every execution it produced. Key fields:
FieldDescription
definition_idThe definition that was triggered
sourceTrigger origin. Defaults to api; recurring schedules set schedule; you can pass your own (e.g., csv_upload)
statusSee the lifecycle table below
record_countHow many executions this job fans out to. 1 for a simple trigger, N when you trigger with records
input_dataThe input object for a single-record trigger
recordsThe record array for a multi-record trigger
metadataArbitrary metadata you attached at trigger time
scheduled_atIf set, the job waits until this time before running
scheduled_job_idLinks back to the scheduled job that fired it, if any
started_at, completed_atLifecycle timestamps

Job status lifecycle

StatusMeaning
pendingCreated, not yet started
scheduledWaiting for its scheduled_at time
runningExecutions are in flight
completedEvery execution succeeded
partially_failedSome executions succeeded, some failed
failedExecutions failed
cancelledCancelled before it ran
A job moves pending → running → completed | partially_failed | failed. Passing scheduled_at at trigger time inserts a scheduled stage before running. Only pending or scheduled jobs can be cancelled (DELETE /jobs/{id}) — anything already running returns 409.

Executions

An execution is one durable run processing one set of inputs. Each belongs to exactly one job:
FieldDescription
job_idThe parent job
definition_idThe definition being run
statusSee the lifecycle table below
input_dataThe inputs this specific run received
workflow_idIdentifier of the underlying durable run
resultThe final output when the run completes
errorThe error message when the run fails
started_at, completed_atLifecycle timestamps

Execution status lifecycle

StatusMeaning
pendingCreated, not yet picked up
runningSteps are executing
completedFinished successfully — result is populated
failedFinished with an error — error is populated
cancelledStopped before completion
An execution moves pending → running → completed | failed. List a job’s executions with GET /jobs/{job_id}/executions and fetch one with GET /executions/{id}.

Single-record vs. multi-record triggers

A trigger creates executions in one of two shapes:
  • Single-record — pass input_data. The job has record_count: 1 and one execution that receives your input_data.
  • Multi-record (fan-out) — pass a records array (up to 15,000,000 records). One execution is created per record, each receiving that record as its input. The job’s record_count is the array length, and its final status aggregates all children: all succeed → completed, all fail → failed, a mix → partially_failed.
See triggering with records for a walkthrough.

Recurring triggers: scheduled jobs

To run a definition on a repeating cadence, create a scheduled job with POST /scheduled-jobs. Each fire creates a normal job — visible under GET /definitions/{id}/jobs with source: "schedule" and a scheduled_job_id pointing back at the schedule — so the job and execution lifecycle above applies unchanged.
FieldDescription
definition_idThe definition to fire. Immutable after creation
descriptionHuman-readable description (1–200 chars)
cron_expression5-field UTC cron, e.g. */15 * * * *
enabledDefault true. Set false to pause without losing fire history
input_dataInput passed to each fired job
metadataFree-form metadata
next_fire_atComputed from the cron expression at read time
last_fired_at, last_fire_statusThe most recent fire and its state: running, success, or failure
Cron expressions are UTC-only and 5-field syntax only. Six-field expressions (with seconds), aliases like @hourly, and any timezone field are rejected with 422.
Fire behavior is fixed: if a previous fire is still running when the next tick arrives, that tick is skipped, not queued. Missed fires during downtime are replayed only within a 60-second catch-up window. Manage schedules with PATCH /scheduled-jobs/{id} (change the cron expression, pause/resume with enabled, update input_data) and DELETE /scheduled-jobs/{id} — deleting a schedule never affects jobs it already fired.