deterministic
no-api-key
time
calendar
recurrence

RRULE expander: RFC 5545 recurrence rule to concrete occurrence dates

RRULE expander: expand an RFC 5545 recurrence rule into concrete occurrence timestamps. Accepts an RRULE string with DTSTART, an IANA time zone, and optional EXDATE and RDATE lists, and returns up to 200 occurrences as both local wall-clock times and UTC instants. Supports FREQ, INTERVAL, COUNT, UNTIL, BYDAY, BYMONTHDAY, BYMONTH, BYSETPOS and WKST. Occurrences moved by a DST gap carry gap: true. Rules needing over 50,000 candidate evaluations are rejected.

Output (data): occurrences [{local, instant, epoch_ms, offset, dst, gap (present, true, only when a DST gap shifted the occurrence forward)}], count, truncated, rule (the parsed rule: freq, interval (integer), wkst, and, when given, count, until, byday [], bymonthday [], bymonth [], bysetpos [], byhour [], byminute [], bysecond []), zone.

Deterministic: identical input returns identical output, so the response is served with Cache-Control: private, max-age=31536000, immutable (the paying client may cache it indefinitely; shared caches must not, because the response is paid).

Price: $0.05 USDC per call (x402, Base). Route contract version 1.0.0. Docs: https://api.duoleads.com/docs#time-rrule

get/v1/time/rrule

Request

  • Base URL: https://api.duoleads.com
  • URL: https://api.duoleads.com/v1/time/rrule
  • Auth: none declared

Query parameters

rrulestring required

RFC 5545 RRULE, e.g. FREQ=MONTHLY;BYDAY=-1FR;COUNT=6. Accepted: at most 512 characters.

dtstartstring required

First occurrence, YYYY-MM-DDTHH:MM:SS local to zone. Accepted: YYYY-MM-DDTHH:MM:SS.

zonestring required

IANA time zone id. Accepted: an IANA time zone id, e.g. Europe/Amsterdam.

countinteger

Maximum occurrences to return, 1-200. Default 20. Accepted: integer 1-200.

afterstring

RFC 3339 instant; skip occurrences before it. Accepted: RFC 3339 timestamp.

exdatestring

Comma-separated local datetimes to exclude. Accepted: at most 1024 characters.

rdatestring

Comma-separated local datetimes to add. Accepted: at most 1024 characters.

Response

Paid and settled. data is route-specific; a route that judges its input returns 200 with data.valid: false for a bad value.

okunknown required
route'/v1/time/rrule' required
version'1.0.0' required

Changes

No recorded changes to this operation across all 1 revision of this API.