> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gdeltcloud.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Atlas GPR — geopolitical risk vs a place’s own normal

> A geo-scoped geopolitical-risk index normalized to each place’s own FROZEN baseline: 100 = normal for that place, 200 = twice its usual. Places are measured against themselves, never against a leaderboard, so the index is not a restatement of which countries generate the most news.

**Two parallel constructions**, selected with `construction` and named by their denominator (not `v1`/`v2` — this endpoint is already API v2):
- `own_coverage` (default) — the place’s qualifying share of its OWN coded-event coverage, measured on a single day.
- `world_corpus` — the place’s share of ALL coded events worldwide over a 14-day window. This is the construction the Caldara–Iacoviello GPR and the Fed’s country-level GPRC use. Fourteen days is two whole weeks, so the corpus’s weekday cycle cancels by construction.

**Nothing is fabricated.** Below the evidence floor a reading is `null` with `insufficient_data: true` and a reason — never 0. A band is withheld (with `band_status`) whenever the frozen ladder cannot keep its frequency promise. A coder-model change is an instrument change: baselines are frozen per generation, every reading is normalized against its own, and `baseline_coder_version` names it.



## OpenAPI

````yaml /api-reference/openapi-v2.json get /api/v2/intelligence/gpr
openapi: 3.0.3
info:
  title: GDELT Cloud API v2
  version: 2.0.0
  description: >-
    Clean v2 REST API for generated GDELT Cloud structured Events, clustered
    Stories, linked Entities, summaries, admin1 discovery, significance ranking,
    and paginated article evidence.


    Event significance is a family-scoped weighted blend, renormalized so every
    event family spans a true 0-1: each event's raw total is divided by the
    maximum its own family can reach (Conflict 1.00, CAMEO+ POLITICAL 0.90,
    other CAMEO+ domains 0.65). All events: Goldstein severity 0.25, article
    evidence 0.05, confidence 0.05. Conflict only: fatalities 0.55 (log-scaled
    by body count) and civilian targeting 0.10. CAMEO+ only: magnitude 0.20,
    systemic importance 0.15, propagation potential 0.10, market sensitivity
    0.10. When magnitude is unmeasured its term AND its 0.20 weight are both
    dropped. The four CAMEO+ metrics are rubric scores produced by published
    formulas - ordinal ranking signals, not measurements, probabilities, or
    predicted price moves. goldstein_scale is one canonical public metric,
    populated for Conflict Events and CAMEO+ POLITICAL Events where meaningful.
    Story linked_event_count is a Story-to-Event link aggregate, not a distinct
    Event total.
servers:
  - url: https://gdeltcloud.com
    description: Production
  - url: http://localhost:3000
    description: Local development
security:
  - ApiKeyAuth: []
tags:
  - name: Events
    description: Coded CAMEO+ / conflict events — search, fetch, and summarize.
  - name: Stories
    description: Clustered narratives (stories) and their articles.
  - name: Entities
    description: >-
      People & organizations — resolve a name to an entity, then fetch its
      profile and tone.
  - name: Geography
    description: Admin-1 geography lookups.
  - name: Energy
    description: Global Energy Monitor assets + ownership registry.
  - name: Facilities
    description: >-
      Unified physical-asset directory — GEM energy assets + World Port Index
      ports + Epoch AI data centers on one keyed surface, resolved to spine
      owners. Plan-gated (Analyst plan and up).
  - name: Screening and Reference
    description: >-
      Restricted-party lists, screening, and ownership-chain exposure.
      Plan-gated (`can_use_screening` / `can_use_exposure`).
  - name: China
    description: >-
      China overseas development finance (AidData GCDF). Plan-gated
      (`can_use_china`).
  - name: Media Intelligence
    description: >-
      Entity tone (`can_use_tone`) and Share of Voice (`can_use_share_of_voice`)
      are plan-gated. Social signal remains an admin-only preview.
  - name: Filings
    description: >-
      SEC EDGAR filings, XBRL financials, and AI-extracted relations. Requires a
      plan with SEC filings access (`can_use_filings`) — the Corporate & Supply
      Chain plan and above.
  - name: Macro Finance
    description: >-
      FRED economic time series (catalog, point-in-time observations, releases).
      Plan-gated (`can_use_macro`).
  - name: Maritime
    description: >-
      AIS-derived vessel-flow signals across maritime chokepoints — chokepoint
      transits, last-known vessel positions, carriers, dwell, and AIS-dark gaps.
      Plan-gated (`can_use_maritime`).
  - name: Briefs
    description: Source-backed monitoring briefs.
  - name: Atlas Intelligence
    description: >-
      Geopolitical-risk and posture indices computed from GDELT Cloud’s own
      coded events, normalized to each place’s own frozen baseline.
