设置经济数据发布提醒,发布前收到通知

对于 2026 年 11 月 10 日(周二)13:30 UTC 发布的美国消费者价格数据,提前 1 小时的提醒时间是 12:30 UTC。你可以让日历应用订阅 Narwhal 日历订阅源并设置提醒,也可以每天运行一次简短的脚本,列出未来 24 小时内将要发布的数据。提醒由日历应用负责;你也可以用自己的代码把脚本的输出发送到邮箱或聊天工具。

使用 API 完成操作

  1. 获取你的 API 密钥 获取免费 API 密钥,并保存在环境变量 NARWHAL_API_KEY 中。请求发往 https://api.narwhalapi.com,并带上 Authorization: Bearer YOUR_KEY;示例会从该变量读取密钥。
  2. 创建日历订阅源 带上国家和日期范围,发送 POST /v1/calendars/subscriptions。示例请求的是 USA、prices 和 policy_rate 系列、不含节假日,时间范围为 2026 年 10 月 24 日至 2027 年 10 月 23 日。
    curl,创建日历订阅源
    curl -s -X POST https://api.narwhalapi.com/v1/calendars/subscriptions \
      -H "Authorization: Bearer $NARWHAL_API_KEY" -H "Content-Type: application/json" \
      -d '{"countries":["USA"],"start_date":"2026-10-24","end_date":"2027-10-23",
          "include_holidays":false,"families":["prices","policy_rate"]}'
  3. 保存订阅信息 请保存响应中的 subscription_id、url 和 expires_at。.ics 网址只会返回一次,请务必保存好,并把它当作机密。
  4. 用每日脚本发送邮件或聊天消息 要向团队频道发送提醒,请每天运行一次这个脚本,并通过聊天工具的传入 Webhook 发送它的输出。你也可以用自己的代码把输出发送到邮箱。
    Python,未来 24 小时内将要发布的数据
    import os, sys
    from datetime import datetime, timedelta, timezone
    import requests
    
    HEADERS = {"Authorization": f"Bearer {os.environ['NARWHAL_API_KEY']}"}
    COUNTRIES = ["USA", "GBR", "JPN"]
    AHEAD = timedelta(hours=24)
    
    
    def upcoming():
        now = datetime.now(timezone.utc)
        r = requests.get(
            "https://api.narwhalapi.com/v1/economics/calendar",
            headers=HEADERS,
            timeout=10,
            params={
                "countries": COUNTRIES,
                "start_date": now.date().isoformat(),
                "end_date": (now + AHEAD).date().isoformat(),
                "limit": 100,
            },
        )
        r.raise_for_status()
        for x in r.json()["releases"]:
            if x["status"] == "scheduled" and "at" in x:
                at = datetime.fromisoformat(x["at"].replace("Z", "+00:00"))
                if now <= at <= now + AHEAD:
                    yield x, at
    
    
    for release, at in upcoming():
        print(
            f"{release['country']} {release['name']} ({release.get('period')}) "
            f"at {at:%Y-%m-%d %H:%M} UTC"
        )

请提供 1 至 50 个 alpha-3 国家代码,以及相隔不超过 366 天的起止日期(含首尾)。可选的 families 过滤器最多接受 5 个系列。

有效期为创建后 365 天;2026 年 10 月 24 日创建的订阅源会在 2027 年 10 月 24 日到期。include_releases 和 include_holidays 默认都为 true,且至少有一个必须为 true。示例关闭了节假日,保留发布数据。

脚本读取 USA、GBR 和 JPN 的日历,然后输出 at 时间在未来 24 小时内的已安排发布。每行输出包含国家、发布名称、统计期和 UTC 时间。如果没有即将发布的数据,则不输出任何内容。

脚本的时钟和发布时间戳都使用 UTC。它的请求涵盖从运行时刻起到未来 24 小时结束的日历日期,上限为 100 条。

时间戳比较包含两端边界。没有 at 字段的发布,以及状态不是 scheduled 的发布,都会被排除。请求在读取响应之前会调用 raise_for_status(),因此出现 HTTP 错误时,脚本会在输出发布数据之前停止。

无需代码设置提醒

把订阅源网址作为订阅日历添加到你的日历应用。在 Google 日历中,进入“其他日历”>“通过网址添加”,然后粘贴 .ics 网址。Outlook 和 Apple 日历也提供订阅网络日历的选项。请使用订阅请求返回的网址。

示例订阅源包含 prices 和 policy_rate 系列的 USA 发布数据。若要同时包含节假日,请在创建请求中把 include_holidays 设为 true。若只想要节假日,请把 include_releases 设为 false,并让 include_holidays 保持为 true。

为该日历设置默认通知,例如在发布前 1 小时提醒。提醒设置属于日历应用。创建订阅源会得到订阅网址;把它添加到应用中并设置通知,才能让它成为你个人的提醒。

关于订阅源请求,请参阅日历订阅文档。如果想按自己所在的时区查看发布时间,请参阅将发布时间转换为你的时区。

不同情况应选哪种方法

情况最合适的方法原因
个人提醒日历订阅源在日历应用中设置所订阅日历的默认通知
团队频道提醒每日脚本加上聊天工具的传入 Webhook用自己的代码把脚本的发布列表发送到频道
需要知道日期何时变动Webhook在发布日期调整时接收事件

Webhook 会通过 release.scheduled、release.rescheduled 和 release.cancelled 报告发布被添加、改期或取消,并通过 dataset.published 报告数据已发布。它们不会在发布前按计时触发。要提前提醒,请使用日历提醒或脚本;需要这些变更或发布事件时,请使用 Webhook。

发布改期后,订阅源会更新吗?

会。日历应用会按自己的计划重新获取订阅源,并且该订阅源支持 ETag 刷新。延迟来自日历客户端。日期变更会在应用刷新订阅源时同步到所订阅的日历,刷新频率由应用决定。

如何停止日历订阅源?

调用 DELETE /v1/calendars/subscriptions/{subscription_id} 即可撤销。响应为 204,订阅源随即停止。该请求使用创建响应中保存的 subscription_id;订阅源网址则是你提供给日历应用的那个值。

日历订阅源会用掉多少次请求?

创建订阅源用 1 次请求,撤销也用 1 次请求。日历应用之后的获取不会使用你的 Bearer 密钥。虽然日历应用用这个网址获取日历,但仍请对订阅源网址保密。

实例:美国 CPI 提前 1 小时的提醒

从 2026-11-10T13:30:00Z 发布的美国 CPI 开始。13:30 UTC 减去 1 小时,得到提醒时间:2026 年 11 月 10 日 12:30 UTC。把所订阅日历的默认通知设置为事件前 1 小时。

在纽约,同一提醒落在 2026 年 11 月 10 日 07:30 EST;在雅加达则是 2026 年 11 月 10 日 19:30。这些是提醒的当地时间,发布本身在当天的 13:30 UTC。

项目2026 年 11 月 10 日的时间
美国 CPI 发布13:30 UTC
提醒(提前 1 小时)12:30 UTC
纽约的同一提醒(EST)07:30
雅加达的同一提醒19:30

发布于。

后续步骤