API reference

One API. Ten verticals. The same response shape.

Auth with a bearer token, version with an Accept-Version header, paginate with cursors. The full reference lives alongside the docs.

Concepts

  • Entities

    The stable identifiers for things SignalGrid scores: films, talent, songs, athletes, brands, creators, races, SKUs. Resolved across data sources before scoring.

  • Signals

    Raw and normalized observations attached to entities: news mentions, search interest, social engagement, marketplace pricing, viewership, and so on.

  • Scores

    Continuously computed indices over signals. Equity scores, virality indices, demand indices. Updated on the cadence of their underlying signal.

  • Predictions

    Forward-looking model outputs: probabilities, expected values, decay curves. Every prediction ships with a confidence interval and a calibration bucket.

Example endpoints

GET/v1/entities/{id}

Fetch a resolved entity with provenance.

request.sh
curl https://api.signalgrid.com/v1/entities/film_kj91 \
  -H "Authorization: Bearer $SIGNALGRID_TOKEN"
response.json
{
  "id": "film_kj91",
  "type": "film",
  "name": "Untitled Marvel Q3",
  "aliases": ["Project Iris (working)"],
  "ids": { "tmdb": "tt9876123", "imdb": "tt9876123" },
  "createdAt": "2025-11-12T08:14:00Z"
}
GET/v1/signals

Stream recent signals attached to one or more entities.

request.sh
curl "https://api.signalgrid.com/v1/signals?entityId=film_kj91&since=2026-05-01" \
  -H "Authorization: Bearer $SIGNALGRID_TOKEN"
response.json
{
  "items": [
    {
      "id": "sig_91ad",
      "entityId": "film_kj91",
      "kind": "news_mention",
      "source": "trade.outlet",
      "url": "https://example.com/article",
      "publishedAt": "2026-05-09T14:01:00Z",
      "sentiment": 0.62
    }
  ],
  "nextCursor": "c_2bf1"
}
GET/v1/scores/{vertical}/{entityId}

Read the latest score for an entity in a given vertical.

request.sh
curl https://api.signalgrid.com/v1/scores/celebrity-equity/tal_2f10c \
  -H "Authorization: Bearer $SIGNALGRID_TOKEN"
response.json
{
  "entityId": "tal_2f10c",
  "equityScore": 71.4,
  "delta30d": 3.2,
  "asOf": "2026-05-09T00:00:00Z"
}
POST/v1/predictions/box-office

Score a film for opening-weekend gross.

request.sh
curl -X POST https://api.signalgrid.com/v1/predictions/box-office \
  -H "Authorization: Bearer $SIGNALGRID_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "entityId": "film_kj91", "horizonDays": 30 }'
response.json
{
  "entityId": "film_kj91",
  "openingWeekendUSD": 78400000,
  "ci80": [68900000, 88100000],
  "ci95": [62100000, 96800000],
  "calibrationBucket": 0.78,
  "drivers": [
    { "feature": "trailer_view_z", "contribution": 0.14 }
  ]
}
POST/v1/webhooks

Subscribe to entity events with a signed delivery URL.

request.sh
curl -X POST https://api.signalgrid.com/v1/webhooks \
  -H "Authorization: Bearer $SIGNALGRID_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://hooks.example.com/signalgrid",
    "events": ["score.changed", "crisis.breakout"]
  }'
response.json
{
  "id": "wh_3f10",
  "url": "https://hooks.example.com/signalgrid",
  "events": ["score.changed", "crisis.breakout"],
  "secret": "whsec_redacted"
}

The full reference is in the docs.

Endpoint catalog, schema definitions, error codes, and a typed TypeScript SDK.