Back to blog
Developer8 min readMarch 15, 2026

How to Build Automated Website Monitoring with the ChangePulse API

While ChangePulse's dashboard handles most monitoring needs, the REST API (available on the Pro plan) unlocks powerful automation possibilities. This guide covers everything you need to start using the API.

Getting Your API Key

  1. Log in to ChangePulse and go to Settings → API Key
  2. Click Generate API Key
  3. Copy your key immediately — it's shown only once
  4. Store it securely (environment variable, secret manager, etc.)

Your API key starts with `cp_` and authenticates all API requests via the Authorization header.

Authentication

All API requests require a Bearer token:

```bash curl -H "Authorization: Bearer cp_your_api_key_here" \ https://changepulse.io/api/monitors ```

Core API Endpoints

List All Monitors

```bash GET /api/monitors ```

Returns an array of your monitors with their current status, last checked time, and configuration.

Create a Monitor

```bash POST /api/monitors Content-Type: application/json

{ "url": "https://example.com/pricing", "label": "Example.com Pricing", "intervalMinutes": 60, "cssSelector": ".pricing-section", "ignoreWhitespace": true, "notifyEmail": true, "webhookUrl": "https://your-app.com/webhook" } ```

Get Monitor Changes

```bash GET /api/monitors/:id/changes ```

Returns the change history for a specific monitor, including diffs, timestamps, and acknowledgment status.

Update a Monitor

```bash PATCH /api/monitors/:id Content-Type: application/json

{ "intervalMinutes": 360, "notifySlackUrl": "https://hooks.slack.com/services/..." } ```

Delete a Monitor

```bash DELETE /api/monitors/:id ```

Webhook Integration

When a change is detected, ChangePulse sends a POST request to your webhook URL:

```json { "event": "change.detected", "monitor": { "id": "mon_abc123", "url": "https://example.com/pricing", "label": "Example.com Pricing" }, "change": { "id": "chg_def456", "detectedAt": "2026-03-15T14:30:00Z", "diff": "- Price: $29/mo\n+ Price: $19/mo", "previousHash": "abc123", "newHash": "def456" } } ```

Automation Ideas

1. Sync Monitors from a Spreadsheet

Read URLs from a Google Sheet or CSV and create monitors programmatically:

```python import requests import csv

API_KEY = "cp_your_key_here" headers = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}

with open("urls.csv") as f: for row in csv.DictReader(f): requests.post("https://changepulse.io/api/monitors", headers=headers, json={ "url": row["url"], "label": row["label"], "intervalMinutes": 60, "notifyEmail": True }) ```

2. Pipe Changes to a Database

Use webhooks to store every detected change in your own database for analysis:

```javascript app.post("/changepulse-webhook", (req, res) => { const { monitor, change } = req.body; db.insert("changes", { monitor_url: monitor.url, diff: change.diff, detected_at: change.detectedAt, }); res.sendStatus(200); }); ```

3. Slack Bot Integration

Build a custom Slack bot that lets team members add monitors via slash commands:

``` /monitor https://competitor.com/pricing → "Monitor created! Checking every hour. You'll be notified here when changes are detected." ```

Rate Limits

The API has generous rate limits for Pro plan users: - 100 requests per minute for read operations - 20 requests per minute for write operations

Error Handling

The API returns standard HTTP status codes: - 200 — Success - 201 — Created - 400 — Bad request (invalid parameters) - 401 — Unauthorized (missing or invalid API key) - 403 — Forbidden (feature not available on your plan) - 404 — Not found - 429 — Rate limited

Get Started

Upgrade to the Pro plan to access the API. Generate your key in Settings, and start building automated monitoring workflows in minutes.

Ready to start monitoring?

Sign up for ChangePulse free and start tracking web page changes in under 60 seconds. No credit card required.

Start Monitoring Free

More Articles