paths:
  /api/v2/intelligence/gpr:
    get:
      tags:
        - Atlas Intelligence
      summary: Atlas GPR — geopolitical risk vs a place’s own normal
      description: >-
        A geo-scoped geopolitical-risk index normalized to each place’s own
        FROZEN baseline: 100 = normal for that place, 200 = twice its usual.
        Places are measured against themselves, never against a leaderboard, so
        the index is not a restatement of which countries generate the most
        news.


        **Two parallel constructions**, selected with `construction` and named
        by their denominator (not `v1`/`v2` — this endpoint is already API v2):

        - `own_coverage` (default) — the place’s qualifying share of its OWN
        coded-event coverage, measured on a single day.

        - `world_corpus` — the place’s share of ALL coded events worldwide over
        a 14-day window. This is the construction the Caldara–Iacoviello GPR and
        the Fed’s country-level GPRC use. Fourteen days is two whole weeks, so
        the corpus’s weekday cycle cancels by construction.


        **Nothing is fabricated.** Below the evidence floor a reading is `null`
        with `insufficient_data: true` and a reason — never 0. A band is
        withheld (with `band_status`) whenever the frozen ladder cannot keep its
        frequency promise. A coder-model change is an instrument change:
        baselines are frozen per generation, every reading is normalized against
        its own, and `baseline_coder_version` names it.
      operationId: get-atlas-gpr
      parameters:
        - name: construction
          in: query
          required: false
          description: >-
            Which construction. Named by the DENOMINATOR. `world_corpus` is the
            field’s reference GPR and the right choice for cross-country
            comparison or for anything you will difference or correlate.
          schema:
            type: string
            enum:
              - own_coverage
              - world_corpus
            default: own_coverage
        - name: variant
          in: query
          required: false
          description: >-
            Which substrate. `events` = tension computed from coded events.
            `attention` = the event-INDEPENDENT share of news attention on
            tension-bearing narratives. They can disagree, and the disagreement
            is often the signal.
          schema:
            type: string
            enum:
              - events
              - attention
            default: events
        - name: component
          in: query
          required: false
          description: >-
            Decompose into a CAMEO-family sub-stream. Validated PER LENS: the
            attention lens publishes only `all`, and the GPR lens has no
            `verbal`/`material`. An unsupported pair returns 400 INVALID_ENUM
            listing what that lens does have.
          schema:
            type: string
            enum:
              - all
              - threats
              - acts
              - verbal
              - material
            default: all
        - name: metric
          in: query
          required: false
          description: Which series to return.
          schema:
            type: string
            enum:
              - gpr
              - attention_share
            default: gpr
        - name: weighting
          in: query
          required: false
          description: >-
            Roll-up weighting for aggregate geographies. `gdp` is EPU-style and
            does not apply to a country (a country is not a roll-up).
          schema:
            type: string
            enum:
              - attention
              - gdp
            default: attention
        - name: level
          in: query
          required: false
          description: >-
            Geographic resolution. `world` needs no `geo`; every other level
            requires one.
          schema:
            type: string
            enum:
              - world
              - continent
              - region
              - country
            default: world
        - name: geo
          in: query
          required: false
          description: >-
            The place, when level is continent/region/country: an ISO-3166
            alpha-3 code, or a region / continent name. An unknown value returns
            400 INVALID_ENUM listing what that level accepts.
          schema:
            type: string
          example: UKR
        - name: window
          in: query
          required: false
          description: Trailing days of the series to return. Not the measurement window.
          schema:
            type: integer
            minimum: 1
            maximum: 370
            default: 7
        - name: date_start
          in: query
          required: false
          description: Explicit series start (overrides `window`).
          schema:
            type: string
            format: date
        - name: date_end
          in: query
          required: false
          description: Explicit series end.
          schema:
            type: string
            format: date
        - name: date
          in: query
          required: false
          description: A single observation date instead of a range.
          schema:
            type: string
            format: date
        - name: as_of
          in: query
          required: false
          description: >-
            Point-in-time read: reproduce the index as it was KNOWN on this
            date, with no look-ahead.
          schema:
            type: string
            format: date
        - name: limit
          in: query
          required: false
          description: Page size.
          schema:
            type: integer
            minimum: 1
            maximum: 370
            default: 100
      responses:
        '200':
          description: The index series, most recent first.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AtlasGprResponse'
        '400':
          description: >-
            Invalid enum or date. `details.accepted_values` lists what is
            accepted.
