Tinplate 42 Edge APIs

Developer Utilities Tier 3 Ready POST /v1/cron-explainer

Cron Expression Explainer & Next-Runs Calculator API — 5/6/7-Field & Timezones

Validate cron expressions, translate to plain English, and compute next N runs with DST. Validate standard 5-field, 6-field (seconds), AWS/Quartz, and @macros cron expressions, translate them to plain English, and compute next N runs with DST.

Try It Live in Your Browser · No API Key Required

1. Interactive Sandbox & Sample JSON Output

200 OK · Ready

Editable Request JSON (POST /v1/cron-explainer)

Live 200 OK Response Envelope

{
  "ok": true,
  "data": {
    "valid": true,
    "normalized_expression": "0 9 * * 1-5",
    "format": "5-field",
    "timezone": "Europe/Budapest",
    "explanation": "At 09:00, Monday through Friday (Europe/Budapest)",
    "fields": {
      "seconds": "0",
      "minutes": "0",
      "hours": "9",
      "day_of_month": "*",
      "month": "*",
      "day_of_week": "1-5"
    },
    "next_runs": [
      {
        "iso_utc": "2026-11-16T08:00:00.000Z",
        "local_time": "2026-11-16T09:00:00+01:00",
        "epoch_ms": 1794816000000,
        "utc_offset": "+01:00"
      },
      {
        "iso_utc": "2026-11-17T08:00:00.000Z",
        "local_time": "2026-11-17T09:00:00+01:00",
        "epoch_ms": 1794902400000,
        "utc_offset": "+01:00"
      },
      {
        "iso_utc": "2026-11-18T08:00:00.000Z",
        "local_time": "2026-11-18T09:00:00+01:00",
        "epoch_ms": 1794988800000,
        "utc_offset": "+01:00"
      },
      {
        "iso_utc": "2026-11-19T08:00:00.000Z",
        "local_time": "2026-11-19T09:00:00+01:00",
        "epoch_ms": 1795075200000,
        "utc_offset": "+01:00"
      },
      {
        "iso_utc": "2026-11-20T08:00:00.000Z",
        "local_time": "2026-11-20T09:00:00+01:00",
        "epoch_ms": 1795161600000,
        "utc_offset": "+01:00"
      }
    ],
    "warnings": [],
    "errors": []
  },
  "meta": {
    "request_id": "req_cron_01",
    "ms": 2
  }
}

2. Quickstart Code Examples

Full TypeScript & Python SDK →
curl -X POST "https://api.tinplate.dev/v1/cron-explainer" \
  -H "Content-Type: application/json" \
  -H "X-RapidAPI-Key: YOUR_RAPIDAPI_KEY" \
  -d '{"expression":"0 9 * * 1-5","timezone":"Europe/Budapest","next_runs":3,"reference_time":"2026-11-14T08:00:00Z"}'
import { TinplateClient } from "@tinplate/sdk"; // npm install @tinplate/sdk

const tinplate = new TinplateClient({
  rapidApiKey: process.env.RAPIDAPI_KEY!,
});

const { data, meta } = await tinplate.call("/v1/cron-explainer", {
  "expression": "0 9 * * 1-5",
  "timezone": "Europe/Budapest",
  "next_runs": 3,
  "reference_time": "2026-11-14T08:00:00Z"
});
console.log(`[${meta.ms} ms]`, data);
import requests

response = requests.post(
    "https://api.tinplate.dev/v1/cron-explainer",
    headers={
        "Content-Type": "application/json",
        "X-RapidAPI-Key": "YOUR_RAPIDAPI_KEY",
    },
    json={
  "expression": "0 9 * * 1-5",
  "timezone": "Europe/Budapest",
  "next_runs": 3,
  "reference_time": "2026-11-14T08:00:00Z"
}
)
print(response.json())
const response = await fetch("https://api.tinplate.dev/v1/cron-explainer", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "X-RapidAPI-Key": "YOUR_RAPIDAPI_KEY",
  },
  body: JSON.stringify({
  "expression": "0 9 * * 1-5",
  "timezone": "Europe/Budapest",
  "next_runs": 3,
  "reference_time": "2026-11-14T08:00:00Z"
}),
});
const result = await response.json();
console.log(result);
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "tinplate_cron_explainer",
    "arguments": {
      "expression": "0 9 * * 1-5",
      "timezone": "Europe/Budapest",
      "next_runs": 3,
      "reference_time": "2026-11-14T08:00:00Z"
    }
  }
}
OpenAPI 3.0.3 Schema Contract

