REST API / Views
competitor_suggestions
View
Competitor candidates discovered in AI answers, ordered by recurrence. Includes screened-out filtered rows by default for auditability; filter status = pending for recommendations.
- Max rows per query
- 100
- Default order
- mention_count desc, last_seen_at desc
- Max offset
- 10000
- Cursor paging
- by id
Filter project_id and day where available. For dashboard-identical headline numbers, anchored windows and deltas, use read report_*.
Fields
| Field | Type | Description | Filter | Sort |
|---|---|---|---|---|
id indexed | string | Unique row ID. | ✓ | ✓ |
project_id indexed | string | Project ID from projects. | ✓ | – |
label | string | Candidate brand name. | ✓ | ✓ |
status | string | Review state; filtered means screened out, not recommended.pending accepted rejected filtered | ✓ | ✓ |
mention_count | integer | Stored recurrence count across observed answers. | ✓ | ✓ |
prompt_count | integer | Distinct retained prompt IDs in which the candidate was observed; the writer retains at most 20 recent IDs, so this is a lower bound on lifetime breadth. | ✓ | ✓ |
last_seen_at | datetime | Most recent detection time. | ✓ | ✓ |
created_at | datetime | First detection time. | ✓ | ✓ |
Examples
Example
SELECT id, project_id, label, status, mention_count
FROM competitor_suggestions
ORDER BY mention_count DESC
LIMIT 25Calling it
MCP
Tool call
query({"sql":"SELECT id, project_id, label, status, mention_count FROM competitor_suggestions ORDER BY mention_count DESC LIMIT 25"})REST
curl
curl -X POST "https://app.sensorhub.ai/api/v1/query" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
--data-binary @- <<'JSON'
{
"sql": "SELECT id, project_id, label, status, mention_count FROM competitor_suggestions ORDER BY mention_count DESC LIMIT 25"
}
JSONRow JSON Schema
json
{
"type": "object",
"description": "Competitor candidates discovered in AI answers, ordered by recurrence. Includes screened-out filtered rows by default for auditability; filter status = pending for recommendations.",
"properties": {
"id": {
"type": "string",
"description": "Unique row ID.",
"x-sensorhub-indexed": true,
"x-sensorhub-searchable": false,
"x-sensorhub-aggregatable": true,
"x-sensorhub-filterable": true,
"x-sensorhub-sortable": true
},
"project_id": {
"type": "string",
"description": "Project ID from projects.",
"x-sensorhub-indexed": true,
"x-sensorhub-searchable": false,
"x-sensorhub-aggregatable": true,
"x-sensorhub-filterable": true,
"x-sensorhub-sortable": false
},
"label": {
"type": "string",
"description": "Candidate brand name.",
"x-sensorhub-indexed": false,
"x-sensorhub-searchable": false,
"x-sensorhub-aggregatable": true,
"x-sensorhub-filterable": true,
"x-sensorhub-sortable": true
},
"status": {
"type": "string",
"description": "Review state; filtered means screened out, not recommended.",
"enum": [
"pending",
"accepted",
"rejected",
"filtered"
],
"x-sensorhub-filter-operators": [
"=",
"!=",
"<>",
"IN",
"NOT IN",
"IS NULL",
"IS NOT NULL"
],
"x-sensorhub-indexed": false,
"x-sensorhub-searchable": false,
"x-sensorhub-aggregatable": true,
"x-sensorhub-filterable": true,
"x-sensorhub-sortable": true
},
"mention_count": {
"type": "integer",
"description": "Stored recurrence count across observed answers.",
"x-sensorhub-indexed": false,
"x-sensorhub-searchable": false,
"x-sensorhub-aggregatable": true,
"x-sensorhub-filterable": true,
"x-sensorhub-sortable": true
},
"prompt_count": {
"type": "integer",
"description": "Distinct retained prompt IDs in which the candidate was observed; the writer retains at most 20 recent IDs, so this is a lower bound on lifetime breadth.",
"x-sensorhub-indexed": false,
"x-sensorhub-searchable": false,
"x-sensorhub-aggregatable": true,
"x-sensorhub-filterable": true,
"x-sensorhub-sortable": true
},
"last_seen_at": {
"type": "string",
"description": "Most recent detection time.",
"format": "date-time",
"x-sensorhub-indexed": false,
"x-sensorhub-searchable": false,
"x-sensorhub-aggregatable": true,
"x-sensorhub-filterable": true,
"x-sensorhub-sortable": true
},
"created_at": {
"type": "string",
"description": "First detection time.",
"format": "date-time",
"x-sensorhub-indexed": false,
"x-sensorhub-searchable": false,
"x-sensorhub-aggregatable": true,
"x-sensorhub-filterable": true,
"x-sensorhub-sortable": true
}
},
"additionalProperties": false
}