Developer API & CLI
Every tool on this site is also a command-line and JSON endpoint. No API key, no account — just a GET request. There is no rate limit, so please keep request volume reasonable.
All time values are UTC. Cron expressions are evaluated in UTC, the same way Kubernetes, GitHub Actions, and Quartz evaluate them.
Quick start
curl https://tick.pro/cron?expr=*/5%20*%20*%20*%20*curl "https://tick.pro/cron?expr=*/5%20*%20*%20*%20*&format=json"curl -H "Accept: application/json" https://tick.pro/nowOne URL, three formats
The same endpoint serves all three, so you never have to pick a different host for a script:
| Request | Response | Content-Type |
|---|---|---|
| Browser (default) | Interactive HTML page | text/html |
| curl, wget, httpie | Aligned plain text | text/plain |
| ?format=json | JSON | application/json |
| Accept: application/json | JSON | application/json |
Response shape
Every JSON response carries a tool field naming the endpoint, so a client can tell what it got. Errors return HTTP 400 with a JSON body too — never an empty response.
{
"tool": "cron",
"expression": "*/5 * * * *",
"human": "At every 5 minutes",
"nextRuns": [
{
"utc": "2026-09-28 14:10:00 UTC",
"iso": "2026-09-28T14:10:00.000Z",
"epoch": 1790604600,
"relative": "in 2m"
}
]
}What "data" contains
Tool endpoints return their computed result under a data key: the parsed cron expression with its next runs, the current time in every supported zone with DST state, the reference tables behind the format pages, and so on. The same values are what the browser draws, so a script and a person always see the same answer.
A few pages have nothing to compute and return "data": null rather than an empty object: the category hubs, the crontab linter (which needs a POST body), and the Pomodoro timer (which runs in the browser). That is deliberate — a null is a truthful "no structured data for this route", so a client can branch on it instead of parsing an empty result.
All endpoints
71 endpoints. Every one of them accepts format=json.
| Endpoint | Parameters | Example |
|---|---|---|
| / tick.pro — Developer Time & Scheduling Toolkit | none | curl "https://tick.pro/?format=json" |
| /time Time & Epoch Toolkit — Unix Timestamps, Converters | none | curl "https://tick.pro/time?format=json" |
| /cron Cron & Schedule Intelligence — Expression Builder, Parser | expr* = */5 * * * * | curl "https://tick.pro/cron?expr=*%2F5%20*%20*%20*%20*&format=json" |
| /timezone Timezone Converter & World Clocks — UTC, EST, PST, IST | none | curl "https://tick.pro/timezone?format=json" |
| /formats Date Formats & Standards — ISO 8601, RFC 3339, SQL | none | curl "https://tick.pro/formats?format=json" |
| /calculators Time & Date Calculators — Duration, Business Days, Age | none | curl "https://tick.pro/calculators?format=json" |
| /time/unix-timestamp Current Unix Timestamp — Live Epoch Seconds & Milliseconds | none | curl "https://tick.pro/time/unix-timestamp?format=json" |
| /time/epoch-converter Epoch Converter — Convert Unix Timestamps to Human Dates | epoch = 1700000000 | curl "https://tick.pro/time/epoch-converter?epoch=1700000000&format=json" |
| /time/timestamp-converter Multi-Format Timestamp Converter — ISO, RFC, SQL | none | curl "https://tick.pro/time/timestamp-converter?format=json" |
| /time/date-difference Date Difference Calculator — Precise Duration Between Dates | from = 2024-01-01to = 2024-12-31 | curl "https://tick.pro/time/date-difference?from=2024-01-01&to=2024-12-31&format=json" |
| /time/seconds-to-hours Seconds to Hours Converter — Time Unit Calculator | seconds = 3600 | curl "https://tick.pro/time/seconds-to-hours?seconds=3600&format=json" |
| /time/milliseconds-converter Milliseconds Converter — Human Readable Time | ms = 3600000 | curl "https://tick.pro/time/milliseconds-converter?ms=3600000&format=json" |
| /time/start-of-day Start of Day/Week/Month Timestamps — Boundary Calculator | date = 2024-06-15 | curl "https://tick.pro/time/start-of-day?date=2024-06-15&format=json" |
| /time/utc-now UTC Now — Real-Time Atomic UTC Clock | none | curl "https://tick.pro/time/utc-now?format=json" |
| /time/iso-week-date ISO Week Date Converter — 2024-W03-4 ↔ Calendar Date | date = 2024-W03-4 | curl "https://tick.pro/time/iso-week-date?date=2024-W03-4&format=json" |
| /time/relative Relative Time Calculator — "3 Days Ago" to a Date | value = 3 days agodate = 2027-01-01from = 2026-10-14T00:00:00Z | curl "https://tick.pro/time/relative?value=3%20days%20ago&date=2027-01-01&from=2026-10-14T00%3A00%3A00Z&format=json" |
| /cron/generator Cron Expression Generator — Visual Schedule Builder | expr = 0 9 * * 1-5 | curl "https://tick.pro/cron/generator?expr=0%209%20*%20*%201-5&format=json" |
| /cron/parser Cron Expression Parser — Field-by-Field Breakdown | expr = */15 * * * * | curl "https://tick.pro/cron/parser?expr=*%2F15%20*%20*%20*%20*&format=json" |
| /cron/humanizer Cron Humanizer — Convert Cron to Plain English | expr = 0 9 * * 1-5 | curl "https://tick.pro/cron/humanizer?expr=0%209%20*%20*%201-5&format=json" |
| /cron/natural-to-cron Natural Language to Cron — English to Cron Converter | q = every weekday at 9am | curl "https://tick.pro/cron/natural-to-cron?q=every%20weekday%20at%209am&format=json" |
| /cron/next-runs Cron Next Runs — Execution Countdown Calculator | expr = 0 */2 * * *n = 10 (1-25, default 5) | curl "https://tick.pro/cron/next-runs?expr=0%20*%2F2%20*%20*%20*&n=10&format=json" |
| /cron/compare Cron Schedule Collision Detector — Compare Schedules | expr1 = 0 * * * *expr2 = */30 * * * * | curl "https://tick.pro/cron/compare?expr1=0%20*%20*%20*%20*&expr2=*%2F30%20*%20*%20*%20*&format=json" |
| /cron/crontab-linter Crontab Linter — Validate & Explain a Whole Crontab | none | curl "https://tick.pro/cron/crontab-linter?format=json" |
| /cron/every-minute Cron Every Minute — * * * * * | none | curl "https://tick.pro/cron/every-minute?format=json" |
| /cron/every-5-minutes Cron Every 5 Minutes — */5 * * * * | none | curl "https://tick.pro/cron/every-5-minutes?format=json" |
| /cron/every-10-minutes Cron Every 10 Minutes — */10 * * * * | none | curl "https://tick.pro/cron/every-10-minutes?format=json" |
| /cron/every-15-minutes Cron Every 15 Minutes — */15 * * * * | none | curl "https://tick.pro/cron/every-15-minutes?format=json" |
| /cron/every-30-minutes Cron Every 30 Minutes — */30 * * * * | none | curl "https://tick.pro/cron/every-30-minutes?format=json" |
| /cron/every-hour Cron Every Hour — 0 * * * * | none | curl "https://tick.pro/cron/every-hour?format=json" |
| /cron/every-2-hours Cron Every 2 Hours — 0 */2 * * * | none | curl "https://tick.pro/cron/every-2-hours?format=json" |
| /cron/every-6-hours Cron Every 6 Hours — 0 */6 * * * | none | curl "https://tick.pro/cron/every-6-hours?format=json" |
| /cron/every-12-hours Cron Every 12 Hours — 0 */12 * * * | none | curl "https://tick.pro/cron/every-12-hours?format=json" |
| /cron/every-day-at-midnight Cron Daily at Midnight — 0 0 * * * | none | curl "https://tick.pro/cron/every-day-at-midnight?format=json" |
| /cron/every-day-at-noon Cron Daily at Noon — 0 12 * * * | none | curl "https://tick.pro/cron/every-day-at-noon?format=json" |
| /cron/every-weekday-at-9am Cron Weekdays at 9AM — 0 9 * * 1-5 | none | curl "https://tick.pro/cron/every-weekday-at-9am?format=json" |
| /cron/every-weekend Cron Every Weekend — 0 0 * * 6,0 | none | curl "https://tick.pro/cron/every-weekend?format=json" |
| /cron/every-sunday Cron Every Sunday — 0 0 * * 0 | none | curl "https://tick.pro/cron/every-sunday?format=json" |
| /cron/first-day-of-month Cron First Day of Month — 0 0 1 * * | none | curl "https://tick.pro/cron/first-day-of-month?format=json" |
| /cron/github-actions GitHub Actions Cron Schedule — Workflow Validator | expr = 0 9 * * 1-5 | curl "https://tick.pro/cron/github-actions?expr=0%209%20*%20*%201-5&format=json" |
| /cron/kubernetes Kubernetes CronJob Manifest Generator — YAML Builder | expr = 0 */6 * * *name = my-job | curl "https://tick.pro/cron/kubernetes?expr=0%20*%2F6%20*%20*%20*&name=my-job&format=json" |
| /cron/systemd Cron to systemd Timer — .timer Unit File Generator | expr = 0 */6 * * *name = cleanup | curl "https://tick.pro/cron/systemd?expr=0%20*%2F6%20*%20*%20*&name=cleanup&format=json" |
| /timezone/converter Timezone Converter — Interactive Multi-Timezone Planner | none | curl "https://tick.pro/timezone/converter?format=json" |
| /timezone/utc-converter UTC Converter — UTC to Local Timezone Matrix | none | curl "https://tick.pro/timezone/utc-converter?format=json" |
| /timezone/world-clock World Clock — Multi-City Developer World Clock | none | curl "https://tick.pro/timezone/world-clock?format=json" |
| /timezone/est-to-utc EST to UTC Converter — Eastern Time to UTC | none | curl "https://tick.pro/timezone/est-to-utc?format=json" |
| /timezone/pst-to-utc PST to UTC Converter — Pacific Time to UTC | none | curl "https://tick.pro/timezone/pst-to-utc?format=json" |
| /timezone/gmt-to-utc GMT to UTC Converter — Greenwich Mean Time Offset | none | curl "https://tick.pro/timezone/gmt-to-utc?format=json" |
| /timezone/ist-to-utc IST to UTC Converter — Indian Standard Time | none | curl "https://tick.pro/timezone/ist-to-utc?format=json" |
| /timezone/dst-transitions DST Transition Calendar — Daylight Saving Time Changes | tz = America/New_Yorkyear = 2025 | curl "https://tick.pro/timezone/dst-transitions?tz=America%2FNew_York&year=2025&format=json" |
| /timezone/abbreviation Timezone Abbreviation Resolver — CST, EST, PST Explained | abbr = CST | curl "https://tick.pro/timezone/abbreviation?abbr=CST&format=json" |
| /formats/iso-8601 ISO 8601 Date Format — Specification & Validator | none | curl "https://tick.pro/formats/iso-8601?format=json" |
| /formats/rfc-3339 RFC 3339 Internet Timestamp — Standard & Examples | none | curl "https://tick.pro/formats/rfc-3339?format=json" |
| /formats/sql-datetime SQL DateTime Format — MySQL, PostgreSQL, SQLite | none | curl "https://tick.pro/formats/sql-datetime?format=json" |
| /formats/unix-hex Unix Hex Timestamp — Hexadecimal Decoder | hex = 0x6563a8b0 | curl "https://tick.pro/formats/unix-hex?hex=0x6563a8b0&format=json" |
| /formats/cheat-sheet Date Formatting Cheat Sheet — strftime, ISO, Moment.js | none | curl "https://tick.pro/formats/cheat-sheet?format=json" |
| /formats/json-date JSON Date Handling — API Serialization Guide | none | curl "https://tick.pro/formats/json-date?format=json" |
| /formats/date-detector Date Format Detector — Auto-Detect Date Strings | input = 1700000000 | curl "https://tick.pro/formats/date-detector?input=1700000000&format=json" |
| /formats/iso-duration ISO 8601 Duration & Interval Parser — P1DT2H30M | input = P1DT2H30M | curl "https://tick.pro/formats/iso-duration?input=P1DT2H30M&format=json" |
| /formats/epoch-in-languages Unix Timestamp in Any Language — Bash, Python, Go | none | curl "https://tick.pro/formats/epoch-in-languages?format=json" |
| /jwt JWT Timestamp Decoder — exp / iat / nbf to Human Dates | token = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxIiwibmFtZSI6ImRlbW8iLCJleHAiOjIwMDAwMDAwMDAsImlhdCI6MTc2MDAwMDAwMH0.W5K4jR6ZzVQqYB9mXoPvN8sT2wE3uI7yH0aS9dF1gH2 | curl "https://tick.pro/jwt?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxIiwibmFtZSI6ImRlbW8iLCJleHAiOjIwMDAwMDAwMDAsImlhdCI6MTc2MDAwMDAwMH0.W5K4jR6ZzVQqYB9mXoPvN8sT2wE3uI7yH0aS9dF1gH2&format=json" |
| /calculators/duration Time Duration Calculator — Between Two Timestamps | from = 2024-01-01to = 2024-12-31 | curl "https://tick.pro/calculators/duration?from=2024-01-01&to=2024-12-31&format=json" |
| /calculators/days-between Days Between Dates — Calendar & Working Days | from = 2024-01-01to = 2024-12-31 | curl "https://tick.pro/calculators/days-between?from=2024-01-01&to=2024-12-31&format=json" |
| /calculators/add-time Add or Subtract Time from a Date | date = 2024-01-15days = 30hours = 2minutes = 0seconds = 0 | curl "https://tick.pro/calculators/add-time?date=2024-01-15&days=30&hours=2&minutes=0&seconds=0&format=json" |
| /calculators/business-days Business Days Calculator — Workday Counter | from = 2024-01-01to = 2024-12-31 | curl "https://tick.pro/calculators/business-days?from=2024-01-01&to=2024-12-31&format=json" |
| /calculators/age-calculator Age Calculator — Exact Age in Years, Days, Hours | birth = 1990-06-15 | curl "https://tick.pro/calculators/age-calculator?birth=1990-06-15&format=json" |
| /calculators/pomodoro Pomodoro Timer — Developer Focus Timer | none | curl "https://tick.pro/calculators/pomodoro?format=json" |
| /until Countdown Timer — Live Countdown to Any Date | date = 2027-01-01 (a preset name also works: new-year, christmas, halloween, unix-2-billion) | curl "https://tick.pro/until?date=2027-01-01&format=json" |
| /until/new-year New Year Countdown — How Many Days Until New Year | none | curl "https://tick.pro/until/new-year?format=json" |
| /until/christmas Christmas Countdown — How Many Days Until Christmas | none | curl "https://tick.pro/until/christmas?format=json" |
| /until/halloween Halloween Countdown — How Many Days Until Halloween | none | curl "https://tick.pro/until/halloween?format=json" |
| /until/unix-2-billion Unix Timestamp 2 Billion Countdown — Epoch 2000000000 | none | curl "https://tick.pro/until/unix-2-billion?format=json" |
Notes
- URL-encode cron expressions. Spaces must be %20 or +, otherwise the shell splits them. Quote the whole URL.
- Everything is UTC. There is no timezone parameter, because a cron schedule in this API means a UTC schedule — the same contract Kubernetes, GitHub Actions, and Quartz use.
- No key, no limit. Requests are anonymous and uncached. If you build something on top of this, please be reasonable about volume.
- This catalogue is generated. It is built from the same route table the site serves, so it cannot drift out of date.
Frequently Asked Questions
Does the tick.pro API need a key?
No. There is no API key and no account. Every endpoint is a plain GET request that works from curl, a script, or a browser. There is no rate limit, so please keep request volume reasonable.
How do I get JSON instead of text?
Add ?format=json to any endpoint URL, or send an Accept: application/json header. The same URL returns HTML to a browser, plain text to curl, and JSON when asked.
Which endpoints carry structured data?
Every tool endpoint returns its computed result under a data key — the parsed cron expression with its next runs, the current time in every supported zone with its DST state, and the reference tables behind the format pages. Category hubs, the crontab linter, and the Pomodoro timer return "data": null because there is nothing for a GET to compute there.
Are timestamps in the API UTC?
Yes. Every time value is UTC, and cron expressions are evaluated in UTC exactly as Kubernetes, GitHub Actions, and Quartz do.