Skip to main content

Scheduled Jobs

Posta runs scheduled background jobs for maintenance tasks. All times are UTC.

List Jobs

GET /api/v1/admin/jobs

Response:

{
"success": true,
"data": [
{
"name": "account-cleanup",
"schedule": "0 2 * * *",
"running": false,
"last_run_at": "2026-01-15T02:00:00Z",
"last_error": "",
"next_run_at": "2026-01-16T02:00:00Z"
},
{
"name": "retention-cleanup",
"schedule": "0 3 * * *",
"running": false,
"last_run_at": "2026-01-15T03:00:00Z",
"last_error": "",
"next_run_at": "2026-01-16T03:00:00Z"
}
]
}

Each entry includes:

FieldTypeDescription
namestringJob identifier
schedulestringCron expression
runningbooleanWhether the job is currently executing
last_run_atstring|nullISO-8601 timestamp of last execution
last_errorstringLast error message, empty if last run succeeded
next_run_atstring|nullISO-8601 timestamp of next scheduled run

Built-in Jobs

JobScheduleDescription
account-cleanupDaily at 02:00 UTCPermanently deletes user accounts whose scheduled deletion date has passed
retention-cleanupDaily at 03:00 UTCPurges expired email logs, inbound emails, webhook deliveries, audit events, and tracking data based on platform retention settings
daily-reportDaily at 07:00 UTCEnqueues per-workspace daily summary report emails for workspace owners and admins
api-key-expiryDaily at 08:00 UTCNotifies workspace admins of API keys expiring within 7 days
bounce-alertDaily at 09:00 UTCAlerts workspace admins when their bounce rate exceeds 5% over the past 24 hours
campaign-restartEvery 5 minutesRe-enqueues batches for campaigns that have been stuck in sending status for more than 10 minutes
note

The cron manager is only active when the Asynq Redis queue is configured. If the queue is unavailable, no jobs run and GET /api/v1/admin/jobs returns an empty list.