RESET WATCH DATA SERVICE
Our live read-only API.
These endpoints run on this site. Public upstream data is credited to codex-reset.com; service status comes directly from OpenAI Status. No private account data is read.
- GET /api/live β combined source status, our forecast, records, posts and official components.
- GET /api/forecast β independent historical model and conservative signal rule.
- GET /api/timeline β source records with attribution and retrieval timestamps.
- GET /api/feed β public source feed and freshness.
- GET /api/status β official OpenAI status response with source metadata.
GET/HEAD only. Brief server cache; no API key, arbitrary URL proxy or personal account parameters. Failed sources return an error or partial status, never a fabricated live snapshot. This site does not currently implement an MCP endpoint.
Original provider documentation archive Β· 2 Nov 2026
DEVELOPERS
Original-site API reference
The examples below are archived documentation for codex-reset.com, captured 2 Nov 2026. Reset Watch does not host these API or MCP services. Check the original provider for current availability, access requirements and terms.
The one condition: credit
- Show the source where the data appears. A site, app, bot message, dashboard, MCP tool or API that passes this data on names the source and links to it on the same surface: βData: codex-reset.comβ, linked to https://codex-reset.com/. A credit on a separate page does not count, and neither does βcomputed hereβ over numbers read from /api/forecast.
- Identify server-side readers. Send a User-Agent that names the project and a way to reach it, for example myproject/1.0 (+https://myproject.example). When traffic has to be cut, anonymous readers go first.
- Relays carry the credit with them. An API or MCP server that wraps these endpoints credits the source in its own documentation and, where the format allows, in the payload: "source": "https://codex-reset.com/".
- Personal use needs no visible credit. A private script, a cron job that pings your own phone, a team chat alert: the identifying User-Agent is enough.
Copy this: Data: codex-reset.com
Readers that republish the data without credit, or hide who they are, are blocked at the firewall without notice. Credit restores access β write to the contact address in the footer.
MCP server
https://codex-reset.com/mcp| Tool | What it returns | Arguments (all optional) |
|---|---|---|
get_reset_forecast |
Probability of a reset in the next 24 and 48 hours, confidence, the last confirmed reset and any active official signal. A forecast, not a promise. | locale |
get_reset_timeline |
Dated record of verified resets and related announcements, newest first, each with its source URL. | group (reset | boost | unlock | credits), from, to (YYYY-MM-DD), limit (1β50, default 10), locale |
get_codex_status |
Current Codex service state, to tell an outage apart from a usage limit. | locale |
- Streamable HTTP, JSON-RPC 2.0, protocol 2025-06-18. POST only; a GET answers 405.
- Read-only and stateless: no session, no auth, no write tools. locale is en, zh, ja or es and changes only the human-readable copy.
- Tools read the same data as the JSON endpoints, so an agent and a browser never disagree.
Connect an agent
One line, then ask βdid Codex reset today?β
Claude Code
HTTP transport, user or project scope.
claude mcp add --transport http codex-reset https://codex-reset.com/mcp{
"mcpServers": {
"codex-reset": { "type": "http", "url": "https://codex-reset.com/mcp" }
}
}Codex
Codex CLI and the IDE extension read ~/.codex/config.toml.
[mcp_servers.codex-reset]
url = "https://codex-reset.com/mcp"Cursor
Project file .cursor/mcp.json, or the global one under ~/.cursor.
{
"mcpServers": {
"codex-reset": { "url": "https://codex-reset.com/mcp" }
}
}Anything else
Any client that speaks streamable HTTP takes the bare URL. To check the server by hand:
curl -sS https://codex-reset.com/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'JSON API
| Endpoint | What it returns | Fields to build on | Query |
|---|---|---|---|
GET /api/forecast |
Reset probability for the next 24h and 48h, confidence, last confirmed reset, days since, and the active official signal if there is one. | probabilities.rounded_24h, probabilities.rounded_48h, confidence, last_reset_at, age_days, official_signal, updated_at |
tz=<IANA zone> localises the likely-hours window |
GET /api/timeline |
Every reset and banked-reset announcement with its date, type, summary and source URL. | events[].id, announced_at, announcement_state, group, type, summary, url |
locale=zh|ja|es adds translated summaries |
GET /api/feed |
Tibo's announcement feed as ingested, with fetch time, content age, a staleness flag and the current headline signal. | tweets[], events[], signal, newest_post_at, fetched_at, stale |
locale=zh|ja|es |
GET /api/status-history |
Current Codex service state per surface, the 90-day incident record, and any reset explicitly linked to an outage. | current, surfaces, incidents[], compensation_links, stats, checked_at, stale |
β |
Rules of the road
- A reset is real when the timeline says so. The signal is an /api/timeline event with group "reset" and announcement_state "announced"; equivalently, /api/forecast last_reset_at moves forward. That is the same condition the β Telegram alert fires on. A rising probability is not a reset.
- Banked resets are a separate fact. banked_state (announced, arriving, available, unknown) never updates a reset timestamp, a count or a cadence. Treat it as supplemental.
- Poll once a minute at most. Responses are published copies refreshed about once a minute and served with Cache-Control: max-age=60; polling faster returns the same bytes. x-published-checked-at and x-published-expires-at say how fresh a copy is. Honour Retry-After on a 429.
- Depend only on documented fields. Paths and the fields named on this page are stable. Anything else in a payload may move or disappear without notice. Classifier internals and alert decisions are never exposed.
- GET only. Everything documented here is a GET. The POST routes under /api/ are this site's own interface β prayers, push subscriptions, ingest β and are not part of the contract; do not build on them.
Examples
curl -sS https://codex-reset.com/api/forecast \
-A 'myproject/1.0 (+https://myproject.example)' \
| jq '{p24: .probabilities.rounded_24h, p48: .probabilities.rounded_48h, last: .last_reset_at}'curl -sS https://codex-reset.com/api/timeline \
| jq -r '[.events[] | select(.group == "reset" and .announcement_state == "announced")][0]
| "\(.announced_at) \(.url)"'const res = await fetch("https://codex-reset.com/api/forecast");
const { probabilities } = await res.json();
odds.textContent = `${probabilities.rounded_24h}% in 24h`;
// next to it, in the markup:
// <small>Data: <a href="https://codex-reset.com/">codex-reset.com</a></small>Machine-readable discovery
| File | What it is |
|---|---|
/openapi.json |
OpenAPI 3.1 description of the stable JSON routes: paths, parameters, fields and the credit condition. |
/llms.txt |
Route map for language models: every page and public endpoint in one file. |
/llms-full.txt |
The same map plus source priority, provenance and the usage-limit reference. |
/.well-known/api-catalog |
RFC 9727 linkset of the public JSON routes. |
/.well-known/mcp/server-card.json |
MCP server card: endpoint, protocol version and the tool list. |
/.well-known/ai-catalog.json |
Capability manifest pointing at the API catalog, the MCP server and the agent skill. |
If all you want is to be told when a reset lands, you do not need to build anything: the Telegram and Discord channels, browser push and email alerts in the footer fire on the same signal.