Call the free swatch internet time api endpoint
Ask for the beat and two fields come back:
curl https://aisenseapi.com/services/v1/swatchinternettime{"beat":"@895","date":"2026-08-19"}Both fields describe the same moment. The beat is the internet-time reading. The date is the ordinary calendar date, so a normal system gets something it can store without reconstructing one value from the other.
Call it again later in the day and the count has moved on:
curl https://aisenseapi.com/services/v1/swatchinternettime{"beat":"@984","date":"2026-08-19"}Nothing else changed between the two calls. The beat climbed because time passed. The count never pauses, never resets per caller and never varies with where the request came from, so two clients calling at the same moment read the same number.
Response fields
| Field | Type | Description |
|---|---|---|
| beat | string | The current beat, with the leading @ that marks the notation. A day runs from beat 0 to beat 999. It is a string, not a number, so strip the @ before doing arithmetic on it. |
| date | string | The ordinary calendar date as YYYY-MM-DD, returned alongside the beat so a caller has both readings from one request. |
The date field is a plain calendar date and nothing more. When you want the full ISO 8601 string for the same instant, with the time and an explicit offset, take it from the Datetime API Endpoint instead.
Responses carry content-type: application/json and cache-control: no-store, so nothing in front of the service is allowed to repeat an old reading. The body above is 35 bytes, which keeps the call cheap for a display that refreshes often.
How a beat is worked out
- Divide the day by 1000
86400 seconds split into 1000 parts gives 86.4 seconds per beat, which is 1 minute 26.4 seconds. An hour is a little under 42 beats. One hundred beats is 2 hours 24 minutes. Hours, minutes and seconds do not appear in the notation at all, only the running count.
- Anchor it to Biel
The count starts at midnight in Biel, Switzerland, which sits at UTC+1 all year with no daylight saving. Swatch named this Biel Mean Time, after the town its headquarters stands in. That anchor is the whole trick, because it is one fixed offset that never shifts.
- Throw the timezones away
Everyone counts from the same anchor, so nobody has a local version of the number. Nothing needs converting and no offset travels alongside the value. Callers who need the ordinary model of named zones and their current offsets should read the Timezones API Endpoint.
The formula in one line
The arithmetic is small enough to keep in your head:
beat = floor(((utc_seconds_since_midnight + 3600) mod 86400) / 86.4)So the free swatch internet time api endpoint exists mainly for convenience. A browser page, a shell script or an embedded display can show the value without implementing that line, and every client in a system then reads its beat off one clock rather than off several.
Two things make a hand-rolled version drift. A machine with a wrong clock produces a wrong beat and never finds out, and a naive implementation that counts from local midnight instead of Biel midnight is off by the local offset. One HTTP call sidesteps both, at the cost of a round trip.
Where it goes wrong
A beat is 86.4 seconds wide, so this is a coarse clock. Two events a minute apart usually land on the same beat, and nothing in the value lets you put them back in order. Anything needing second resolution belongs in the Timestamp API Endpoint, and anything finer than a second belongs in the Microtimestamp API Endpoint.
The count wraps from 999 back to 0 at midnight in Biel, which is 23:00 UTC. That catches people twice. Beats are not monotonic across a day boundary, so they will not sort a log on their own, and you should keep the date field next to them. The rollover also lands a full hour before UTC midnight, so a fresh @000 does not mean a fresh UTC date.
Nothing consumes this format either. No operating system parses it, no protocol accepts it, no database has a column type for it. Treat what the free swatch internet time api endpoint returns as a display value, and store a real timestamp underneath whenever the reading has to survive, be compared, or be handed to another system.
Where it came from
Swatch, the Swiss watchmaker, introduced Internet Time in 1998 and sold watches that displayed beats. The pitch fitted the moment. The web had just made it normal to talk to someone twelve timezones away, and the company argued that a network-native clock should not be tied to a place. Announcing a new unit of time is also, of course, very good marketing for a watch company.
It never displaced ordinary time. No standards body adopted it. No operating system shipped it. The watches stopped being the point fairly quickly. What the notation did instead was survive as a curiosity. An online game used it for a server clock, which gave players in different countries one number to arrange things by, and beats still turn up in demo scenes, status pages and hobby projects that want a clock belonging to the network rather than to a country.
That is the honest description of this endpoint: a genuinely timezone-free notation with a real design idea behind it, kept alive because it is fun, not because anything depends on it.
Common uses
Novelty clock display
Drive a dashboard tile, a terminal prompt or a small e-ink panel with a clock that reads @895 and needs no date library to render.
Timezone-free coordination
Stamp messages in a global chat room or a game lobby with a beat, so people in six countries read one number and nobody works out whose evening it is.
Teaching time representations
Put it next to a Unix timestamp and an ISO 8601 string to show that a moment can be counted from different anchors in different units, and that the anchor is the part that matters.
Retro-styled interfaces
Fit a late-nineties or cyberpunk visual theme with a clock format that actually dates from that era, rather than faking one.
Privacy and limits
The free swatch internet time api endpoint takes no input, so the request holds nothing about the caller worth storing. The answer depends only on the server clock.
The base URL is https://aisenseapi.com/services/v1. There is no key, no account and no sign-up step. The service-wide limit is 5000 requests per IP per 24 hours, which is far more than a display clock needs when you poll once a beat.
Watch your caching. The value changes every 86.4 seconds, so keep the response out of any cache or CDN rule that would hand back a stale beat.
Sibling clock endpoints share the same budget. They are grouped on the Time APIs hub, and every endpoint in the collection is listed on the Free public REST APIs reference.