DOCS
SpecWatch for developers and agents.
SpecWatch checks public product pages for broken links, specification changes, and price or availability drift. This page documents everything an automated client — a script, an integration, an AI agent — can reach without an account, and the conventions the site follows. The full workspace API behind the web app is session-authenticated; a documented programmatic API for paid plans is on the roadmap. If you need it sooner, tell us.
Machine-readable surface
- /openapi.json — OpenAPI 3.1 description of the public endpoints and content routes.
- /llms.txt — a short guide for LLM agents: what SpecWatch is for, when to use it, how to call it.
- /sitemap.xml and /robots.txt — the standard crawlers' map.
Public endpoints
Health
curl -s https://specwatch.me/api/health
{"ok":true}
Check one page
POST /api/scan takes a JSON body {"url": "https://example.com/product-page"} and runs the same check the landing page's form runs: outbound links on the page are followed, spec signals are extracted, and the result is returned as JSON with a summary, per-finding detail, and any word-level changes against the page's previous scan. No account is needed.
curl -s -X POST https://specwatch.me/api/scan \
-H 'Content-Type: application/json' \
-d '{"url":"https://example.com/product-page"}'
Responses: 200 with the scan result; 400 for a non-public or malformed URL; 403 when a workspace's daily scan budget is spent; 429 when you hit the rate limit. Scans take a few seconds to a minute.
Rate limits
Public endpoints are rate-limited per client IP. Every limited response carries standard headers so you can self-throttle:
| Header | Meaning |
|---|---|
RateLimit-Limit | Requests allowed in the window |
RateLimit-Remaining | Requests left in the window |
RateLimit-Reset | Seconds until the window resets |
Retry-After | On 429 only: seconds to wait before retrying |
Current limits: POST /api/scan — 10 requests per 10 minutes; POST /api/leads (browser-only, same-origin) — 10 per hour; authentication endpoints are stricter still.
Content negotiation
Every content page (this one, the home page, pricing, about, contact, privacy, terms) is also served as Markdown when you ask for it:
curl -s -H 'Accept: text/markdown' https://specwatch.me/
You get a non-empty Markdown body with Content-Type: text/markdown and Vary: Accept; asking for text/html returns the normal page.
Errors
Unknown paths return a real 404 — as Markdown when you accept Markdown, as a small HTML page otherwise — pointing back to these docs, llms.txt, and the sitemap. No soft-404 app shells.
Use policy
Only check pages you have a legitimate interest in monitoring — your own product pages, or pages you are authorized to watch. Do not use the API to attack, overload, or circumvent the protections of any website (see the terms).