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
https://agentresets.com/api/resets.json— this site's copy of the data, rebuilt whenever a new reset is detected.https://howtok.net/api/resets— the upstream source (same data, updates slightly earlier).
Data shape
{
"schema": 1,
"updated_at": "2026-09-10T06:36:13Z",
"products": {
"codex": {
"name": "Codex",
"vendor": "OpenAI",
"sources": [
"thsottiaux",
"OpenAIDevs"
],
"events": [
{
"id": "2097752790177370535",
"date": "2026-09-09",
"ts": null,
"type": "reset",
"scope": "all",
"source": "thsottiaux",
"url": "https://x.com/thsottiaux/status/2097752790177370535",
"summary": "Banked reset compensation for users affected by incomplete reset application in ChatGPT Work and Codex",
"summary_zh": "\u4e3a ChatGPT Work \u548c Codex \u4e2d\u91cd\u7f6e\u672a\u5b8c\u5168\u751f\u6548\u7684\u53d7\u5f71\u54cd\u7528\u6237\u8865\u53d1\u50a8\u5907\u91cd\u7f6e"
}
]
},
"claude": {
"...": "..."
}
}
}
products.codex.events/products.claude.events— newest first.dateis the announcement date (UTC).tsis the exact post time when known; records imported from public archives havenull.scope:all,paid,Max,Pro+Max,Plus+Pro+Business,affected— parsed from the announcement text.urllinks to the original post. Records without a link came from an archive; the posting account is insource.
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.