{"slug": "scheduler0", "title": "Scheduler0", "summary": "Scheduler0 launched a scheduling platform that converts plain-English prompts into structured cron jobs, returning fields such as a cron expression, recurrence, start date and end date that developers then commit as recurring, event-anchored jobs. The platform offers real-time logs, job history, success rates and alerts, executes containers, webhooks, scripts or cloud functions across AWS, GCP and Azure, and ships a CLI plus REST API and Go, Python and JavaScript SDKs. Each job invocation carries a payload with the cron spec, IANA timezone and offset in seconds, retry budget and last execution status, with retries capped via a retryMax setting.", "body_md": "# Scheduler0\n\n## A Unified Platform for Cron Jobs. Temporal coordination infrastructure for agentic systems.\n\nSet up, run, and scale scheduled jobs — without the guesswork.\n\nSay goodbye to silent failures and timezone headaches. Scheduler0 helps modern teams schedule jobs across any cloud, monitor execution in real time, and recover automatically when things go wrong.\n\n## Built for Developers\n\nScheduler0 is more than a cron runner — it's your automation engine, \n\nbuilt with DX and observability in mind.\n\n### Full Observability\n\nReal-time logs, job history, success rates, and alerts.\n\n### Flexible Execution\n\nRun containers, webhooks, scripts, or cloud functions.\n\n### Cloud-Native & Multi-Cloud\n\nExecute jobs to AWS, GCP, Azure — or bring your own environment.\n\n### Schedule with Natural Language\n\nLet your end users describe their scheduling needs in plain English. \n\nAI handles the complexity, you focus on building.\n\n``` js\nimport { Client } from \"@scheduler0/scheduler0-node-client\";\n\nconst scheduler0 = Client.newAPIClient(\n  \"https://api.scheduler0.com\",\n  \"v1\",\n  process.env.SCHEDULER0_API_KEY!,\n  process.env.SCHEDULER0_API_SECRET!,\n);\n\n// 1. Your user just describes what they want — in plain English.\nconst [result] = await scheduler0.createJobFromPrompt({\n  prompt: \"Email Acme a recap every Monday at 9am once the trial ends, for 8 weeks\",\n  purposes: [\"customer_success\", \"trial_engagement\"],\n  events: [\"trial_ended\"],     // anchor timing to a real-world event\n  recipients: [\"success@acme.com\"],\n  channels: [\"email\", \"slack\"],\n  timezone: \"America/New_York\",\n});\n\n// 2. Scheduler0 resolves the intent into a structured schedule.\nconst [plan] = result.jobs;\nplan.kind;            // \"DIGEST\"\nplan.recurrence;      // \"every week\"\nplan.cronExpression;  // \"0 9 * * 1\"\nplan.startDate;       // trial_ended + 7 days\nplan.endDate;         // auto-expires 8 weeks later\nplan.subject;         // \"Your weekly Acme recap\"\n\n// 3. Commit it as a real job — recurring, event-anchored,\n//    time-boxed, retried, and scoped to a project + executor.\nawait scheduler0.createJob({\n  projectId: 123,\n  timezone: plan.timezone ?? \"America/New_York\",\n  spec: plan.cronExpression,                 // recurring cron\n  startDate: plan.startDate,                 // begins after the event\n  endDate: plan.endDate,                     // stops on its own\n  data: JSON.stringify({\n    subject: plan.subject,\n    channel: plan.channel,\n    recipients: plan.recipients,\n    delivery: plan.delivery,\n  }),\n  retryMax: 3,                               // auto-retry on failure\n  status: \"active\",\n  executorId: 42,                            // webhook, container, or fn\n  createdBy: \"ai-assistant\",\n});\n```\n\n## Developer Experience You'll Love\n\nFrom CLI to UI to Terraform — schedule and manage jobs however you work.\n\n### scheduler0-cli\n\nCreate, test, and monitor jobs from your terminal.\n\n### API & SDKs\n\nAutomate everything with REST or native SDKs (Go, Python, JS).\n\n## One payload, any runtime\n\nScheduler0 doesn't dictate what your job looks like. It delivers a small, predictable envelope — full scheduling context wrapped around a data blob that is entirely yours.\n\n### Rich where it counts\n\nEvery invocation arrives with the context you'd otherwise have to look up: which project and account it belongs to, the cron spec that fired it, the timezone and its offset, the retry budget, and when the job last ran and how that went.\n\n- spec the cron expression responsible for this run\n- timezone IANA zone plus timezoneOffset in seconds — no DST guesswork\n- retryMax how many attempts you get before the run is abandoned\n- lastExecution* the previous run's timestamp and status, so handlers can self-heal after a miss\n\n```\n{\n  \"job\": {\n    \"projectId\": 311,\n    \"spec\": \"0 2 * * *\",\n    \"data\": \"{\\\"report\\\":\\\"nightly-revenue\\\",\\\"format\\\":\\\"parquet\\\",\\\"recipients\\\":[\\\"finance@acme.com\\\"],\\\"partition\\\":\\\"2026-08-01\\\"}\",\n    \"executorId\": 1,\n    \"startDate\": \"2026-07-01T02:00:00-04:00\",\n    \"endDate\": \"2026-12-31T02:00:00-05:00\",\n    \"lastExecutionDate\": \"2026-07-31T01:46:23-04:00\",\n    \"timezone\": \"America/New_York\",\n    \"timezoneOffset\": -14400,\n    \"retryMax\": 3,\n    \"dateCreated\": \"2026-07-31T01:46:23-04:00\",\n    \"accountId\": 1,\n    \"status\": \"active\"\n  },\n  \"lastExecutionDateTime\": \"2026-08-01T02:00:00-04:00\",\n  \"lastExecutionStatus\": \"scheduled\"\n}\n```\n\n### Your contract, not ours\n\ndata is an opaque string carried through verbatim — put any JSON your handler wants in it. Scheduler0 stores and delivers it untouched.\n\n### Same shape everywhere\n\nWebhook, cloud function, or a local executor running behind your firewall — every target receives the identical envelope, so handlers port between runtimes unchanged.\n\n### Batched when it helps\n\nTurn on payload aggregation and jobs sharing an executor and fire time arrive in one call as {aggregated, jobs} — one round trip instead of N.\n\n```\n{\n  \"aggregated\": true,\n  \"jobs\": [\n    { \"job\": { \"id\": 9134, \"spec\": \"0 2 * * *\", \"data\": \"{…}\" },\n      \"lastExecutionDateTime\": \"2026-08-01T02:00:00-04:00\",\n      \"lastExecutionStatus\": \"scheduled\" },\n    { \"job\": { \"id\": 9135, \"spec\": \"0 2 * * *\", \"data\": \"{…}\" },\n      \"lastExecutionDateTime\": \"2026-08-01T02:00:00-04:00\",\n      \"lastExecutionStatus\": \"scheduled\" }\n  ]\n}\n```\n\n## Fire it now — don't wait for 2 a.m.\n\nPOST /executors/{id}/test-invoke calls your executor immediately with a synthetic job. Nothing is created, nothing is logged, nothing is rescheduled.\n\n```\ncurl -X POST https://api.scheduler0.com/api/v1/executors/1/test-invoke \\\n  -H \"X-API-Key: $SCHEDULER0_API_KEY\" \\\n  -H \"X-Secret-Key: $SCHEDULER0_SECRET_KEY\" \\\n  -H \"X-Account-ID: $SCHEDULER0_ACCOUNT_ID\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"job\": {\n      \"spec\": \"0 2 * * *\",\n      \"timezone\": \"America/New_York\",\n      \"retryMax\": 3,\n      \"data\": \"{\\\"report\\\":\\\"nightly-revenue\\\",\\\"partition\\\":\\\"2026-08-01\\\"}\"\n    },\n    \"age\": \"24h\",\n    \"executionTime\": \"2026-08-01T02:00:00-04:00\"\n  }'\n{\n  \"data\": {\n    \"test\": true,\n    \"executorId\": 1,\n    \"executorType\": \"webhook_url\",\n    \"success\": true,\n    \"startedAt\": \"2026-08-01T01:46:23.442404-04:00\",\n    \"finishedAt\": \"2026-08-01T01:46:23.443657-04:00\",\n    \"durationMs\": 1,\n    \"payload\": {\n      \"job\": {\n        \"spec\": \"0 2 * * *\",\n        \"data\": \"{\\\"report\\\":\\\"nightly-revenue\\\",\\\"partition\\\":\\\"2026-08-01\\\"}\",\n        \"lastExecutionDate\": \"2026-07-31T01:46:23-04:00\",\n        \"timezone\": \"America/New_York\",\n        \"retryMax\": 3,\n        \"status\": \"active\"\n      },\n      \"lastExecutionDateTime\": \"2026-08-01T02:00:00-04:00\",\n      \"lastExecutionStatus\": \"scheduled\"\n    }\n  },\n  \"success\": true\n}\n```\n\n### Time travel the job\n\nSet age to any Go duration and the synthetic job looks that old; set executionTime to control the run timestamp your handler sees.\n\n### See what they got\n\nThe response echoes the exact payload delivered, so you can diff what your endpoint received against what you expected — no logging required on your side.\n\n### Wired up or not\n\nsuccess plus timing tells you whether the executor accepted the call, and error explains it when it didn't — before you trust it to a schedule.\n\n## Cloud-Native Architecture\n\nScheduler0 is designed to be truly cloud-native. The core platform doesn't rely on cloud providers for data storage, using SQLite and Raft consensus instead.\n\n### Built with Go\n\nHigh-performance, compiled language ensures reliability and speed across all environments.\n\n### SQLite & Raft\n\nNo cloud provider lock-in. Self-contained data storage with distributed consensus for high availability.\n\n### Deploy Anywhere\n\nRun on AWS, GCP, Azure, on-premises, or any infrastructure that fits your needs.\n\n### Deployment Options\n\nFor teams that need more control, we offer deployment on your infrastructure with full support and management.\n\n#### Custom Deployment\n\nDeploy Scheduler0 on your own infrastructure. We work directly with your team to set up and configure the platform.\n\n- ✓ Deploy to your cloud or on-premises\n- ✓ Full control over data and infrastructure\n- ✓ Custom SLAs and configurations\n\n#### Managed Infrastructure\n\nLet us manage the infrastructure for you. We handle deployment, updates, and maintenance while you focus on building.\n\n- ✓ Fully managed deployment\n- ✓ Automatic updates and monitoring\n- ✓ Dedicated support and priority assistance\n\n## Simple Pricing\n\n### Free Tier\n\n$0\n\n- 1,000 job executions per month\n- 1,000 AI classify requests per month\n- 1,000 AI prompt requests per month\n- Job payload up to 3kb\n- Up to 3 retries\n- 30 days executions logs retention\n- $5 free AI credits (platform model, no key needed)\n- Bring your own AI model key (BYOK)\n\n### Paid\n\n/month\n\n/year\n\nSave $88/year (15% off)\n\n- 100,000 job executions per month\n- 100,000 AI classify requests per month\n- 100,000 AI prompt requests per month\n- 10 seats for team members\n- Job payload up to 1mb\n- Up to 15 retries\n- 90 days execution logs retention\n- $5 free AI credits (platform model, no key needed)\n- Bring your own AI model key (BYOK)\n\n### Teams\n\nContact Us\n\n- Everything in Paid plan\n- Deploy to your infrastructure\n- Custom SLAs\n- Unlimited seats for team members\n- SSO & SAML\n- Group based access control\n- Dedicated support\n- Migration support\n- Priority feature requests\n- $5 free AI credits (platform model, no key needed)\n- Bring your own AI model key (BYOK)\n\n## Frequently Asked Questions\n\nEverything you need to know about Scheduler0. Can't find an answer? [Check the full docs](https://docs.scheduler0.com).\n\n## What is Scheduler0?\n\nScheduler0 is a cloud-native platform for scheduling and executing cron jobs. Schedule recurring or one-off tasks across AWS, GCP, Azure, or your own infrastructure, monitor every execution in real time, and let Scheduler0 handle retries and recovery automatically — no cron infrastructure to manage.\n\n## How does scheduling work?\n\nJobs use a standard 6-field cron expression (seconds, minutes, hours, day-of-month, month, day-of-week), shorthand macros like `@hourly` or `@daily`, and interval notation like `@every 5m`.\n\nEvery job supports an IANA timezone, optional start and end dates, and a JSON payload passed to the executor at runtime. To schedule a one-off task, omit the cron spec and set only a `startDate`.\n\n## What executor types are supported?\n\nThree executor types are available:\n\n- **Webhook URL** — Scheduler0 sends an HTTP request to your endpoint when the job fires. Supports GET, POST, PUT, and DELETE with an optional secret header.\n- **Cloud Function** — Scheduler0 invokes an AWS, GCP, or Azure function directly using the credentials you configure.\n- **Local** — The Scheduler0 CLI runs a shell command on your own machine. Jobs are pulled by the CLI and results are reported back automatically.\n\n## How does AI scheduling work?\n\nThe `POST /api/v1/ai/prompt` endpoint converts a plain-English description into a fully structured job configuration — including cron spec, timezone, and schedule kind. Each call costs 1 credit.\n\nYou can bring your own model key (BYOK) and configure OpenAI, Anthropic, AWS Bedrock, or OpenRouter as the AI provider via the account AI settings. Live request/response examples are on the [AI page](https://scheduler0.com/ai).\n\n## How does authentication work?\n\nAPI calls are authenticated with three headers: `X-API-Key`, `X-Secret-Key`, and `X-Account-ID`. You create credentials in the dashboard or via the API, and scope them to *read*, *write*, and/or *execute* permissions.\n\nCredentials expire after 90 days. Rotate by creating a new credential, updating your services, then archiving the old one.\n\n## What are the plan limits?\n\n| Limit | Free | Paid ($49/mo) | \n|---|---|---|\n| Executions / month | 1,000 | 100,000 | \n| AI classify requests / month | 1,000 | 100,000 | \n| AI prompt requests / month | 1,000 | 100,000 | \n| Job payload size | 3 KB | 1 MB | \n| Max retries | 3 | 15 | \n| Log retention | 30 days | 90 days | \n\nFor custom limits and dedicated infrastructure, [see our Teams plan](#pricing).\n\n## Can I self-host Scheduler0?\n\nYes — self-hosting is available on the **Paid or Teams plan**. Deploy the Go binary on your own cloud or on-premises servers. Scheduler0 uses SQLite and Raft consensus — no cloud database or message broker required. You own all the data.\n\nSelf-hosted deployments unlock admin APIs for account management, cluster operations, and automated backup and restore. [See the self-hosting docs](https://docs.scheduler0.com/docs/intro) or [contact us about managed deployment options](https://scheduler0.com/demo-request).\n\n## Which SDKs and languages are supported?\n\nOfficial clients are available for **Go**, **Node.js / TypeScript**, and **Python**. A **CLI** is also provided to support terminal workflows and local executor management. Terraform support is available for infrastructure-as-code setups.\n\nAll clients support the full REST API; the full OpenAPI specification is published at [api-reference.scheduler0.com](https://api-reference.scheduler0.com).", "url": "https://wpnews.pro/news/scheduler0", "canonical_source": "https://scheduler0.com", "published_at": "2026-10-24 09:21:09+00:00", "updated_at": "2026-10-24 09:42:34.626976+00:00", "lang": "en", "topics": ["ai-agents", "developer-tools", "ai-tools", "ai-infrastructure"], "entities": ["Scheduler0", "AWS", "GCP", "Azure", "Acme"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/scheduler0", "markdown": "https://wpnews.pro/news/scheduler0.md", "text": "https://wpnews.pro/news/scheduler0.txt", "jsonld": "https://wpnews.pro/news/scheduler0.jsonld"}}