Z (UTC / GMT) timezone marker:
Some legacy endpoints still return dates in
GMT-05:00 (New York) β this is being phased out, but for now treat the timezone field as authoritative rather than assuming UTC.Per-endpoint format matrix
Different endpoints use different date formats depending on whether the field is a user activity timestamp, a broadcast schedule, or a catalog release date. Use the per-field reference below to know what to parse for each one. The four formats youβll meet:
Plus the
1970-01-01T00:00:01Z placeholder for βwatched, date unknownβ β see the section below.
Endpoint β field β format
ISO_WITH_OFFSET is authoritative β donβt strip it. The
broadcast date field on episode/airing/calendar endpoints encodes
the originating networkβs timezone deliberately. Stripping the offset
and assuming UTC will silently shift airing schedules by hours (US
shows by 5, Japanese anime by 9). Always parse the timezone too.User timezone preference
Each Simkl member has a configurable timezone on their profile, set at simkl.com/settings/ (with the date and time format alongside it). Third-party apps can read the userβs timezone viaPOST /users/settings β itβs returned as the account.timezone field, an IANA timezone name (e.g. "America/New_York", "Europe/Madrid", "Asia/Tokyo"):
POST /users/settings on a timer or on every app launch / wake. Instead, gate the re-fetch on /sync/activities, which returns a settings.all timestamp alongside the per-list timestamps. The pattern matches every other Sync surface:
The simkl.com settings UI also lets the user pick a date format (e.g.
MM/DD/YYYY) and a time format (12-hour AM/PM vs 24-hour). Those preferences are not currently exposed by POST /users/settings β only account.timezone and account.type come back. Until theyβre added to the API, render dates and times using the deviceβs locale conventions (e.g. 'en-US' for AM/PM, 'en-GB' for 24-hour) inside the userβs profile timezone.βVery long time agoβ placeholder
watched_at, last_watched_at, per-episode watched_at inside seasons[].episodes[], and similar.
On simkl.com, the βWhen did you watch this?β date picker offers it as a smart-suggestion card labelled βVery long time agoβ with the helper line βI donβt rememberβ. Thatβs the canonical user-facing label β clients should mirror it (translated to the userβs locale).
Writing the placeholder
When a user picks the βVery long time ago / I donβt rememberβ option in your appβs date picker, POST1970-01-01T00:00:01Z on the watched_at field. This works on every write endpoint that accepts watch timestamps β POST /sync/history, POST /sync/watched, and so on:
Reading the placeholder
Anywatched_at / last_watched_at value at or near 1970-01-01T00:00:01Z is the placeholder. Detection rule: any timestamp before 2000-01-01 is effectively the βdate unknownβ placeholder. That guard handles both the canonical epoch+1 second value and any near-epoch variations from legacy data.
Render it in your UI as βVery long time agoβ (matching simkl.comβs label) or a localized equivalent β never as the literal January 1, 1970, which looks like a parsing error or a corrupt date to end users.
Node
Python
Date picker UX β mirror simkl.com
The simkl.com βWhen did you watch this?β date picker is the reference UX for date selection across the Simkl ecosystem. Apps that surface their own date pickers should mirror its three-tier structure: Common times (quick-pick buttons):- Just now β current timestamp
- Today β today at the current time
- Yesterday β yesterday at the current time
- Last week β 7 days ago at the current time
- Episode Air Date β pre-fills the episodeβs original broadcast date (label: βOriginal broadcastβ). Useful when a user watched live or wants to record a viewing at the air-date for stats / archival purposes.
- Very long time ago β the
1970-01-01T00:00:01Zplaceholder. Helper line: βI donβt rememberβ. The option that maps to this documented sentinel.
Why this exists
Many users adopt Simkl long after theyβve watched hundreds of titles over the years. They want to record those watches honestly without inventing fake dates. The placeholder lets a client offer the βI donβt rememberβ option that maps to a stable, documented server value. simkl.com renders these entries with the βVery long time agoβ label in history lists, sorts them after dated entries, and never displays the literal1970-01-01 to end users β clients should do the same.