Skip to main content

Scheduling

Job scheduling configuration and fire time preview.

GET /api/job-fire-times​

Preview upcoming execution times for a given schedule configuration.

Authentication: Required

Query Parameters:

ParameterTypeRequiredDescription
intervalstringNoRecurrence expression, in the shape the intervalType expects. Omit it for Once.
intervalTypestringNoOne of Once, Minutes, Hourly, Daily, Weekly, Monthly, Yearly, Custom
timeZonestringNoTimezone (e.g. America/New_York); defaults to the server's guess
startOndateNoStart date
howManyintegerNoNumber of fire times to return (default: 3)

Example:

GET /api/job-fire-times?interval=0 8 * * *&intervalType=Custom&timeZone=America/New_York&howMany=5

A Once schedule has no recurrence to describe, so it takes no interval. It returns a single fire time, or an empty array once startOn has passed:

GET /api/job-fire-times?intervalType=Once&startOn=2051-01-06T09:00:00Z

Response:

A plain array of upcoming run times (ISO 8601 strings).

Preview upcoming fire timesGET /api/job-fire-times?interval=0 8 * * *&intervalType=cron&timeZone=America/New_York&howMany=5
Validates a schedule and returns the next run times as a plain array of ISO 8601 strings. Query params: interval, intervalType, startOn, howMany (default 3), timeZone. (Timestamps shown are placeholders.)
Response · 200
[
"2026-01-15T16:20:00.000Z",
"2026-01-15T16:20:00.000Z",
"2026-01-15T16:20:00.000Z",
"… 2 more items (5 total) — omitted from docs"
]
Captured from the API examples test suite; ids and timestamps are normalized.
Schedule Validation

Use this endpoint before creating or updating a job to validate that the schedule configuration produces the expected execution times.


Job Scheduling Fields​

When creating or updating a job via POST /api/jobs or PUT /api/jobs/{id}, use these fields:

FieldTypeDescription
intervalstringRecurrence expression, in the shape the intervalType expects. null for Once.
intervalTypestringOne of Once, Minutes, Hourly, Daily, Weekly, Monthly, Yearly, Custom. Values are case sensitive.
timezonestringTimezone for schedule interpretation (e.g., "America/New_York")
startOndateJob won't run before this date. For Once, this is the single run.
endOndateJob won't run after this date
enabledbooleanEnable/disable job execution

interval and intervalType describe one schedule between them, so they have to agree. Once is the only type described by startOn alone, and it must send a null interval; every other type is meaningless without one.

Interval Shapes​

Only Custom takes a free-form cron expression. The calendar types take a cron Informer composes for them, and the two frequency types take a shorter form:

intervalTypeinterval shapeExample
Oncenonenull
Minutesthe number of minutes"30"
Hourly0 and the number of hours"0 2"
Dailyminute hour */n * *"0 8 */1 * *"
Weeklyminute hour * * days"0 7 * * MON,WED,FRI"
Monthlyminute hour day 1/n ? *"0 9 1 1/1 ? *"
Customany cron expression"0 17 * * 5"

Cron Expression Format​

Standard cron format: minute hour day month weekday

Examples:

ExpressionDescription
0 8 * * *Daily at 8:00 AM
0 */4 * * *Every 4 hours
0 9 * * 1Every Monday at 9:00 AM
0 0 1 * *First day of month at midnight
*/15 * * * *Every 15 minutes

Simple Interval Format​

Human-readable intervals: <number> <unit>

Examples:

IntervalDescription
1 hourEvery hour
30 minutesEvery 30 minutes
1 dayDaily
1 weekWeekly

Schedule Examples​

Daily Report at 8 AM Eastern​

{
"interval": "0 8 * * *",
"intervalType": "Custom",
"timezone": "America/New_York",
"enabled": true
}

Every 30 Minutes​

{
"interval": "30",
"intervalType": "Minutes",
"enabled": true
}

Run Once at a Specific Time​

A one-time Job runs at startOn and never again. It carries no interval, and once it has run Informer clears its nextRunAt so it is not picked up again.

{
"interval": null,
"intervalType": "Once",
"startOn": "2051-03-01T12:00:00Z",
"enabled": true
}

Weekly on Fridays​

{
"interval": "0 17 * * 5",
"intervalType": "Custom",
"timezone": "America/Los_Angeles",
"enabled": true
}