QStash · Schema
QStash Schedule
A CRON-based schedule that causes QStash to deliver messages on a recurring basis
Message QueueTask SchedulingServerlessHTTP MessagingBackground JobsWebhooksDead Letter QueueCRONUpstash
Properties
| Name | Type | Description |
|---|---|---|
| scheduleId | string | Unique identifier for the schedule |
| cron | string | CRON expression defining the schedule (e.g. '0 0 * * *'). Supports CRON_TZ prefix for timezone. |
| destination | string | Target URL, URL Group name, or queue destination |
| body | string | Message body to deliver on each invocation |
| header | object | HTTP headers to include in each delivery |
| retries | integer | Number of retry attempts per scheduled delivery |
| createdAt | integer | Unix timestamp when the schedule was created |
| paused | boolean | Whether the schedule is currently paused |
JSON Schema
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://raw.githubusercontent.com/api-evangelist/qstash/main/json-schema/qstash-schedule.json",
"title": "QStash Schedule",
"description": "A CRON-based schedule that causes QStash to deliver messages on a recurring basis",
"type": "object",
"properties": {
"scheduleId": {
"type": "string",
"description": "Unique identifier for the schedule",
"example": "scd_2XavMmRcJHJf7HkNtNqjfVf8uQe"
},
"cron": {
"type": "string",
"description": "CRON expression defining the schedule (e.g. '0 0 * * *'). Supports CRON_TZ prefix for timezone.",
"example": "0 9 * * 1-5"
},
"destination": {
"type": "string",
"description": "Target URL, URL Group name, or queue destination"
},
"body": {
"type": "string",
"description": "Message body to deliver on each invocation"
},
"header": {
"type": "object",
"description": "HTTP headers to include in each delivery",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
}
},
"retries": {
"type": "integer",
"minimum": 0,
"maximum": 5,
"description": "Number of retry attempts per scheduled delivery"
},
"createdAt": {
"type": "integer",
"description": "Unix timestamp when the schedule was created"
},
"paused": {
"type": "boolean",
"description": "Whether the schedule is currently paused",
"default": false
}
},
"required": ["scheduleId", "cron"],
"additionalProperties": false
}