GET/records/latest
条件に一致する最新の記録、またはnull
curl 'https://didcodexreset.com/openapi/v1/records/latest?kind=reset_completed'HTTP、MCP、インストール可能なエージェントスキルを使って、リセットシグナルを自分のツールに取り込めます
https://didcodexreset.com/openapi/v1GETリクエストでJSON応答を取得します。登録や認証ヘッダーは不要です
curl 'https://didcodexreset.com/openapi/v1/records/latest'
const res = await fetch('https://didcodexreset.com/openapi/v1/records/latest?kind=reset_completed');
const body = await res.json();
if (res.status === 429) {
const retry = Number(res.headers.get('Retry-After') || body.retryAfter);
console.log('retry after', retry);
}
if (!res.ok) throw new Error(body.error);
console.log(body.data);
from urllib.request import urlopen, Request
req = Request('https://didcodexreset.com/openapi/v1/records?page=1&pageSize=10')
with urlopen(req) as response:
print(response.read().decode())
/records/latest条件に一致する最新の記録、またはnull
curl 'https://didcodexreset.com/openapi/v1/records/latest?kind=reset_completed'/recordsページ分割された一覧、1ページ最大10件
curl 'https://didcodexreset.com/openapi/v1/records?kind=reset_scheduled&page=2&pageSize=10'kindは両方のデータエンドポイントで使用します(all、reset_scheduled、reset_completed)。pageとpageSizeは一覧用です。不明・重複・範囲外のパラメータは補正せず422を返します
| パラメータ | 既定値 | 説明 |
|---|---|---|
kind | all | all(既定)、reset_scheduled、reset_completed。allは公開中のライブ信号で、実施済み予定は含めません。予定の絞り込みには実施済み・期限経過の履歴も含まれます。取り消し・却下された記録は除外します |
page | 1 | 1始まりのページ番号。末尾を超える場合は要求された番号を保ち、空のitems配列を返します |
pageSize | 10 | 1~10、既定値10 |
allとreset_completedは、未終了のpending予定を先頭(窓の早い順)にし、その後announcedAt、completedAt、effectiveAt、idの降順です。実施済み予定はallから除外し、reset_scheduledに残します。reset_scheduledは従来どおりeffectiveAtの降順です。latestは同じ条件の先頭の記録です。totalはリセット日数ではなく記録件数です
実施済み・期限経過の予定を含め、現在保存されている公開記録を取得します。永続的な保存は保証しません。将来の予定を除く場合はkind=reset_completedを指定してください
すべてのフィールドが含まれます。nullは不明または対象外を意味し、ゼロではありません
| フィールド | 型 | 説明 |
|---|---|---|
id | string | 記録ID。X投稿は数字の文字列、運営補記はop_…、手動確認はmanual:…を使用します |
kind | string | reset_scheduledまたはreset_completed。resetTypeとは別の分類です |
resetType | string | global、banked、global_and_banked |
announcedAt | string | null | 情報元の告知時刻。告知を伴わない手動確認はnull |
effectiveAt | string | null | リセットの予定・実施時刻。不明ならnull。欠損値をannouncedAtで補いません |
text | string | null | 公開投稿の本文または運営の文面。不明ならnull |
confidence | number | null | 既知なら0~1。ヒートマップのみの履歴と集約された手動確認はnull |
scope | object | null | 既知ならplansとwindows、それ以外はnull |
source | object | origin、postId、handle、url。手動確認ではorigin=operator、ほかはnull |
schedulePrecision | string | null | 予定はdateまたはdatetime、完了はnull |
scheduleBasis | string | null | 予定はexplicitまたはcontextual_inference、完了はnull |
scheduleWindow | object | null | 既知の予定時間帯を示すUTCのstartAt/endAt |
scheduleState | string | null | 予定はpending、elapsed、fulfilled、unknown。elapsedは予定時間帯を過ぎても完了が未確認であることを示します |
completedAt | string | null | 予定の実施を確認した時刻。未確認ならnull |
completionRecordId | string | null | 予定に関連付けられた完了記録のID |
fulfillmentOrigin | string | null | auto、link、manual |
relatedRecordIds | string[] | 完了記録に関連する予定ID。なければ空配列 |
sourceオブジェクトのフィールド| フィールド | 型 | 説明 |
|---|---|---|
origin | string | 情報元の投稿はx、運営補記・手動確認はoperator |
postId | string | null | 元の文字列ID。独立した手動確認はnull |
handle | string | null | Xの情報元はthsottiaux、それ以外はnull |
url | string | null | X投稿の正規URL。情報元の投稿がなければnull |
scopeオブジェクトのフィールド| フィールド | 型 | 説明 |
|---|---|---|
plans | string[] | 対象プランのID。allは全プラン、unknownは指定なし |
windows | string[] | five_hourやweeklyなど対象利用枠のID。unknownは指定なし |
scheduleWindowオブジェクトのフィールド| フィールド | 型 | 説明 |
|---|---|---|
startAt | string | 予定時間帯の開始時刻(UTC) |
endAt | string | 予定時間帯の終了時刻(UTC)。正確な時刻の予定ではstartAtと同じ |
UTC、ミリ秒精度、末尾はZ。日付単位の予定はその精度を保ち、現地の暦日をUTCの時間帯に変換します
成功時はok: true、data、metaを返します。最新取得は記録1件またはnull、一覧取得はitemsとページ情報です。エラー時はok: false、error、detailを返します
{
"ok": true,
"data": {
"id": "1960000000000000001",
"kind": "reset_scheduled",
"resetType": "global",
"announcedAt": "2026-09-08T08:00:00.000Z",
"effectiveAt": "2026-09-09T07:00:00.000Z",
"text": "Usage limits will be reset tomorrow.",
"confidence": 0.97,
"scope": {
"plans": [
"all"
],
"windows": [
"unknown"
]
},
"source": {
"origin": "x",
"postId": "1960000000000000001",
"handle": "thsottiaux",
"url": "https://x.com/thsottiaux/status/1960000000000000001"
},
"schedulePrecision": "datetime",
"scheduleBasis": "explicit",
"scheduleWindow": {
"startAt": "2026-09-09T07:00:00.000Z",
"endAt": "2026-09-09T07:00:00.000Z"
},
"scheduleState": "pending",
"completedAt": null,
"completionRecordId": null,
"fulfillmentOrigin": null,
"relatedRecordIds": []
},
"meta": {
"generatedAt": "2026-09-08T08:30:00.000Z",
"lastSuccessfulCheckAt": "2026-09-08T08:29:00.000Z"
}
}
{
"ok": true,
"data": {
"items": [
{
"id": "1960000000000000001",
"kind": "reset_scheduled",
"resetType": "global",
"announcedAt": "2026-09-08T08:00:00.000Z",
"effectiveAt": "2026-09-09T07:00:00.000Z",
"text": "Usage limits will be reset tomorrow.",
"confidence": 0.97,
"scope": {
"plans": [
"all"
],
"windows": [
"unknown"
]
},
"source": {
"origin": "x",
"postId": "1960000000000000001",
"handle": "thsottiaux",
"url": "https://x.com/thsottiaux/status/1960000000000000001"
},
"schedulePrecision": "datetime",
"scheduleBasis": "explicit",
"scheduleWindow": {
"startAt": "2026-09-09T07:00:00.000Z",
"endAt": "2026-09-09T07:00:00.000Z"
},
"scheduleState": "pending",
"completedAt": null,
"completionRecordId": null,
"fulfillmentOrigin": null,
"relatedRecordIds": []
}
],
"page": 1,
"pageSize": 10,
"total": 1,
"totalPages": 1,
"hasNext": false
},
"meta": {
"generatedAt": "2026-09-08T08:30:00.000Z",
"lastSuccessfulCheckAt": "2026-09-08T08:29:00.000Z"
}
}
{
"id": "manual:1960000000000000001",
"kind": "reset_completed",
"resetType": "global",
"announcedAt": null,
"effectiveAt": "2026-09-09T07:05:00.000Z",
"text": null,
"confidence": null,
"scope": {
"plans": [
"all"
],
"windows": [
"unknown"
]
},
"source": {
"origin": "operator",
"postId": null,
"handle": null,
"url": null
},
"schedulePrecision": null,
"scheduleBasis": null,
"scheduleWindow": null,
"scheduleState": null,
"completedAt": "2026-09-09T07:05:00.000Z",
"completionRecordId": null,
"fulfillmentOrigin": "manual",
"relatedRecordIds": [
"1960000000000000001"
]
}
data一覧のページ情報| フィールド | 型 | 説明 |
|---|---|---|
items | object[] | 最大pageSize件の記録配列。このページに記録がなければ空配列 |
page | integer | 要求されたページ番号、1始まり |
pageSize | integer | 要求された1ページの件数、1~10 |
total | integer | 条件に一致する記録数。予定と完了の両方を含みます |
totalPages | integer | ページ数。一致する記録がなければ0 |
hasNext | boolean | 次のページがあるかどうか |
metaデータの鮮度| フィールド | 型 | 説明 |
|---|---|---|
generatedAt | string | 公開スナップショットの生成時刻(UTC) |
lastSuccessfulCheckAt | string | null | 最後に成功したモニタリング確認の時刻(UTC)。不明ならnull |
各リクエストは現在のデータを読み取ります。追加や訂正で記録のページが移る場合があるため、idで重複を除いてください。metaはリクエスト時刻ではなく公開データの状態です
直近3600秒間で最大20リクエスト。公開APIのデータエンドポイントとMCP検索ツールで共有します
データエンドポイントまたはMCP検索ツールで受理されたリクエストは、その後の検証・処理が失敗しても1回と数えます。接続の初期化、ツール一覧、拒否されたプロトコル要求、ドキュメント、仕様、スキルのダウンロード、OPTIONSは対象外です。同じ外向きIPは上限を共有します。受理された応答(成功の200を含む)には X-RateLimit-Limit、X-RateLimit-Remaining、X-RateLimit-Window、X-RateLimit-Reset を返します。これらを省くのは制限を無効にしたときだけです。Retry-After は HTTP 429 のときだけ返します
| 応答ヘッダー | 説明 |
|---|---|
X-RateLimit-Limit | 移動時間枠内の最大リクエスト数(整数) |
X-RateLimit-Remaining | このリクエスト後の残りリクエスト数(整数) |
X-RateLimit-Window | 移動時間枠の長さ(秒) |
X-RateLimit-Reset | 最古の集計対象リクエストが時間枠から外れるUTC時刻。上限全体が一度に回復する時刻ではありません |
Retry-After | 429のみ。再試行までの最短秒数を切り上げた値。JSON本文のretryAfterでも取得できます |
422 invalid_query | 不正・重複・不明なクエリパラメータ |
429 rate_limited | 移動時間枠の上限を超えました。Retry-After / retryAfterに従ってください |
503 rate_limit_unavailable | 制限は有効ですがRedisを利用できません。ドキュメントページは引き続き利用できます |
503 data_unavailable | 公開済みスナップショットがまだありません。検索結果が空の状態とは異なります |
500 internal_error | 予期しないサーバーエラー。内部の詳細は返しません |
404 / 405 | 公開APIの不明なパス・メソッドはJSONで返します |
{
"ok": false,
"error": "rate_limited",
"detail": "Request limit exceeded",
"retryAfter": 143
}