Skip to Content

Alerts

REST endpoints for Alerts. Base URL https://api.competlab.com; every request needs a CL-API-Key header (see Authentication). Responses wrap in { item } or { items }; errors in { error }.

List project alerts

GET/v1/projects/{projectId}/alerts

Get paginated competitive intelligence alerts for a project. Returns alerts generated when monitoring detects meaningful changes in competitor activity — such as pricing restructures, content strategy shifts, or technology stack changes. Supports filtering by monitoring dimension (tech-trust, content, positioning, pricing, ai-visibility), severity level (critical, high, medium, info), and specific competitor. Alerts are sorted by creation date (newest first).

Returns · { items, pagination }

Path parameters

NameTypeDescription
projectIdstringProject ID

Query parameters

NameTypeRequiredDescription
pagenumberPage number (1-indexed). Default 1. Min 1.
limitnumberNumber of items per page. Default 20. Range 1100.
dimensionstringFilter by monitoring dimension (tech-trust, content, positioning, pricing, ai-visibility). Values: tech-trust, content, positioning, pricing, ai-visibility.
severitystringFilter by alert severity (critical, high, medium, info). Values: critical, high, medium, info.
competitorIdstringFilter by competitor ID

Request

curl "https://api.competlab.com/v1/projects/507f1f77bcf86cd799439011/alerts?page=1&limit=20&dimension=pricing&severity=critical&competitorId=507f1f77bcf86cd799439011" \ -H "CL-API-Key: YOUR_COMPETLAB_API_KEY"

Response 200 OK

{ "items": [ { "id": "507f1f77bcf86cd799439011", "dimension": "pricing", "competitorDomain": "competitor.com", "competitorId": "507f1f77bcf86cd799439012", "severity": "high", "title": "Pricing plan restructure detected", "actionHint": "Review your pricing strategy to stay competitive", "gapWarnings": [ "Missing free tier", "No annual billing discount" ], "runId": "507f1f77bcf86cd799439013", "alertType": "price_change", "context": {}, "createdAt": "2026-03-15T10:00:00.000Z" } ], "pagination": { "page": 1, "limit": 20, "total": 47, "totalPages": 3, "hasMore": true } }

Paginated — pass page and limit query parameters and follow pagination.hasMore to page through the full set.

Errors

StatusCodeMeaning
401api_key_missing · api_key_invalid · api_key_revoked · api_key_expired · insufficient_scopeThe CL-API-Key is missing, malformed, revoked, expired, or lacks the required scope.

Every error uses the shared { error: { code, message, status } } envelope; code is one of the values listed above.

{ "error": { "code": "api_key_invalid", "message": "Invalid API key", "status": 401 } }
Last updated on