sensorhubDevelopers
Open SensorhubGet an API key
Browse documentation
REST API / Collections

perception_cells

CollectionRequires Perception

Precomputed people-opinion snapshot cells by subject, lens, window and theme. AI opinions are read live and are absent here. Use read perception_part for dashboard headlines.

Max rows per query
100
Default order
id asc
Cursor paging
by id

Use read report_* for dashboard headline metrics and anchored comparison windows.

Fields

FieldTypeDescriptionFilterSort
id
indexed
stringUnique row ID.✓✓
project_id
indexed
stringProject ID from projects.✓–
subject_label
stringTracked subject label.✓✓
lens
stringStored Perception lens.✓✓
window_days
integerSnapshot window in days.✓✓
theme_key
nullable
stringProject theme key; empty means all themes.✓✓
computed_at
datetimeSnapshot computation time.✓✓
subject_kind
stringTracked subject kind.
OWN COMPETITOR TOPIC
✓✓
opinions
integerCounted opinions.✓✓
rows
integerEvidence rows.✓✓
people
integerDistinct people.✓✓
positive
integerPositive count.✓✓
neutral
integerNeutral count.✓✓
negative
integerNegative count.✓✓
net
nullable
integerNet sentiment; null below 30 opinions.✓✓
net_half_width
nullable
numberNet sentiment interval half width.✓✓
undated_rows
integerRows without publication dates.✓✓
threads
integerDistinct threads.✓✓
top_thread_share
nullable
numberLargest thread share.✓✓
top3_thread_share
nullable
numberTop three threads share.✓✓
critical_threads
integerCritical threads.✓✓
cited_threads
integerThreads cited in AI.✓✓
themed_opinions
nullable
integerOpinions with a theme.✓✓

Examples

Example
SELECT id, project_id, subject_label, lens, window_days
FROM perception_cells
ORDER BY id ASC
LIMIT 25

Calling it

MCP

