Competitors API
The Competitors API allows you to track and manage competitor information in your workspace.
List Competitors
Get all competitors for your workspace. Optionally filter by product ID.
GET /api/competitors?productId={productId}
Query Parameters
productId(string, optional) - Filter competitors by product ID
Response
{
"competitors": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"workspaceId": "workspace-id",
"name": "Competitor Inc",
"websiteUrl": "https://competitor.com",
"status": "COMPLETE",
"tags": ["enterprise", "saas"],
"priority": 1,
"tier": "TIER_1",
"refreshRate": 30,
"products": [],
"categories": [],
"relevantProductIds": ["product-id-1"],
"lastRefreshAt": "2024-01-01T00:00:00.000Z",
"lastBattlecardAt": "2024-01-01T00:00:00.000Z",
"createdAt": "2024-01-01T00:00:00.000Z"
}
]
}
Status Values
PENDING- Competitor is being set upPROCESSING- Competitor analysis is in progressCOMPLETE- Competitor analysis is completeERROR- An error occurred during analysis
Get Competitor
Get a specific competitor by ID, including active jobs.
GET /api/competitors/{id}
Path Parameters
id(string, required) - Competitor ID
Response
{
"competitor": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"workspaceId": "workspace-id",
"name": "Competitor Inc",
"websiteUrl": "https://competitor.com",
"status": "COMPLETE",
"tags": [],
"priority": 1,
"tier": "TIER_1",
"refreshRate": 30,
"products": [],
"categories": [],
"relevantProductIds": ["product-id-1"],
"lastRefreshAt": "2024-01-01T00:00:00.000Z",
"lastBattlecardAt": "2024-01-01T00:00:00.000Z",
"createdAt": "2024-01-01T00:00:00.000Z"
},
"currentJob": {
"id": "job-id",
"status": "running",
"progress": 50,
"currentStep": "Processing Intel"
}
}
Create Competitor
Create a new competitor. Requires EDITOR role or higher. Enforces plan limits on competitor count.
POST /api/competitors
Request Body
{
"name": "Competitor Inc",
"websiteUrl": "https://competitor.com",
"isFirstRun": true,
"relevantProductIds": ["product-id-1", "product-id-2"]
}
Required Fields
name(string) - Competitor company namewebsiteUrl(string) - Competitor website URL (must be valid URL)
Optional Fields
isFirstRun(boolean) - Whether this is the first run (triggers full pipeline). Defaults tofalserelevantProductIds(array of strings) - Product IDs this competitor competes against
Response
{
"competitor": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"workspaceId": "workspace-id",
"name": "Competitor Inc",
"websiteUrl": "https://competitor.com",
"status": "PENDING",
"tags": [],
"priority": 1,
"tier": "TIER_3",
"refreshRate": 90,
"products": [],
"categories": [],
"relevantProductIds": ["product-id-1"],
"createdAt": "2024-01-01T00:00:00.000Z"
},
"jobId": "job-id-for-tracking-analysis"
}
The competitor will automatically start analysis. Use the returned jobId to track progress via the Jobs API.
Update Competitor
Update a competitor. Requires EDITOR role or higher.
PATCH /api/competitors/{id}
Path Parameters
id(string, required) - Competitor ID
Request Body
All fields are optional. Only include fields you want to update:
{
"name": "Updated Competitor Name",
"websiteUrl": "https://updated-competitor.com",
"tags": ["enterprise", "saas"],
"priority": 2,
"products": [],
"categories": [],
"relevantProductIds": ["product-id-1"],
"companyProfile": {},
"companyStrengths": [],
"companyWeaknesses": [],
"referenceLinks": [],
"keyMessaging": []
}
Response
{
"competitor": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"workspaceId": "workspace-id",
"name": "Updated Competitor Name",
"websiteUrl": "https://updated-competitor.com",
"status": "COMPLETE",
"tags": ["enterprise", "saas"],
"priority": 2,
"tier": "TIER_1",
"refreshRate": 30,
"products": [],
"categories": [],
"relevantProductIds": ["product-id-1"],
"lastRefreshAt": "2024-01-01T00:00:00.000Z",
"createdAt": "2024-01-01T00:00:00.000Z"
}
}
Delete Competitor
Delete a competitor. Requires EDITOR role or higher.
DELETE /api/competitors/{id}
Path Parameters
id(string, required) - Competitor ID
Response
{
"success": true
}
Error Responses
400- Bad Request (missing required fields, invalid URL)401- Unauthorized (invalid or missing API key)403- Forbidden (insufficient permissions or plan limit exceeded)404- Not Found (competitor doesn't exist)
Plan Limit Error
If you've reached your plan's competitor limit, you'll receive a 403 error:
{
"error": {
"code": "UPGRADE_REQUIRED",
"message": "You've reached your STARTER plan limit of 5 competitors. Upgrade to add more competitors.",
"currentPlan": "STARTER",
"requiredPlan": "PRO",
"limit": 5,
"currentCount": 5
}
}