---
title: "Consensus/Divergence across surfaces, plus over-time trend matrix."
method: GET
path: "/entities/{entityId}/consensus-map"
tags: ["Layer 2 — Insight"]
---

# Consensus/Divergence across surfaces, plus over-time trend matrix.

`GET /entities/{entityId}/consensus-map`

## Request

- Base URL: `https://entidex.com/api/v1`
- URL: `https://entidex.com/api/v1/entities/{entityId}/consensus-map`
- Auth: HTTP bearer

## Path parameters

- `entityId` string, required

## Response `200`

OK

- object
  - `data` union
    - object
      - `available` true, required
      - `consensusScore` integer, required: 100 = surfaces agree.
      - `divergenceScore` integer, required: Complement of consensus.
      - `surfaces` object[], required
        - `surface` string, required
        - `label` string, required
        - `value` integer, required
        - `sampleSize` integer, required
        - `delta7d` number, nullable
        - `description` string, required: Source-agnostic caption for what this surface's number measures. Provider mechanics stay internal (CANON §7).
      - `spread` object, required
        - `min` integer, required
        - `max` integer, required
        - `range` integer, required
      - `confidence` object: Confidence Layer envelope (Amendment 7).
      - `lastObservedAt` string, date-time, required
      - `trendMatrix` SurfaceCorrelationMatrix, required: Cross-surface agreement over time. Null on the parent response until enough aligned history exists.
        - `entitySlug` string, required
        - `windowDays` integer, required
        - `computedAt` string, date-time, required
        - `surfaces` object[], required
          - `surface` string, required
          - `label` string, required
        - `pairs` SurfacePairConcordance[], required
          - `surfaceA` string, required: Canonical surface id (ai_engines is pinned here when present).
          - `labelA` string, required
          - `surfaceB` string, required
          - `labelB` string, required
          - `coMovement` number, required: Do the two surfaces rise and fall together (+1) or oppose (−1).
          - `concordance` integer, required: Level agreement = 100 − mean absolute gap.
          - `meanGap` integer, required: Mean absolute gap between the surfaces, 0..100 space.
          - `gapSlope` number, required: Least-squares slope of the gap over time, points/day.
          - `trend` 'converging' | 'diverging' | 'stable', required
          - `sampleSize` integer, required: Aligned snapshot pairs the row was computed from.
          - `lead` object, nullable: Leading relationship via lagged cross-correlation; null when synchronous or history too short. Day resolution — present as "≈N days".
            - `leaderSurface` string, required
            - `leaderLabel` string, required
            - `followerSurface` string, required
            - `followerLabel` string, required
            - `lagDays` integer, required
            - `coMovementAtLag` number, required
        - `aiEnginesPairs` SurfacePairConcordance[], required: Pairs involving ai_engines — the LLMs-vs-other-sources view.
          - `surfaceA` string, required: Canonical surface id (ai_engines is pinned here when present).
          - `labelA` string, required
          - `surfaceB` string, required
          - `labelB` string, required
          - `coMovement` number, required: Do the two surfaces rise and fall together (+1) or oppose (−1).
          - `concordance` integer, required: Level agreement = 100 − mean absolute gap.
          - `meanGap` integer, required: Mean absolute gap between the surfaces, 0..100 space.
          - `gapSlope` number, required: Least-squares slope of the gap over time, points/day.
          - `trend` 'converging' | 'diverging' | 'stable', required
          - `sampleSize` integer, required: Aligned snapshot pairs the row was computed from.
          - `lead` object, nullable: Leading relationship via lagged cross-correlation; null when synchronous or history too short. Day resolution — present as "≈N days".
            - `leaderSurface` string, required
            - `leaderLabel` string, required
            - `followerSurface` string, required
            - `followerLabel` string, required
            - `lagDays` integer, required
            - `coMovementAtLag` number, required
        - `overall` object, required
          - `meanConcordance` integer, required
          - `meanGapSlope` number, required
          - `trend` 'converging' | 'diverging' | 'stable', required
        - `snapshots` integer, required
    - object
      - `available` false, required
      - `reason` 'no_signal_yet' | 'insufficient_surfaces', required
  - `meta` ResponseMeta
    - `requestId` string, required
    - `timestamp` string, date-time, required
    - `apiVersion` string, required
    - `pagination` object
      - `cursor` string, nullable
      - `hasMore` boolean
      - `limit` integer
    - `rateLimit` object
      - `limit` integer
      - `remaining` integer
      - `resetAt` string, date-time
    - `billing` object
      - `creditsUsed` integer
      - `creditsRemaining` integer, nullable
      - `tier` 'free' | 'layer_0_discovery' | 'layer_1_profile' | 'layer_2_insight' | 'layer_3_drift' | 'layer_4_cohort'
      - `allowedLayers` integer[]: Cumulative layer ladder unlocked by this key (0=discovery … 4=cohort). free → []; layer_2_insight → [0,1,2].
      - `mode` 'demo' | 'free' | 'payg' | 'keyed': How the caller is billed: demo (feedback-loop key), free (monthly allowance), payg (Developer PAYG), keyed (paid subscription).
  - `errors` ApiError[]
    - `code` 'ENTITY_NOT_RESOLVED' | 'ENTITY_NOT_FOUND' | 'INVALID_PARAMETER' | 'RATE_LIMITED' | 'INSUFFICIENT_CREDITS' | 'TIER_NOT_AVAILABLE' | 'UNAUTHENTICATED' | 'FORBIDDEN' | 'INTERNAL_ERROR', required
    - `message` string, required
    - `field` string
    - `candidates` object[]

---

[API](https://skmtc.dev/entidex/apis/entidex-api.md) · [All operations](https://skmtc.dev/entidex/apis/entidex-api/llms.txt) · [OpenAPI document](https://skmtc.dev/entidex/apis/entidex-api/revisions/86b92f21a09a?raw)
