---
title: API: diagnostics report what they found, and timestamps are ISO 8601 everywhere
description: A live diagnostic said success: true for an NXDOMAIN or an expired certificate, because it reported that the probe ran rather than what it found. success and…
canonical: https://watchfor.io/changelog/2026-10-17-api-contract-fixes
---

[All updates](/changelog#2026-10-17-api-contract-fixes) 🐛 Fixed API Oct 17, 2026 · v 11.1.9

# API: diagnostics report what they found, and timestamps are ISO 8601 everywhere

A live diagnostic said success: true for an NXDOMAIN or an expired certificate, because it reported that the probe ran rather than what it found. success and error now describe the check. Check and browser-check run timestamps are ISO 8601 UTC like the rest of the API, and an MCP or A2A tool call now counts once against your rate limit instead of twice.

## What changed

- Live diagnostics : the top-level success and error now describe the check's finding. An NXDOMAIN, an expired certificate, a host that doesn't resolve or a target refused as internal is success: false with a readable error . result still holds the probe's raw answer.

- Timestamps : timestamp on checks, check details and browser-check runs, and last_failure_at on uptime, are ISO 8601 UTC ( 2026-10-17T14:31:29.000Z ). Before, they came as 2026-10-17 14:31:29 , which JavaScript and Python read as local time. The value is the same; only the format changed.

- MCP and A2A : each request counts once against your plan's rate limit. A refused request (revoked key, rate limit) is now a JSON-RPC error with your request's id.

- Check now honours Idempotency-Key : a retry replays the original 202 instead of hitting the hourly budget. Over budget, the error says when the next check-now is allowed.

- Batch answers a too-large body with 413 payload_too_large , reports the real remaining rate limit and supports Idempotency-Key .

- Create monitor rejects unknown top-level fields with a 400 naming the accepted ones, like updates already did. sort is rejected on the monitor, check and run lists like on every other list.

- Sandbox payloads match the live schemas, and /api/sandbox/<resource> works as documented.

- SDKs (next release, 0.17.2): WATCHFOR_BASE_URL takes the origin or the full /api/v1 base in all three, an HTML page from a wrong base URL gives a short error, and the npm CLI gains --version .

Share this update

---

Canonical page: https://watchfor.io/changelog/2026-10-17-api-contract-fixes · Site guide: https://watchfor.io/llms.txt
