
Archived product specification
API Documentation
A preserved design for managing monitors, changes, and alerts programmatically.
example.invalidso they cannot be mistaken for a working service.Archived public endpoint designs
These blocks document the former interface. The concept site returns an explicit retired response for legacy API paths; dated HTML demonstrations and archive notices remain available.
GET /api/v1/public/statsHistorical aggregate response shape; not current production activity.
curl https://example.invalid/api/v1/public/stats
Example response:
{
"teams": 10,
"registered_users": 10,
"active_monitors": 48,
"snapshots_captured_all_time": 2959,
"changes_detected": {
"last_24h": 82,
"last_7d": 224,
"last_30d": 870
}
}GET /recent-catches/feed.jsonJSON Feed 1.1 of high-importance (≥6/10) catches from the last 60 days. Per-domain variant at /tracked/[host]/feed.json.
curl https://zikit.ai/tracked/vercel.com/feed.json
GET /recent-catches/feed.xmlRSS 2.0 version of the same feeds, for classic readers.
GET /catches/[id]Durable permalink for any public-interest catch. Every catch on a HERO_DOMAIN (vercel, openai, stripe, supabase, github, anthropic, paddle, techcrunch, producthunt) has one. Includes the AI summary, importance, change type, time, source link, and up to 3 related catches on the same host. NewsArticle JSON-LD + dynamic OG image for social shares.
Embed widget
Drop the 3 most recent catches onto your own blog with one iframe (style-isolated, cached 10 min, no JS to load):
<iframe src="https://zikit.ai/embed/recent-catches" width="400" height="520" frameborder="0" style="border-radius:16px;" ></iframe>
Or embed a single-vendor feed (Vercel, OpenAI, Stripe, Supabase, GitHub, Anthropic, Paddle, TechCrunch, Product Hunt):
<iframe src="https://zikit.ai/embed/tracked/vercel.com" width="400" height="520" frameborder="0" style="border-radius:16px;" ></iframe>
Archived authentication design
The original design expected a Bearer token. No key can be generated on this preview:
Base URL: https://example.invalid | Rate limit: 30 req/min | Format: JSON
Endpoint specification (not live)
/api/v1/monitorsArchived specList all monitors
Response
{
"monitors": [
{
"id": "uuid",
"name": "Competitor Pricing",
"url": "https://example.com/pricing",
"checkFrequency": "hourly",
"healthStatus": "healthy",
"lastCheckedAt": "2026-04-04T12:00:00Z",
"totalChanges": 5,
"totalChecks": 120
}
],
"plan": "business"
}/api/v1/monitors/:idArchived specGet monitor details + recent changes
Response
{
"monitor": { "id": "uuid", "name": "...", "url": "...", ... },
"changes": [
{
"id": "uuid",
"summary": "Pro plan price dropped from $49 to $39",
"importanceScore": 8,
"changeType": "price",
"createdAt": "2026-04-04T12:00:00Z"
}
]
}/api/v1/monitors/:id/changesArchived specList changes for a monitor (JSON). Supports ?limit=N (max 100, default 20)
Response
{
"changes": [
{
"id": "uuid",
"summary": "Pro plan price dropped from $49 to $39",
"importanceScore": 8,
"changeType": "price",
"details": "Pricing page updated...",
"actionItem": "Consider adjusting your pricing",
"keywordMatched": true,
"createdAt": "2026-04-04T12:00:00Z"
}
],
"count": 1
}/api/v1/monitorsArchived specCreate a new monitor
Request body
{
"url": "https://example.com/pricing",
"name": "Competitor Pricing",
"checkFrequency": "hourly",
"useCase": "competitor",
"watchKeywords": "price, sale, discount",
"cssSelector": "#pricing-table"
}Response
{ "monitor": { "id": "uuid", "name": "...", ... } }/api/v1/monitors/:idArchived specUpdate monitor settings
Request body
{
"checkFrequency": "daily",
"watchKeywords": "new-keyword",
"isPaused": false
}Response
{ "monitor": { ... } }/api/v1/monitors/:idArchived specDelete a monitor
Response
{ "success": true }/api/v1/monitors/:id/checkArchived specTrigger a manual check
Response
{
"changed": true,
"summary": "Price changed from $49 to $39",
"importanceScore": 8
}/api/v1/monitors/suggest-from-sitemapArchived specRead a sitemap.xml and return up to 20 candidate URLs worth monitoring (pricing / changelog / legal / docs / blog / careers / about). Use the returned list to batch-create monitors. Rate limit: 5 requests / min.
Request body
{
"sitemapUrl": "https://vercel.com/sitemap.xml"
}Response
{
"sitemapUrl": "https://vercel.com/sitemap.xml",
"sitemapsProcessed": ["https://vercel.com/sitemap.xml"],
"candidateCount": 12,
"candidates": [
{ "url": "https://vercel.com/pricing", "category": "pricing", "suggestedName": "vercel.com · pricing" },
{ "url": "https://vercel.com/changelog", "category": "changelog", "suggestedName": "vercel.com · changelog" },
{ "url": "https://vercel.com/legal/privacy", "category": "legal", "suggestedName": "vercel.com · privacy" }
]
}/api/v1/alert-configs?monitorId=:idArchived specGet alert preferences for a monitor
Response
{ "configs": [{ "channel": "email", "destination": "...", "minImportance": 3, "isActive": true }] }/api/v1/alert-configsArchived specCreate or update alert config
Request body
{
"monitorId": "uuid",
"channel": "email",
"destination": "user@example.com",
"minImportance": 3,
"isActive": true
}Response
{ "config": { ... } }/api/v1/changes/exportArchived specExport all changes as CSV
Response
CSV file download (Content-Type: text/csv)
/api/v1/monitors/:id/exportArchived specExport changes for a specific monitor as CSV
Response
CSV file download (Content-Type: text/csv)
Monitor fields reference
| Field | Type | Description |
|---|---|---|
url | string | URL to monitor (required) |
name | string | Display name (required) |
checkFrequency | string | daily, hourly, every_6h, weekly, 15min |
cssSelector | string | CSS selector to monitor specific element |
ignoreSelectors | string | Comma-separated selectors to exclude |
watchKeywords | string | Comma-separated keywords to watch |
keywordMode | string | any (default), appear, disappear |
useCase | string | competitor, regulatory, ecommerce, jobs, content, custom |
description | string | Notes about why you track this page |
tags | string | Comma-separated tags |
isPaused | boolean | Pause/resume monitoring |
Alert channels
Available channels for the POST /alert-configs endpoint:
emailEmail addressAll plansslackSlack webhook URLPro+discordDiscord webhook URLPro+telegramBOT_TOKEN:CHAT_IDPro+webhookAny HTTPS URL (POST JSON)BusinessError codes
401Unauthorized - invalid or missing API key403Forbidden - feature requires a higher plan404Not found - monitor doesn't exist or wrong org429Rate limited - too many requests400Bad request - invalid input