ModelClock
DEVELOPER GUIDE

Official model alerts, in your workflow.

Receive signed JSON at a public HTTPS endpoint. Return a 2xx response within 15 seconds.

Verify each request

Headers include Idempotency-Key, X-ModelClock-Timestamp, and X-ModelClock-Signature. Compute HMAC-SHA256 with your signing secret over the timestamp, a period, and the exact raw request body. Compare the signature in constant time. Reject timestamps more than five minutes old.

expected = "v1=" + HMAC_SHA256(secret, timestamp + "." + rawBody)
constantTimeEqual(expected, headers["X-ModelClock-Signature"])

Payload

schema: modelclock.alert.v1 · kind: discovered, updated, or reminder. reminderDays is 60, 30, 15, 7, 0, or your custom timing. The notice includes provider, model, family, type, affected scope, effectiveDate, dateSemantics, replacement, sourceUrl, quote, and verifiedAt, plus label, host, announcedDate and daysLeft. Each alert also carries a readable headline, status and suggested next step (action), and links to the official notice, the model page and, for exact shutdown dates, a calendar feed. Fields are only ever added within v1.

Retries & duplicates

Each delivery has a stable ID and is queued until it succeeds. Timeout, 429, and server errors retry with backoff, up to 12 attempts. Retry-After is respected. Most other client errors stop delivery and appear in your management history. A lost response can cause a duplicate: remember processed IDs and respond successfully without processing them twice.

Deadline semantics

Only unambiguous, exact official shutdown deadlines generate timed reminders. A zero-day reminder says the published date has arrived. It does not independently confirm shutdown. Provider-reported retirement is a separate notice. Rumors never enter subscription delivery.

Managing your plan

Saving activates alerts immediately and gives you a private management link. Save it to edit your plan, inspect delivery history, or unsubscribe. Email is contact information only; no emails are sent. Never share this link in a public channel.

Security

Public HTTPS destinations only. Private network addresses are not allowed and redirects are not followed. Webhook URLs and signing secrets are encrypted in storage.