Tool call
query({"sql":"SELECT id, project_id, subject_label, lens, window_days FROM perception_cells ORDER BY id ASC 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, subject_label, lens, window_days FROM perception_cells ORDER BY id ASC LIMIT 25"
}
JSON
Row JSON Schema
json
{
  "type": "object",
  "description": "Precomputed people-opinion snapshot cells by subject, lens, window and theme. AI opinions are read live and are absent here. Use read perception_part for dashboard headlines.",
  "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
    },
    "subject_label": {
      "type": "string",
      "description": "Tracked subject label.",
      "x-sensorhub-indexed": false,
      "x-sensorhub-searchable": false,
      "x-sensorhub-aggregatable": true,
      "x-sensorhub-filterable": true,
      "x-sensorhub-sortable": true
    },
    "lens": {
      "type": "string",
      "description": "Stored Perception lens.",
      "x-sensorhub-indexed": false,
      "x-sensorhub-searchable": false,
      "x-sensorhub-aggregatable": true,
      "x-sensorhub-filterable": true,
      "x-sensorhub-sortable": true
    },
    "window_days": {
      "type": "integer",
      "description": "Snapshot window in days.",
      "x-sensorhub-indexed": false,
      "x-sensorhub-searchable": false,
      "x-sensorhub-aggregatable": true,
      "x-sensorhub-filterable": true,
      "x-sensorhub-sortable": true
    },
    "theme_key": {
      "type": [
        "string",
        "null"
      ],
      "description": "Project theme key; empty means all themes.",
      "x-sensorhub-indexed": false,
      "x-sensorhub-searchable": false,
      "x-sensorhub-aggregatable": true,
      "x-sensorhub-filterable": true,
      "x-sensorhub-sortable": true
    },
    "computed_at": {
      "type": "string",
      "description": "Snapshot computation time.",
      "format": "date-time",
      "x-sensorhub-indexed": false,
      "x-sensorhub-searchable": false,
      "x-sensorhub-aggregatable": true,
      "x-sensorhub-filterable": true,
      "x-sensorhub-sortable": true
    },
    "subject_kind": {
      "type": "string",
      "description": "Tracked subject kind.",
      "enum": [
        "OWN",
        "COMPETITOR",
        "TOPIC"
      ],
      "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
    },
    "opinions": {
      "type": "integer",
      "description": "Counted opinions.",
      "x-sensorhub-indexed": false,
      "x-sensorhub-searchable": false,
      "x-sensorhub-aggregatable": true,
      "x-sensorhub-filterable": true,
      "x-sensorhub-sortable": true
    },
    "rows": {
      "type": "integer",
      "description": "Evidence rows.",
      "x-sensorhub-indexed": false,
      "x-sensorhub-searchable": false,
      "x-sensorhub-aggregatable": true,
      "x-sensorhub-filterable": true,
      "x-sensorhub-sortable": true
    },
    "people": {
      "type": "integer",
      "description": "Distinct people.",
      "x-sensorhub-indexed": false,
      "x-sensorhub-searchable": false,
      "x-sensorhub-aggregatable": true,
      "x-sensorhub-filterable": true,
      "x-sensorhub-sortable": true
    },
    "positive": {
      "type": "integer",
      "description": "Positive count.",
      "x-sensorhub-indexed": false,
      "x-sensorhub-searchable": false,
      "x-sensorhub-aggregatable": true,
      "x-sensorhub-filterable": true,
      "x-sensorhub-sortable": true
    },
    "neutral": {
      "type": "integer",
      "description": "Neutral count.",
      "x-sensorhub-indexed": false,
      "x-sensorhub-searchable": false,
      "x-sensorhub-aggregatable": true,
      "x-sensorhub-filterable": true,
      "x-sensorhub-sortable": true
    },
    "negative": {
      "type": "integer",
      "description": "Negative count.",
      "x-sensorhub-indexed": false,
      "x-sensorhub-searchable": false,
      "x-sensorhub-aggregatable": true,
      "x-sensorhub-filterable": true,
      "x-sensorhub-sortable": true
    },
    "net": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Net sentiment; null below 30 opinions.",
      "x-sensorhub-indexed": false,
      "x-sensorhub-searchable": false,
      "x-sensorhub-aggregatable": true,
      "x-sensorhub-filterable": true,
      "x-sensorhub-sortable": true
    },
    "net_half_width": {
      "type": [
        "number",
        "null"
      ],
      "description": "Net sentiment interval half width.",
      "x-sensorhub-indexed": false,
      "x-sensorhub-searchable": false,
      "x-sensorhub-aggregatable": true,
      "x-sensorhub-filterable": true,
      "x-sensorhub-sortable": true
    },
    "undated_rows": {
      "type": "integer",
      "description": "Rows without publication dates.",
      "x-sensorhub-indexed": false,
      "x-sensorhub-searchable": false,
      "x-sensorhub-aggregatable": true,
      "x-sensorhub-filterable": true,
      "x-sensorhub-sortable": true
    },
    "threads": {
      "type": "integer",
      "description": "Distinct threads.",
      "x-sensorhub-indexed": false,
      "x-sensorhub-searchable": false,
      "x-sensorhub-aggregatable": true,
      "x-sensorhub-filterable": true,
      "x-sensorhub-sortable": true
    },
    "top_thread_share": {
      "type": [
        "number",
        "null"
      ],
      "description": "Largest thread share.",
      "x-sensorhub-indexed": false,
      "x-sensorhub-searchable": false,
      "x-sensorhub-aggregatable": true,
      "x-sensorhub-filterable": true,
      "x-sensorhub-sortable": true
    },
    "top3_thread_share": {
      "type": [
        "number",
        "null"
      ],
      "description": "Top three threads share.",
      "x-sensorhub-indexed": false,
      "x-sensorhub-searchable": false,
      "x-sensorhub-aggregatable": true,
      "x-sensorhub-filterable": true,
      "x-sensorhub-sortable": true
    },
    "critical_threads": {
      "type": "integer",
      "description": "Critical threads.",
      "x-sensorhub-indexed": false,
      "x-sensorhub-searchable": false,
      "x-sensorhub-aggregatable": true,
      "x-sensorhub-filterable": true,
      "x-sensorhub-sortable": true
    },
    "cited_threads": {
      "type": "integer",
      "description": "Threads cited in AI.",
      "x-sensorhub-indexed": false,
      "x-sensorhub-searchable": false,
      "x-sensorhub-aggregatable": true,
      "x-sensorhub-filterable": true,
      "x-sensorhub-sortable": true
    },
    "themed_opinions": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Opinions with a theme.",
      "x-sensorhub-indexed": false,
      "x-sensorhub-searchable": false,
      "x-sensorhub-aggregatable": true,
      "x-sensorhub-filterable": true,
      "x-sensorhub-sortable": true
    }
  },
  "additionalProperties": false
}