Api Endpoint

RRULE Recurrence Expander

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.

Open interactive test console

Offering

Provider
api.duoleads.com
Method
GET
Offering type
Api Endpoint
Transport type
http
Category
General Utilities
Delivery
Not provided
Pricing model
Not provided
x402 version
2

Endpoint context

URL
https://api.duoleads.com/v1/time/rrule
MIME type
application/json
First seen
2026-10-16T01:50:38.788Z
Last seen
Tags
rrule, recurrence, recurring-events, calendar, Time

Payment pricing

x402 payment terms are the authoritative price for calling this endpoint.

Payment option 1
0.05 USDC
Atomic price: 50000 · Network: eip155:8453 · Asset: USDC · Scheme: exact
Raw x402 terms
[
  {
    "scheme": "exact",
    "network": "eip155:8453",
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "amount": "50000",
    "payTo": "0xCD673f7e1daD254347AEab6be0DEFe8b9C6b3A39"
  }
]

Observed health

Status
Healthy
Latest latency
365 ms
Average latency
347 ms
HTTP status
402
Last checked
Reachability
100% over 14 checks

Latency is measured to the first response headers. A reachable result does not verify response accuracy or merchant identity.

Input schema

{
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "const": "http"
    },
    "method": {
      "type": "string",
      "enum": [
        "GET"
      ]
    },
    "queryParams": {
      "type": "object",
      "properties": {
        "rrule": {
          "type": "string",
          "description": "RFC 5545 RRULE, e.g. FREQ=MONTHLY;BYDAY=-1FR;COUNT=6.",
          "maxLength": 512
        },
        "dtstart": {
          "type": "string",
          "description": "First occurrence, YYYY-MM-DDTHH:MM:SS local to zone.",
          "maxLength": 32
        },
        "zone": {
          "type": "string",
          "description": "IANA time zone id.",
          "maxLength": 64
        },
        "count": {
          "type": "string",
          "description": "Maximum occurrences to return, 1-200. Default 20.",
          "pattern": "^[+-]?\\d+$",
          "maxLength": 64,
          "default": "20"
        },
        "after": {
          "type": "string",
          "description": "RFC 3339 instant; skip occurrences before it.",
          "maxLength": 64
        },
        "exdate": {
          "type": "string",
          "description": "Comma-separated local datetimes to exclude.",
          "maxLength": 1024
        },
        "rdate": {
          "type": "string",
          "description": "Comma-separated local datetimes to add.",
          "maxLength": 1024
        }
      },
      "required": [
        "rrule",
        "dtstart",
        "zone"
      ]
    }
  },
  "required": [
    "type",
    "method"
  ],
  "additionalProperties": false
}

Output schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "input": {
      "additionalProperties": false,
      "properties": {
        "method": {
          "enum": [
            "GET"
          ],
          "type": "string"
        },
        "queryParams": {
          "properties": {
            "after": {
              "description": "RFC 3339 instant; skip occurrences before it.",
              "maxLength": 64,
              "type": "string"
            },
            "count": {
              "default": "20",
              "description": "Maximum occurrences to return, 1-200. Default 20.",
              "maxLength": 64,
              "pattern": "^[+-]?\\d+$",
              "type": "string"
            },
            "dtstart": {
              "description": "First occurrence, YYYY-MM-DDTHH:MM:SS local to zone.",
              "maxLength": 32,
              "type": "string"
            },
            "exdate": {
              "description": "Comma-separated local datetimes to exclude.",
              "maxLength": 1024,
              "type": "string"
            },
            "rdate": {
              "description": "Comma-separated local datetimes to add.",
              "maxLength": 1024,
              "type": "string"
            },
            "rrule": {
              "description": "RFC 5545 RRULE, e.g. FREQ=MONTHLY;BYDAY=-1FR;COUNT=6.",
              "maxLength": 512,
              "type": "string"
            },
            "zone": {
              "description": "IANA time zone id.",
              "maxLength": 64,
              "type": "string"
            }
          },
          "required": [
            "rrule",
            "dtstart",
            "zone"
          ],
          "type": "object"
        },
        "type": {
          "const": "http",
          "type": "string"
        }
      },
      "required": [
        "type",
        "method"
      ],
      "type": "object"
    },
    "output": {
      "properties": {
        "example": {
          "properties": {
            "data": {
              "properties": {
                "count": {
                  "type": "integer"
                },
                "occurrences": {
                  "items": {
                    "properties": {
                      "dst": {
                        "type": "boolean"
                      },
                      "epoch_ms": {
                        "type": "integer"
                      },
                      "gap": {
                        "type": "boolean"
                      },
                      "instant": {
                        "type": "string"
                      },
                      "local": {
                        "type": "string"
                      },
                      "offset": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "local",
                      "instant",
                      "epoch_ms",
                      "offset",
                      "dst"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "rule": {
                  "properties": {
                    "byday": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "byhour": {
                      "items": {
                        "type": "integer"
                      },
                      "type": "array"
                    },
                    "byminute": {
                      "items": {
                        "type": "integer"
                      },
                      "type": "array"
                    },
                    "bymonth": {
                      "items": {
                        "type": "integer"
                      },
                      "type": "array"
                    },
                    "bymonthday": {
                      "items": {
                        "type": "integer"
                      },
                      "type": "array"
                    },
                    "bysecond": {
                      "items": {
                        "type": "integer"
                      },
                      "type": "array"
                    },
                    "bysetpos": {
                      "items": {
                        "type": "integer"
                      },
                      "type": "array"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "freq": {
                      "type": "string"
                    },
                    "interval": {
                      "type": "integer"
                    },
                    "until": {
                      "type": "string"
                    },
                    "wkst": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "freq",
                    "interval",
                    "wkst"
                  ],
                  "type": "object"
                },
                "truncated": {
                  "type": "boolean"
                },
                "zone": {
                  "type": "string"
                }
              },
              "required": [
                "occurrences",
                "count",
                "truncated",
                "rule",
                "zone"
              ],
              "type": "object"
            },
            "meta": {
              "properties": {
                "computed_at": {
                  "description": "RFC 3339 UTC with milliseconds",
                  "type": "string"
                },
                "deterministic": {
                  "type": "boolean"
                },
                "disclaimer": {
                  "type": "string"
                },
                "price_usd": {
                  "type": "string"
                },
                "request_id": {
                  "type": "string"
                },
                "sources": {
                  "items": {
                    "required": [
                      "id",
                      "version",
                      "published"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "required": [
                "request_id",
                "computed_at",
                "price_usd",
                "deterministic",
                "disclaimer"
              ],
              "type": "object"
            },
            "ok": {
              "const": true
            },
            "route": {
              "const": "/v1/time/rrule"
            },
            "version": {
              "type": "string"
            }
          },
          "required": [
            "ok",
            "route",
            "version",
            "data",
            "meta"
          ],
          "type": "object"
        },
        "type": {
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    }
  },
  "required": [
    "input"
  ],
  "type": "object"
}