components:
  schemas:
    AtlasGprResponse:
      type: object
      properties:
        success:
          type: boolean
          enum:
            - true
        series_id:
          type: string
          example: atlas.pulse.country.ukr.fullspectrum.all
        level:
          type: string
        geo_id:
          type: string
        methodology_version:
          type: string
          example: atlas-pulse-1.2.0
        construction:
          type: object
          nullable: true
          description: >-
            Present only on `construction=world_corpus`, describing the formula
            in force.
          properties:
            name:
              type: string
              enum:
                - world_corpus
            formula:
              type: string
            denominator:
              type: string
              enum:
                - global_corpus_size
            window_days:
              type: integer
              example: 14
            severity_weighting:
              type: string
        baseline:
          type: object
          nullable: true
          description: The frozen reference the returned rows were measured against.
          properties:
            version:
              type: string
            mean_anchor:
              type: integer
              enum:
                - 100
            window:
              type: array
              items:
                type: string
                format: date
              minItems: 2
              maxItems: 2
            fixed:
              type: boolean
              description: The base window is frozen, not trailing.
            coder_version:
              type: string
              description: Which coder generation this reference describes.
            n_obs:
              type: integer
            base_events:
              type: integer
              nullable: true
              description: >-
                Evidence behind the reference. Null when not yet measured —
                never a measured zero.
            bands_usable:
              type: boolean
              description: >-
                False when the ladder cannot keep its frequency promise; bands
                are then withheld.
            provisional:
              type: boolean
        coverage_floor:
          type: number
        coverage_floor_basis:
          type: string
          example: single_day
        data:
          type: array
          items:
            $ref: '#/components/schemas/AtlasGprPoint'
        pagination:
          type: object
          properties:
            limit:
              type: integer
            cursor:
              type: string
              nullable: true
            next_cursor:
              type: string
              nullable: true
    AtlasGprPoint:
      type: object
      properties:
        date:
          type: string
          format: date
        pulse:
          type: number
          nullable: true
          description: >-
            `own_coverage` construction: the index. Null below the coverage
            floor — never 0.
        gpr:
          type: number
          nullable: true
          description: >-
            `world_corpus` construction: the index. Null below the evidence
            floor — never 0.
        multiplier:
          type: string
          nullable: true
          example: 1.5×
        band:
          type: string
          nullable: true
          enum:
            - Subdued
            - Normal
            - Elevated
            - Surging
            - Extreme
          description: >-
            Own-history deviation, NOT a level word. Null where the ladder
            cannot support one.
        band_notation:
          type: string
          nullable: true
          example: L3
        band_status:
          type: string
          nullable: true
          enum:
            - degenerate_baseline
          description: Why a reading that cleared the floor still carries no band.
        tension_share:
          type: number
          nullable: true
          description: '`own_coverage`: qualifying ÷ the place’s own coverage.'
        corpus_share:
          type: number
          nullable: true
          description: >-
            `world_corpus`: qualifying ÷ ALL coded events worldwide over the
            window.
        world_events:
          type: integer
          nullable: true
          description: The corpus size the share was measured against.
        qualifying_events:
          type: integer
        coverage_events:
          type: integer
          description: >-
            The place’s own coverage. Reported; never a denominator on
            `world_corpus`.
        insufficient_data:
          type: boolean
        insufficient_reason:
          type: string
          nullable: true
          enum:
            - no_baseline
            - base_window_below_floor
            - window_incomplete
        precision:
          type: object
          nullable: true
          description: >-
            Coverage published as PRECISION — present whether or not the reading
            cleared.
          properties:
            days_in_window:
              type: integer
            window_days:
              type: integer
            base_events:
              type: integer
              nullable: true
            base_event_floor:
              type: integer
        baseline_coder_version:
          type: string
          nullable: true
          description: >-
            The coder generation whose baseline normalized THIS row. A series
            spanning a change is not one comparable series.
        source_mix:
          type: object
          properties:
            effective_source_count:
              type: integer
              nullable: true
            new_source_share:
              type: number
              nullable: true
            status:
              type: string
              enum:
                - measured
                - not_measured
              description: >-
                `not_measured` means the diagnostics pass has not run — the
                nulls are honest, not a measured zero.
        data_origin:
          type: string
          nullable: true
          enum:
            - live
            - backfill
        vintage:
          type: string
          format: date
          nullable: true
  securitySchemes:
    ApiKeyAuth:
      type: http
      scheme: bearer
      bearerFormat: gdelt_sk_...
      description: 'GDELT Cloud API key. Send as `Authorization: Bearer gdelt_sk_...`.'

````