Get a brand's analytics

GET
/brands/{brandId}/analytics

Visibility, share of voice, the per-model breakdown and the citation totals for one window, in one request.

The long lists — cited domains and URLs, sub-queries, per-prompt results — are endpoints of their own. Everything else is always included.

Authorization

BearerAuth
headerAuthorizationBearer <token>

An organization key (signal_…) created under Organization Settings → API Keys.

Path Parameters

brandId*string

Brand identifier.

Query Parameters

start*string

Inclusive lower bound of the window, an ISO 8601 timestamp such as 2026-01-01T00:00:00Z. Aligned down to the quarter hour, the grain analytics are aggregated at; where a response repeats the window, it repeats the aligned one. A bare YYYY-MM-DD is rejected: that is /prompts/{promptId}/snapshot's spelling and means a local calendar day there.

Formatdate-time
end*string

Exclusive upper bound of the window, an ISO 8601 timestamp, also aligned down to the quarter hour. The window is half-open: a run at exactly end is outside it. start and end inside one quarter-hour bucket leave an empty window and are rejected.

Formatdate-time
model?string

Restrict to one model, e.g. chatgpt. See GET /models.

tags?string

Comma-separated prompt tags. Only prompts carrying at least one of them are counted.

Response Body

Get a brand's analytics

application/json
  1. response

Every non-paginated figure for a brand over one window. There is no parameter for selecting a subset: the computations behind this cover the same prompts and run concurrently, so a subset would save a caller a fraction of one request and cost everyone a parameter to reason about.

brandId*string
brandName*string
range*

The window the response was computed over, echoed back as the half-open instants it resolved to.

visibility*

How often the brand is mentioned at all.

shareOfVoice*

The brand against its tracked competitors.

models*array<>

Per-model visibility and run counts. Only models that produced a run in the window appear.

sentiment*

Experimental — the shape may still change.

The brand's sentiment over the window, with the counts for each day so a client can chart or smooth them.

position*

Experimental — the shape may still change.

The brand's position among the tracked companies the answers name, 1 being named first, averaged over the window and per day.

totals*
Example Request
curl -X GET 'https://app.signal.metricshive.com/api/v1/brands/string/analytics?start=2019-08-24T14%3A15%3A22Z&end=2019-08-24T14%3A15%3A22Z'
Example Response
{
  "brandId": "string",
  "brandName": "string",
  "range": {
    "start": "2019-08-24T14:15:22Z",
    "end": "2019-08-24T14:15:22Z"
  },
  "visibility": {
    "current": 0,
    "series": [
      {
        "date": "2019-08-24",
        "visibility": 0
      }
    ]
  },
  "shareOfVoice": {
    "brand": 0,
    "entries": [
      {
        "name": "string",
        "isBrand": true,
        "mentions": 0,
        "prompts": 0,
        "share": 0,
        "sentiment": {
          "positive": 0,
          "neutral": 0,
          "negative": 0,
          "mixed": 0,
          "score": 0
        },
        "position": {
          "average": 1
        }
      }
    ],
    "series": [
      {
        "date": "2019-08-24",
        "share": 0
      }
    ]
  },
  "models": [
    {
      "model": "string",
      "label": "string",
      "runs": 0,
      "brandMentions": 0,
      "visibility": 0,
      "citations": 0,
      "sentiment": {
        "positive": 0,
        "neutral": 0,
        "negative": 0,
        "mixed": 0,
        "score": 0
      },
      "position": {
        "average": 1
      }
    }
  ],
  "sentiment": {
    "positive": 0,
    "neutral": 0,
    "negative": 0,
    "mixed": 0,
    "score": 0,
    "series": [
      {
        "date": "2019-08-24",
        "positive": 0,
        "neutral": 0,
        "negative": 0,
        "mixed": 0
      }
    ]
  },
  "position": {
    "average": 1,
    "series": [
      {
        "date": "2019-08-24",
        "average": 1
      }
    ]
  },
  "totals": {
    "runs": 0,
    "prompts": 0,
    "citations": 0,
    "uniqueDomains": 0,
    "uniqueUrls": 0
  }
}