
API Documentation
Manage monitors, check changes, and configure alerts programmatically.
API access requires a Business plan and an API key. Generate keys in Settings.
Authentication
All requests require a Bearer token in the Authorization header:
Base URL: https://zikit.ai | Rate limit: 30 req/min | Format: JSON
Endpoints
/api/v1/monitorsList 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/:idGet 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/changesList 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/monitorsCreate 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/:idUpdate monitor settings
Request body
{
"checkFrequency": "daily",
"watchKeywords": "new-keyword",
"isPaused": false
}Response
{ "monitor": { ... } }/api/v1/monitors/:idDelete a monitor
Response
{ "success": true }/api/v1/monitors/:id/checkTrigger a manual check
Response
{
"changed": true,
"summary": "Price changed from $49 to $39",
"importanceScore": 8
}/api/v1/alert-configs?monitorId=:idGet alert preferences for a monitor
Response
{ "configs": [{ "channel": "email", "destination": "...", "minImportance": 3, "isActive": true }] }/api/v1/alert-configsCreate or update alert config
Request body
{
"monitorId": "uuid",
"channel": "email",
"destination": "user@example.com",
"minImportance": 3,
"isActive": true
}Response
{ "config": { ... } }/api/v1/changes/exportExport all changes as CSV
Response
CSV file download (Content-Type: text/csv)
/api/v1/monitors/:id/exportExport 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