Pages API
Manage individual pages within a monitored domain.
Pages are automatically discovered when you add a domain, but you can also manually add specific pages to monitor.
List Pages
GET /api/domains/:id/pages
Response
{
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440001",
"domainId": "550e8400-e29b-41d4-a716-446655440000",
"url": "https://competitor.com/pricing",
"urlHash": "a1b2c3d4e5f6...",
"pageType": "pricing",
"pageTypeConfidence": "0.95",
"status": "active",
"monitoringEnabled": true,
"priority": 5,
"lastCheckAt": "2024-01-15T10:30:00Z",
"lastChangeAt": "2024-01-10T08:15:00Z",
"errorCount": 0,
"lastError": null,
"metadata": {},
"createdAt": "2024-01-01T00:00:00Z"
}
],
"meta": {
"total": 5,
"page": 1,
"pageSize": 100
}
}
Add Page
POST /api/domains/:id/pages
Manually add a page to monitor. Use this when automatic discovery didn't find a page you want to track.
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | Full URL of the page to monitor |
pageType | string | No | Page classification (see types below) |
{
"url": "https://competitor.com/enterprise-pricing",
"pageType": "pricing"
}
Response
{
"data": {
"id": "550e8400-e29b-41d4-a716-446655440002",
"domainId": "550e8400-e29b-41d4-a716-446655440000",
"url": "https://competitor.com/enterprise-pricing",
"urlHash": "b2c3d4e5f6a7...",
"pageType": "pricing",
"status": "active",
"monitoringEnabled": true,
"priority": 5,
"lastCheckAt": null,
"lastChangeAt": null,
"errorCount": 0,
"lastError": null,
"metadata": {},
"createdAt": "2024-01-15T10:30:00Z"
}
}
Page Types
| Type | Description |
|---|---|
pricing | Pricing and plan information |
features | Feature lists and comparisons |
terms | Terms of service, privacy policy |
security | Security and compliance information |
api_docs | API documentation |
changelog | Product changelog and release notes |
other | General content (default) |
Error Codes
| Code | Status | Description |
|---|---|---|
NOT_FOUND | 404 | Domain not found or not owned |
VALIDATION_ERROR | 400 | URL doesn't belong to the domain |
CONFLICT | 409 | Page URL already exists for this domain |
Validation Example
The URL must belong to the monitored domain:
// Domain: competitor.com
// ✅ Valid
{ "url": "https://competitor.com/pricing" }
{ "url": "https://www.competitor.com/features" }
{ "url": "https://docs.competitor.com/api" }
// ❌ Invalid - different domain
{ "url": "https://other-site.com/pricing" }