curl -X POST "https://api.hookpulse.io/v1/api/add_cron_schedule/" \
-H "x-hookpulse-api-key: {{x-hookpulse-api-key}}" \
-H "x-brand-uuid: {{x-brand-uuid}}" \
-H "Content-Type: application/json" \
-d '{
"cron_expression": "0 0 * * *",
"cron_timezone": "Asia/Kolkata",
"is_one_off_task": false,
"schedule_to": "webhook",
"model_to_schedule_uuid": "{{model_to_schedule_uuid}}",
"initial_context_template": {
"key": "value"
}
}'
const response = await fetch('https://api.hookpulse.io/v1/api/add_cron_schedule/', {
method: 'POST',
headers: {
'x-hookpulse-api-key': '{{x-hookpulse-api-key}}',
'x-brand-uuid': '{{x-brand-uuid}}',
'Content-Type': 'application/json'
},
body: JSON.stringify({
cron_expression: '0 0 * * *',
cron_timezone: 'Asia/Kolkata',
is_one_off_task: false,
schedule_to: 'webhook',
model_to_schedule_uuid: '{{model_to_schedule_uuid}}',
initial_context_template: {
key: 'value'
}
})
});
const data = await response.json();
console.log(data);
import requests
url = 'https://api.hookpulse.io/v1/api/add_cron_schedule/'
headers = {
'x-hookpulse-api-key': '{{x-hookpulse-api-key}}',
'x-brand-uuid': '{{x-brand-uuid}}',
'Content-Type': 'application/json'
}
payload = {
'cron_expression': '0 0 * * *',
'cron_timezone': 'Asia/Kolkata',
'is_one_off_task': False,
'schedule_to': 'webhook',
'model_to_schedule_uuid': '{{model_to_schedule_uuid}}',
'initial_context_template': {
'key': 'value'
}
}
response = requests.post(url, headers=headers, json=payload)
print(response.json())
require 'net/http'
require 'json'
require 'uri'
uri = URI('https://api.hookpulse.io/v1/api/add_cron_schedule/')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['x-hookpulse-api-key'] = '{{x-hookpulse-api-key}}'
request['x-brand-uuid'] = '{{x-brand-uuid}}'
request['Content-Type'] = 'application/json'
request.body = {
cron_expression: '0 0 * * *',
cron_timezone: 'Asia/Kolkata',
is_one_off_task: false,
schedule_to: 'webhook',
model_to_schedule_uuid: '{{model_to_schedule_uuid}}',
initial_context_template: {
key: 'value'
}
}.to_json
response = http.request(request)
puts JSON.parse(response.body)
<?php
$url = "https://api.hookpulse.io/v1/api/add_cron_schedule/";
$data = [
'cron_expression' => '0 0 * * *',
'cron_timezone' => 'Asia/Kolkata',
'is_one_off_task' => false,
'schedule_to' => 'webhook',
'model_to_schedule_uuid' => '{{model_to_schedule_uuid}}',
'initial_context_template' => [
'key' => 'value'
]
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'x-hookpulse-api-key: {{x-hookpulse-api-key}}',
'x-brand-uuid: {{x-brand-uuid}}',
'Content-Type: application/json'
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
{
"success": true,
"details": "Schedule added successfully"
}
Scheduling
Add Schedule (Cron)
Create a new cron-based schedule that executes a webhook or workflow using standard cron expressions
POST
/
v1
/
api
/
add_cron_schedule
/
curl -X POST "https://api.hookpulse.io/v1/api/add_cron_schedule/" \
-H "x-hookpulse-api-key: {{x-hookpulse-api-key}}" \
-H "x-brand-uuid: {{x-brand-uuid}}" \
-H "Content-Type: application/json" \
-d '{
"cron_expression": "0 0 * * *",
"cron_timezone": "Asia/Kolkata",
"is_one_off_task": false,
"schedule_to": "webhook",
"model_to_schedule_uuid": "{{model_to_schedule_uuid}}",
"initial_context_template": {
"key": "value"
}
}'
const response = await fetch('https://api.hookpulse.io/v1/api/add_cron_schedule/', {
method: 'POST',
headers: {
'x-hookpulse-api-key': '{{x-hookpulse-api-key}}',
'x-brand-uuid': '{{x-brand-uuid}}',
'Content-Type': 'application/json'
},
body: JSON.stringify({
cron_expression: '0 0 * * *',
cron_timezone: 'Asia/Kolkata',
is_one_off_task: false,
schedule_to: 'webhook',
model_to_schedule_uuid: '{{model_to_schedule_uuid}}',
initial_context_template: {
key: 'value'
}
})
});
const data = await response.json();
console.log(data);
import requests
url = 'https://api.hookpulse.io/v1/api/add_cron_schedule/'
headers = {
'x-hookpulse-api-key': '{{x-hookpulse-api-key}}',
'x-brand-uuid': '{{x-brand-uuid}}',
'Content-Type': 'application/json'
}
payload = {
'cron_expression': '0 0 * * *',
'cron_timezone': 'Asia/Kolkata',
'is_one_off_task': False,
'schedule_to': 'webhook',
'model_to_schedule_uuid': '{{model_to_schedule_uuid}}',
'initial_context_template': {
'key': 'value'
}
}
response = requests.post(url, headers=headers, json=payload)
print(response.json())
require 'net/http'
require 'json'
require 'uri'
uri = URI('https://api.hookpulse.io/v1/api/add_cron_schedule/')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['x-hookpulse-api-key'] = '{{x-hookpulse-api-key}}'
request['x-brand-uuid'] = '{{x-brand-uuid}}'
request['Content-Type'] = 'application/json'
request.body = {
cron_expression: '0 0 * * *',
cron_timezone: 'Asia/Kolkata',
is_one_off_task: false,
schedule_to: 'webhook',
model_to_schedule_uuid: '{{model_to_schedule_uuid}}',
initial_context_template: {
key: 'value'
}
}.to_json
response = http.request(request)
puts JSON.parse(response.body)
<?php
$url = "https://api.hookpulse.io/v1/api/add_cron_schedule/";
$data = [
'cron_expression' => '0 0 * * *',
'cron_timezone' => 'Asia/Kolkata',
'is_one_off_task' => false,
'schedule_to' => 'webhook',
'model_to_schedule_uuid' => '{{model_to_schedule_uuid}}',
'initial_context_template' => [
'key' => 'value'
]
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'x-hookpulse-api-key: {{x-hookpulse-api-key}}',
'x-brand-uuid: {{x-brand-uuid}}',
'Content-Type: application/json'
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
{
"success": true,
"details": "Schedule added successfully"
}
Create a new cron-based schedule that executes a webhook or workflow using standard cron expressions with full timezone support.
Base URL
All API requests should be made to:https://api.hookpulse.io
Example request
curl -X POST "https://api.hookpulse.io/v1/api/add_cron_schedule/" \
-H "x-hookpulse-api-key: {{x-hookpulse-api-key}}" \
-H "x-brand-uuid: {{x-brand-uuid}}" \
-H "Content-Type: application/json" \
-d '{
"cron_expression": "0 0 * * *",
"cron_timezone": "Asia/Kolkata",
"is_one_off_task": false,
"schedule_to": "webhook",
"model_to_schedule_uuid": "{{model_to_schedule_uuid}}",
"initial_context_template": {
"key": "value"
}
}'
const response = await fetch('https://api.hookpulse.io/v1/api/add_cron_schedule/', {
method: 'POST',
headers: {
'x-hookpulse-api-key': '{{x-hookpulse-api-key}}',
'x-brand-uuid': '{{x-brand-uuid}}',
'Content-Type': 'application/json'
},
body: JSON.stringify({
cron_expression: '0 0 * * *',
cron_timezone: 'Asia/Kolkata',
is_one_off_task: false,
schedule_to: 'webhook',
model_to_schedule_uuid: '{{model_to_schedule_uuid}}',
initial_context_template: {
key: 'value'
}
})
});
const data = await response.json();
console.log(data);
import requests
url = 'https://api.hookpulse.io/v1/api/add_cron_schedule/'
headers = {
'x-hookpulse-api-key': '{{x-hookpulse-api-key}}',
'x-brand-uuid': '{{x-brand-uuid}}',
'Content-Type': 'application/json'
}
payload = {
'cron_expression': '0 0 * * *',
'cron_timezone': 'Asia/Kolkata',
'is_one_off_task': False,
'schedule_to': 'webhook',
'model_to_schedule_uuid': '{{model_to_schedule_uuid}}',
'initial_context_template': {
'key': 'value'
}
}
response = requests.post(url, headers=headers, json=payload)
print(response.json())
require 'net/http'
require 'json'
require 'uri'
uri = URI('https://api.hookpulse.io/v1/api/add_cron_schedule/')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['x-hookpulse-api-key'] = '{{x-hookpulse-api-key}}'
request['x-brand-uuid'] = '{{x-brand-uuid}}'
request['Content-Type'] = 'application/json'
request.body = {
cron_expression: '0 0 * * *',
cron_timezone: 'Asia/Kolkata',
is_one_off_task: false,
schedule_to: 'webhook',
model_to_schedule_uuid: '{{model_to_schedule_uuid}}',
initial_context_template: {
key: 'value'
}
}.to_json
response = http.request(request)
puts JSON.parse(response.body)
<?php
$url = "https://api.hookpulse.io/v1/api/add_cron_schedule/";
$data = [
'cron_expression' => '0 0 * * *',
'cron_timezone' => 'Asia/Kolkata',
'is_one_off_task' => false,
'schedule_to' => 'webhook',
'model_to_schedule_uuid' => '{{model_to_schedule_uuid}}',
'initial_context_template' => [
'key' => 'value'
]
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'x-hookpulse-api-key: {{x-hookpulse-api-key}}',
'x-brand-uuid: {{x-brand-uuid}}',
'Content-Type: application/json'
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
Request body
| Field | Type | Required | Description |
|---|---|---|---|
cron_expression | string | Yes | Standard cron expression (e.g., "0 0 * * *" for daily at midnight) |
cron_timezone | string | Yes | IANA timezone identifier (use Get Timezone Options to get valid values) |
is_one_off_task | boolean | Yes | Set to true if the schedule should run only once, false for recurring execution |
schedule_to | string | Yes | Target type: "webhook" or "workflow" |
model_to_schedule_uuid | string | Yes | UUID of the webhook or workflow template to schedule (as per schedule_to) |
initial_context_template | object | No | Key-value pairs passed as {{ initial.key }} variables to the webhook/workflow |
Example response
{
"success": true,
"details": "Schedule added successfully"
}
Response fields
| Field | Type | Description |
|---|---|---|
success | boolean | Indicates if the schedule was created successfully |
details | string | Success message |
Cron Expression Format
Cron expressions use the standard 5-field format:* * * * *
│ │ │ │ │
│ │ │ │ └─── Day of week (0-7, where 0 and 7 are Sunday)
│ │ │ └───── Month (1-12)
│ │ └─────── Day of month (1-31)
│ └───────── Hour (0-23)
└─────────── Minute (0-59)
Common Cron Examples
| Expression | Description |
|---|---|
0 0 * * * | Every day at midnight |
0 9 * * 1-5 | Every weekday at 9 AM |
0 */6 * * * | Every 6 hours |
0 0 1 * * | First day of every month at midnight |
0 0 1,15 * * | 1st and 15th of every month at midnight |
0 9 * * 0 | Every Sunday at 9 AM |
*/15 * * * * | Every 15 minutes |
0 0-23/2 * * * | Every 2 hours |
Timezone Support
HookPulse supports all 500+ IANA timezones. Use the Get Timezone Options endpoint to get the complete list. Common timezones:America/New_York- Eastern TimeAmerica/Chicago- Central TimeAmerica/Los_Angeles- Pacific TimeEurope/London- GMT/BSTAsia/Kolkata- India Standard TimeUTC- Coordinated Universal Time
Initial Context Template
Theinitial_context_template object allows you to pass variables to your webhook or workflow that can be accessed using {{ initial.key }} syntax:
- In request body:
{{ initial.key }}will be replaced with the value - In headers:
{{ initial.key }}can be used in header values - In query params:
{{ initial.key }}can be used in query parameters - In path:
{{ initial.key }}can be used in URL paths
- System secrets:
{{ #secret_key }}for vault secrets - Workflow step responses:
{{ step.response.variable }}in workflows
Use Cases
- Daily Reports: Generate reports every day at 9 AM
- Weekly Maintenance: Run maintenance tasks every Sunday at 2 AM
- Monthly Billing: Process billing on the 1st of every month
- Business Hours: Execute during business hours only (with rules)
- Complex Patterns: Create sophisticated scheduling patterns
Examples
Daily at 9 AM (Business Days) - Recurring
{
"cron_expression": "0 9 * * 1-5",
"cron_timezone": "America/New_York",
"is_one_off_task": false,
"schedule_to": "webhook",
"model_to_schedule_uuid": "{{model_to_schedule_uuid}}"
}
Every Hour - Recurring
{
"cron_expression": "0 * * * *",
"cron_timezone": "UTC",
"is_one_off_task": false,
"schedule_to": "webhook",
"model_to_schedule_uuid": "{{model_to_schedule_uuid}}"
}
Monthly on 1st and 15th - Recurring
{
"cron_expression": "0 0 1,15 * *",
"cron_timezone": "Asia/Kolkata",
"is_one_off_task": false,
"schedule_to": "workflow",
"model_to_schedule_uuid": "{{model_to_schedule_uuid}}",
"initial_context_template": {
"billing_cycle": "bi-monthly"
}
}
One-Time Execution at Specific Time
{
"cron_expression": "0 9 1 1 *",
"cron_timezone": "America/New_York",
"is_one_off_task": true,
"schedule_to": "webhook",
"model_to_schedule_uuid": "{{model_to_schedule_uuid}}"
}
Related Documentation
- Scheduling Overview - Learn about all scheduling types and rules
- Get Timezone Options - Get list of available timezones
- Add Interval Schedule - Create interval-based schedules
Authorizations
API key for authentication. Get this from your dashboard by selecting a brand and going to API Keys section.
Brand UUID for authentication. Get this from your dashboard after adding a brand - it will be displayed in the UI.
Body
application/json
Cron schedule configuration
Standard cron expression (e.g., '0 0 * * *' for daily at midnight)
IANA timezone identifier
Target type: 'webhook' or 'workflow'
Available options:
webhook, workflow UUID of the webhook or workflow template to schedule
Key-value pairs passed as {{ initial.key }} variables to the webhook/workflow