Request Parameters & Response Schema Reference

Request Body Parameters (POST /v1/cron-explainer)

Parameter Type & Constraints Description
expressionrequired string
minLen: 1, maxLen: 256
5-field UNIX cron, 6-field cron (with leading seconds), or macro (@hourly, @daily, @weekly, @monthly, @yearly, @reboot). Supports L, W, and #.
timezoneoptional string
minLen: 1, maxLen: 64, default: "UTC"
IANA timezone name (e.g. 'UTC', 'Europe/Budapest', 'America/New_York').
countoptional integer
min: 1, max: 50, default: 5
Number of upcoming execution times to compute (1 to 50).
from_timeoptional string Optional ISO-8601 starting timestamp (defaults to current UTC time).

Response data Object Fields (200 OK)

Field Type Description
valid boolean Field 'valid'
normalized_expression string | null Field 'normalized_expression'
format "5-field" | "6-field" | "macro" | "reboot" | "invalid" Field 'format'
timezone string Field 'timezone'
explanation string | null Field 'explanation'
fields object | null Field 'fields'
next_runs object[] Field 'next_runs'
warnings string[] Field 'warnings'
errors string[] Field 'errors'

3. What Cron & Schedule Explainer & Validator API Detects & Validates

Honest Engineering Boundaries

4. Known Limitations & Test Verification

Release Version: v1.0.7 · Last Verified / Benchmarked: 14 November 2026 · Latency Note: Sub-millisecond figures measure in-Worker V8 compute time (typical client HTTPS network RTT to the nearest Cloudflare PoP is 15–65 ms) · See Full Portfolio Benchmarks & Corpora →

5. Marketplace Plans & Payload Quotas

Plan Monthly Price Included Requests Rate Limit Max Request Payload Best For
BASIC $0.00 / month 500 / month (hard limit) 10 req / min 64 KB Evaluation, local development & CI smoke tests
PRO $9.99 / month 15,000 / month 60 req / min 128 KB Solo developers & production apps
ULTRA $29.99 / month 100,000 / month 300 req / min 256 KB Growing SaaS & multi-agent pipelines
MEGA $79.99 / month 500,000 / month 1,000 req / min 256 KB High-volume enterprise workloads

6. Frequently Asked Questions

Does it warn about the classic DOM + DOW cron trap?

Yes! In standard POSIX cron, specifying both day-of-month and day-of-week uses OR logic rather than AND. The API explicitly warns when both are restricted.

Does it support IANA timezones and Daylight Saving Time?

Yes, pass any IANA timezone name (e.g. Europe/Budapest) and it calculates exact local offsets and flags spring-forward/fall-back DST jumps.

Are @daily, @weekly, and 6-field seconds supported?

Yes, both standard macros and 6-field second-precision cron strings are supported.

Zero Payload Logging

7. Data Handling, Privacy & Marketplace Proxy Disclosure

Pure deterministic calculation in V8 memory.

Worker Zero-Logging Guarantee: Cloudflare Workers Observability and invocation logging are disabled in configuration (observability.enabled = false, head_sampling_rate = 0, invocation_logs = false). Payloads are processed strictly in volatile V8 memory and never logged or stored by Tinplate.

Marketplace Proxies vs. Direct Bearer Key: Requests sent via RapidAPI or Zyla API Hub pass through those marketplaces' proxy infrastructure (subject to their respective privacy policies). Security-sensitive workloads requiring end-to-end zero-intermediary processing can connect directly to https://api.tinplate.dev using a Direct Bearer Key (Authorization: Bearer <API_KEY>). Read our full Privacy Notice and OpenAPI 3.0.3 JSON Schema.

Related Tinplate APIs

📆 POST /v1/ics-sanitizer Developer Utilities

ICS / iCalendar Feed Sanitizer & Validator API

Repair broken .ics calendar feeds, normalize Windows timezones to IANA, and parse VEVENTs.

📅 POST /v1/workday-holiday/between Compliance & Business

Workday & Holiday Calculator API

Calculate business days and SLA deadlines across 30+ countries including HU swap Saturdays.

🔢 POST /v1/locale-value-parser AI Data Prep

Text-to-Structured Date, Money & Unit Parser API

Normalize messy EU/US prices, dates, percentages, and measurements into structured JSON.