| name | cronlytic |
| description | Cronlytic cron job scheduler API via curl. Use this skill to create, manage, pause/resume scheduled HTTP requests and webhook automation. |
| vm0_env | CRONLYTIC_API_KEY, CRONLYTIC_USER_ID |
Cronlytic
Use Cronlytic via direct curl calls to schedule and manage cron jobs that trigger HTTP requests/webhooks.
Official docs:
https://www.cronlytic.com/api-documentation
When to Use
Use this skill when you need to:
- Schedule recurring HTTP requests (webhooks, API calls)
- Automate background tasks without managing servers
- Create cron jobs with standard 5-field expressions
- Pause/resume jobs dynamically
- Monitor job execution via logs
Prerequisites
- Sign up at Cronlytic
- Go to Dashboard → API Keys → Generate New API Key
- Copy your API Key and User ID
export CRONLYTIC_API_KEY="your-api-key"
export CRONLYTIC_USER_ID="your-user-id"
Base URL
https://api.cronlytic.com/prog/
Important: When using
$VARin a command that pipes to another command, wrap the command containing$VARinbash -c '...'. Due to a Claude Code bug, environment variables are silently cleared when pipes are used directly.bash -c 'curl -s "https://api.example.com" -H "Authorization: Bearer $API_KEY"' | jq .
How to Use
1. Health Check (Ping)
Check if API is available (no auth required):
bash -c 'curl -s -X GET "https://api.cronlytic.com/prog/ping"' | jq .
Response: {"message": "pong"}
2. Create a Cron Job
Create a scheduled job to call a webhook.
Write to /tmp/cronlytic_request.json:
{
"name": "daily-backup",
"url": "https://api.example.com/backup",
"method": "POST",
"headers": {"Authorization": "Bearer token123"},
"body": "{\"type\": \"full\"}",
"cron_expression": "0 2 * * *"
}
Then run:
bash -c 'curl -s -X POST "https://api.cronlytic.com/prog/jobs" -H "X-API-Key: ${CRONLYTIC_API_KEY}" -H "X-User-ID: ${CRONLYTIC_USER_ID}" -H "Content-Type: application/json" -d @/tmp/cronlytic_request.json' | jq '{job_id, name, status, next_run_at}'
3. Create GET Request Job
Simple health check every 5 minutes.
Write to /tmp/cronlytic_request.json:
{
"name": "health-check",
"url": "https://api.example.com/health",
"method": "GET",
"headers": {},
"body": "",
"cron_expression": "*/5 * * * *"
}
Then run:
bash -c 'curl -s -X POST "https://api.cronlytic.com/prog/jobs" -H "X-API-Key: ${CRONLYTIC_API_KEY}" -H "X-User-ID: ${CRONLYTIC_USER_ID}" -H "Content-Type: application/json" -d @/tmp/cronlytic_request.json' | jq .
4. List All Jobs
Get all your scheduled jobs:
bash -c 'curl -s -X GET "https://api.cronlytic.com/prog/jobs" -H "X-API-Key: ${CRONLYTIC_API_KEY}" -H "X-User-ID: ${CRONLYTIC_USER_ID}"' | jq '.[] | {job_id, name, status, cron_expression, next_run_at}'
5. Update a Job
Update an existing job (all fields required).
Write to /tmp/cronlytic_request.json:
{
"name": "daily-backup-v2",
"url": "https://api.example.com/backup/v2",
"method": "POST",
"headers": {"Authorization": "Bearer newtoken"},
"body": "{\"type\": \"incremental\"}",
"cron_expression": "0 3 * * *"
}
Then run:
JOB_ID="your-job-id"
bash -c 'curl -s -X PUT "https://api.cronlytic.com/prog/jobs/${JOB_ID}" -H "X-API-Key: ${CRONLYTIC_API_KEY}" -H "X-User-ID: ${CRONLYTIC_USER_ID}" -H "Content-Type: application/json" -d @/tmp/cronlytic_request.json' | jq .
6. Pause a Job
Stop a job from executing:
JOB_ID="your-job-id"
bash -c 'curl -s -X POST "https://api.cronlytic.com/prog/jobs/${JOB_ID}/pause" -H "X-API-Key: ${CRONLYTIC_API_KEY}" -H "X-User-ID: ${CRONLYTIC_USER_ID}"' | jq '{job_id, status}'
7. Resume a Job
Resume a paused job:
JOB_ID="your-job-id"
bash -c 'curl -s -X POST "https://api.cronlytic.com/prog/jobs/${JOB_ID}/resume" -H "X-API-Key: ${CRONLYTIC_API_KEY}" -H "X-User-ID: ${CRONLYTIC_USER_ID}"' | jq '{job_id, status, next_run_at}'
8. Get Job Logs
View execution history (last 50 entries):
JOB_ID="your-job-id"
bash -c 'curl -s -X GET "https://api.cronlytic.com/prog/jobs/${JOB_ID}/logs" -H "X-API-Key: ${CRONLYTIC_API_KEY}" -H "X-User-ID: ${CRONLYTIC_USER_ID}"' | jq '.logs[] | {timestamp, status, response_code, response_time}'
9. Delete a Job
Permanently delete a job and its logs:
JOB_ID="your-job-id"
bash -c 'curl -s -X DELETE "https://api.cronlytic.com/prog/jobs/${JOB_ID}" -H "X-API-Key: ${CRONLYTIC_API_KEY}" -H "X-User-ID: ${CRONLYTIC_USER_ID}"' | jq .
Cron Expression Format
Standard 5-field cron: minute hour day month day-of-week
┌───────────── minute (0-59)
│ ┌───────────── hour (0-23)
│ │ ┌───────────── day of month (1-31)
│ │ │ ┌───────────── month (1-12)
│ │ │ │ ┌───────────── day of week (0-6, Sun=0)
│ │ │ │ │
* * * * *
Common Examples
| Expression | Description |
|---|---|
*/5 * * * * |
Every 5 minutes |
0 * * * * |
Every hour at minute 0 |
0 9 * * * |
Daily at 9:00 AM |
0 9 * * 1-5 |
Weekdays at 9:00 AM |
0 0 1 * * |
First day of month at midnight |
30 14 * * 0 |
Sunday at 2:30 PM |
0 */6 * * * |
Every 6 hours |
Job Status Values
| Status | Description |
|---|---|
pending |
Scheduled, waiting for next_run_at |
paused |
Paused, won't execute |
success |
Last execution succeeded |
failed |
Last execution failed |
quota_reached |
Skipped due to plan quota |
Create Job Parameters
| Field | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | Job name (1-50 chars, alphanumeric/-/_) |
url |
string | Yes | Target URL (HTTP/HTTPS) |
method |
string | Yes | HTTP method (GET, POST, PUT, DELETE) |
headers |
object | Yes | Request headers (can be {}) |
body |
string | Yes | Request body (can be "") |
cron_expression |
string | Yes | 5-field cron expression |
Job Name Rules
- Only letters, numbers, hyphens (
-), underscores (_) - Length: 1-50 characters
- Regex:
^[a-zA-Z0-9_-]+$
Valid: my-job, test_job_1, API-Health-Check
Invalid: my job (space), test@job (@), api.health (.)
Response Fields
| Field | Description |
|---|---|
job_id |
Unique job identifier |
name |
Job name |
url |
Target URL |
method |
HTTP method |
status |
Current job status |
cron_expression |
Schedule expression |
next_run_at |
Next scheduled execution (ISO timestamp) |
created_at |
Creation timestamp |
Guidelines
- Ping first: Call
/pingto warm up the API (Lambda cold start) - All fields required: When creating/updating, provide all fields
- Valid cron only: Use standard 5-field cron format
- Job names: Use alphanumeric with hyphens/underscores only
- Check logs: Use the logs endpoint to debug failed jobs
- Dashboard: Use https://www.cronlytic.com/dashboard for visual management
- Plan limits: Free tier has job limits - upgrade if needed