Matrix API
The Matrix API allows you to retrieve competitive comparison matrices. Matrices visualize how competitors compare across different categories and capabilities. The API supports both category-level (detailed) and solution-level (strategic) matrix views.
Note: Matrix view requires PRO plan or higher.
Get Matrix
Fetch matrix data for visualization.
GET /api/matrix?productId={productId}&competitorIds={id1,id2}&includeOurProduct=true
Query Parameters
productId(string, optional) - Filter competitors by product. Also required ifincludeOurProductistruecompetitorIds(string, optional) - Comma-separated list of competitor IDs to includeincludeOurProduct(boolean, optional) - Include "our product" column with capabilities. RequiresproductId. Defaults tofalse
Response
{
"categories": [
{
"id": "pricing",
"name": "Pricing"
},
{
"id": "features",
"name": "Features"
}
],
"competitors": [
{
"id": "competitor-id-1",
"name": "Competitor Inc",
"status": "COMPLETE"
},
{
"id": "competitor-id-2",
"name": "Another Competitor",
"status": "COMPLETE"
}
],
"cells": [
{
"id": "cell-id",
"workspaceId": "workspace-id",
"competitorId": "competitor-id-1",
"productId": "product-id",
"categoryId": "pricing",
"summary": ["Competitor has competitive pricing"],
"capabilityStatus": "MATCH"
}
],
"cellMap": {
"pricing": {
"competitor-id-1": {
"id": "cell-id",
"workspaceId": "workspace-id",
"competitorId": "competitor-id-1",
"productId": "product-id",
"categoryId": "pricing",
"summary": ["Competitor has competitive pricing"],
"capabilityStatus": "MATCH"
}
}
},
"ourProduct": {
"productId": "product-id",
"capabilities": {
"pricing": {
"summary": ["We offer flexible pricing"],
"capabilityStatus": "SUPERIOR"
}
}
}
}
Capability Status Values
SUPERIOR- Our product is superior in this categoryMATCH- Our product matches the competitorINFERIOR- Our product is inferior in this categoryUNKNOWN- Status is unknown
Response Fields
categories- Array of category objects withidandnamecompetitors- Array of competitor objects withid,name, andstatuscells- Array of all matrix cellscellMap- Object mappingcategoryId→competitorId→ cell for easy lookupourProduct- Object containing our product capabilities (only included ifincludeOurProduct=true)
Category Priority
Categories are determined in this priority order:
- Product categories (if
productIdis provided) - Competitor categories (from first competitor)
- Matrix cell categories
- Default categories
Get Solution Matrix
Fetch solution matrix data for high-level strategic comparison. Solutions span multiple products and aggregate category scores.
GET /api/matrix/solutions?competitorIds={id1,id2}&solutionIds={id1,id2}
Query Parameters
competitorIds(string, optional) - Comma-separated list of competitor IDs to includesolutionIds(string, optional) - Comma-separated list of solution IDs to filter by
Response
{
"solutions": [
{
"id": "solution-id-1",
"name": "Enterprise Security",
"description": "Comprehensive security and compliance capabilities",
"productIds": ["product-id-1", "product-id-2"],
"categoryMappings": [
{
"categoryId": "security",
"productId": "product-id-1",
"weight": 0.5
}
]
}
],
"competitors": [
{
"id": "competitor-id-1",
"name": "Competitor Inc",
"status": "READY"
}
],
"cells": [
{
"id": "solution-cell-id",
"workspaceId": "workspace-id",
"solutionId": "solution-id-1",
"competitorId": "competitor-id-1",
"aggregatedScore": 3.5,
"contributingCategoryIds": ["matrix-cell-id-1", "matrix-cell-id-2"],
"evidenceIds": ["intel-id-1"],
"lastRefreshedAt": "2024-01-15T10:00:00Z"
}
],
"cellMap": {
"solution-id-1": {
"competitor-id-1": { ...solutionMatrixCell }
}
},
"categoryCellMap": {
"category-id-1": {
"competitor-id-1": { ...matrixCell }
}
}
}
Response Fields
solutions- Array of solution objects with category mappingscompetitors- Array of competitor objectscells- Array of solution matrix cells (aggregated scores)cellMap- Object mappingsolutionId→competitorId→ solution cellcategoryCellMap- Object mappingcategoryId→competitorId→ category cell (for drill-down)
Aggregated Score
The aggregatedScore field (0-4) represents a Harvey Ball level calculated from weighted category scores:
- 4 = Full (Native/Excellent)
- 3 = 3/4 (Good)
- 2 = Half (Parity/Average)
- 1 = 1/4 (Weak)
- 0 = Empty (Missing)
Drill-Down Capability
Use categoryCellMap to drill down from solution-level scores to underlying category-level details. The contributingCategoryIds field lists the matrix cell IDs that contributed to the aggregated score.
Error Responses
401- Unauthorized (invalid or missing API key)403- Forbidden (requires PRO plan or higher)404- Not Found (product or competitor doesn't exist)
Plan Requirement Error
If you're on a plan that doesn't support matrices, you'll receive a 403 error:
{
"error": {
"code": "UPGRADE_REQUIRED",
"message": "Competitor matrices are available on PRO plan and above. Upgrade to compare competitors visually.",
"requiredPlan": "PRO"
}
}