Usage limit reset JSON API

Free, no key required, CORS enabled, cached for 5 minutes. Use it in bots, menu-bar widgets, userscripts, or status pages.

Endpoints

Data shape

{
  "schema": 1,
  "updated_at": "2026-09-21T07:07:34Z",
  "products": {
    "codex": {
      "name": "Codex",
      "vendor": "OpenAI",
      "sources": [
        "thsottiaux",
        "OpenAIDevs"
      ],
      "events": [
        {
          "id": "2098612714704891959",
          "date": "2026-09-12",
          "ts": "2026-09-12T03:20:36Z",
          "type": "reset",
          "scope": "all",
          "source": "thsottiaux",
          "url": "https://x.com/thsottiaux/status/2098612714704891959",
          "summary": "Hi Astra users. A reset and a quick update on quality issues that have been posted around. Working with some of you, we have found and fixed the following issues: - Some skills written for previous mo",
          "summary_zh": "\u5168\u5458\u91cd\u7f6e\uff0c\u5e76\u901a\u62a5 Astra \u8fd1\u671f\u8d28\u91cf\u95ee\u9898\u7684\u4fee\u590d\uff1a\u65e7\u6280\u80fd\u8bef\u89e6\u53d1\u3001\u4e0a\u4e0b\u6587\u7ba1\u7406\u5b9e\u9a8c\uff08\u7ea6 4-5 \u5343\u7528\u6237\u53d7\u5f71\u54cd\uff0c\u5df2\u5173\u95ed\uff09\u3001\u914d\u7f6e\u4e0d\u5f53\u7684\u5f15\u64ce\u5747\u5df2\u5904\u7406"
        }
      ]
    },
    "claude": {
      "...": "..."
    }
  }
}

Example

const r = await fetch("https://agentresets.com/api/resets.json").then(r => r.json());
const last = r.products.codex.events[0];
console.log(`Last Codex reset: ${last.date} (${last.scope})`);

Attribution is welcome — link back to agentresets.com. Fair use only, please cache and avoid hammering the endpoint.