Skip to content
All updates

WorldTimeAPI Is Gone. Your Code Doesn't Have to Change.

2026-10-30

For years, worldtimeapi.org/api/timezone/Europe/London was the URL you pasted when you needed the time. Tutorials used it. Dashboards used it. A lot of ESP32 clocks on a lot of desks used it.

Then it stopped answering. Its status page showed 15.48% uptime for the month before January 11, 2025, and 2.79% by November 2025 (Python forum). In 2026 it shut down for good. Since April its API has answered 410 Gone (archived response): "WorldTimeAPI has been sunset. This endpoint is gone."

So we built the exit ramp. TimeLogic now serves the WorldTimeAPI API, path for path, on api.timelogicapi.com.

The whole migration

- http://worldtimeapi.org/api/timezone/Europe/London
+ https://api.timelogicapi.com/api/timezone/Europe/London?api_key=YOUR_KEY

That's it. Same path after the domain. No /v1. No new response format to learn. Your JSON parser, your .txt line splitter, your dst_until null check: all of it keeps working.

curl "https://api.timelogicapi.com/api/timezone/Europe/London?api_key=YOUR_KEY"
{
  "utc_offset": "+00:00",
  "timezone": "Europe/London",
  "day_of_week": 1,
  "day_of_year": 6,
  "datetime": "2025-01-06T18:39:05.049000+00:00",
  "utc_datetime": "2025-01-06T18:39:05.049000+00:00",
  "unixtime": 1736188745,
  "raw_offset": 0,
  "week_number": 2,
  "dst": false,
  "abbreviation": "GMT",
  "dst_offset": 0,
  "dst_from": null,
  "dst_until": null,
  "client_ip": "203.0.113.7"
}

Recognise it? You should. That's the WorldTimeAPI time object, all 15 fields, same names, same types, same key order.

Every route you used

RouteWhat you get
/api/timezoneEvery zone name, as a JSON array
/api/timezone/{area}The zones in one area (Europe, America, Etc …)
/api/timezone/{area}/{location}[/{region}]The time object for a zone
/api/ipThe time object for the caller's IP
/api/ip/{ip}The time object for any IPv4 or IPv6 address

Put .txt on the end of any of them and you get text/plain, key: value lines, exactly like before.

Matched against the real thing

We didn't guess the contract. The routes were built against 21 archived worldtimeapi.org responses from 2019 to 2025 (JSON, .txt, zone lists and errors) pulled from the Internet Archive, and they're checked against those captures in the test suite. The details carry over:

  • datetime and utc_datetime with six fractional digits and a numeric offset.
  • dst_from / dst_until as UTC instants during DST and null outside it (an empty value in .txt).
  • Real tzdata abbreviations: GMT, BST, EST, -03.
  • Zone names in any case: europe/london works.
  • Errors byte-for-byte: 404 {"error":"unknown location"}, Error: unknown location on .txt.
  • Open CORS and charset=utf-8 content types.
  • WorldTimeAPI's final 596-zone list, plus America/Coyhaique from newer tzdata.

The one real difference: a key

WorldTimeAPI was keyless. TimeLogic is not: every request carries an API key, accepted the same three ways as the rest of the API:

  • Authorization: Bearer YOUR_KEY
  • X-API-Key: YOUR_KEY
  • ?api_key=YOUR_KEY for spreadsheets, Power BI, and devices that can't set headers

The Free plan gives you 10,000 requests a month, no credit card. The compatible routes share the same quota and metering as the rest of the API, and WorldTimeAPI-style 404s don't count against it.

A bonus WorldTimeAPI never had: signatures

Add sign=true and the response comes back with a detached Ed25519 signature in six X-TimeLogic-* headers. The body stays byte-identical, so your WorldTimeAPI parser never notices. It works on JSON and on .txt.

curl -i "https://api.timelogicapi.com/api/timezone/Etc/UTC.txt?sign=true&api_key=YOUR_KEY"

Verify it with the public key, or paste it into the verifier. Details in signed responses.

Small print, stated up front

  • Microseconds end in 000: the clock behind it counts milliseconds.
  • .txt lines are alphabetical, WorldTimeAPI's fixed order from 2019 to mid-2024 (after that its order changed on every request).
  • Time zone and IP data are current, so a handful of IP lookups may land differently than they did years ago.

And when you want more

The same key unlocks the full World Time API: time zone lookup by IP or coordinates, conversion between zones, DST transitions, business days across 249 countries, and bulk requests. Use the compatible routes to keep old code alive and /v1 for everything new.

Ship it

  1. Get a free key.
  2. Swap worldtimeapi.org for api.timelogicapi.com.
  3. Deploy.

Everything else is in the WorldTimeAPI-compatible routes docs and the migration guide. To try the routes with your key before you change any code, open the interactive WorldTimeAPI-compatible reference.

Code for your language (JavaScript, Python, PHP, Go, Java, C#, Ruby, curl, ESP32) and fixes for the errors people hit while moving: Migrate from WorldTimeAPI.