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

# Get current grade

> The market's current grade record: the letter, its lifecycle state, any open watch, caps, evidence tier, the measurement window, and the methodology and calibration it was computed under.

A suspension does not erase a grade. While a market is suspended for missing or inactive inputs, the record shows the last grade with `dataStatus: suspended-with-last-grade`, and `asOf` is the day that grade was measured. Shorter input gaps read `data-limited`. A market with no published record returns 404.



## OpenAPI

````yaml /api-reference/openapi.json get /v1/grades/{venue}/{market_id}/latest
openapi: 3.1.0
info:
  contact:
    name: Belief Systems
    url: https://beliefsystems.xyz/data
  description: >-
    Rules-based benchmark data for prediction markets: Belief index levels,
    Belief Volatility series, and Market Grades (beta), read over HTTPS with an
    API key.


    The API is read-only. Every endpoint is a `GET`, every successful response
    is `{ data, meta }`, and every failure is a single `error` object with a
    stable `code`.


    Keys are free and take about a minute to mint at
    https://beliefsystems.xyz/data. Attribution is required on anything you
    publish from this data: "Source: Belief Systems (beliefsystems.xyz)".
    Production, redistribution, and commercial use require a license
    (https://beliefsystems.xyz/license).
  license:
    name: Belief Systems Data License
    url: https://beliefsystems.xyz/license
  termsOfService: https://beliefsystems.xyz/terms
  title: Belief Systems Data API
  version: '1.0'
servers:
  - description: Production. There is no separate test host; the API is read-only.
    url: https://api.beliefsystems.xyz
security:
  - bearerAuth: []
  - apiKeyAuth: []
tags:
  - description: >-
      Belief indices are rules-based benchmarks of how prediction markets price
      a defined set of events. Levels are exact decimal strings based at 100 on
      the index's inception date.
    name: Indices
  - description: >-
      Belief Volatility measures how much prediction-market probabilities are
      expected to move over a stated horizon, in probability points. Always name
      the tenor when quoting a value.
    name: Belief Volatility
  - description: >-
      Market Grades are letter grades for the quality of individual prediction
      markets (liquidity and integrity), not for the likelihood of any outcome.
      The family is in beta: the methodology and the validation roadmap are
      published, and results are reported as they arrive. Join on `venue` and
      `marketId` together, and reproduce `disclosureLines` wherever you show a
      letter.
    name: Market Grades
  - description: >-
      The service index, which reports your key's live quota, and pointers to
      the free point-in-time snapshot bundles.
    name: Service
paths:
  /v1/grades/{venue}/{market_id}/latest:
    get:
      tags:
        - Market Grades
      summary: Get current grade
      description: >-
        The market's current grade record: the letter, its lifecycle state, any
        open watch, caps, evidence tier, the measurement window, and the
        methodology and calibration it was computed under.


        A suspension does not erase a grade. While a market is suspended for
        missing or inactive inputs, the record shows the last grade with
        `dataStatus: suspended-with-last-grade`, and `asOf` is the day that
        grade was measured. Shorter input gaps read `data-limited`. A market
        with no published record returns 404.
      operationId: getGradeLatest
      parameters:
        - description: Venue slug. A market is identified by venue and market id together.
          example: polymarket
          in: path
          name: venue
          required: true
          schema:
            type: string
        - description: The venue's own market identifier.
          example: '0x42945ea5657d6f6e77969a06661b29d6f6295083d1ef3479b42efd90647c9dfc'
          in: path
          name: market_id
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  asOf: '2026-10-23T00:00:00.000000Z'
                  calibrationVersion: mg-cal-1.0
                  caps:
                    - binding: true
                      cap_letter: D
                      lowered_letter: false
                      source: weakest_link
                    - binding: false
                      cap_letter: B+
                      lowered_letter: false
                      source: evidence_tier
                  computationStatus: candidate
                  correction: null
                  coverageClass: full
                  coverageShare: 0.999885
                  dataStatus: ok
                  disclosureLines:
                    - >-
                      Market Grades measure market quality, not the likelihood
                      of any outcome.
                    - >-
                      Market Grades are unsolicited: no graded party requests,
                      pays for, or previews a grade. Belief Systems holds no
                      positions in graded markets.
                    - >-
                      A grade is not a recommendation to buy, sell, or hold any
                      position, and is not a substitute for a user's own
                      assessment.
                  evidenceTier: T1
                  firstObserved: '2026-09-23T10:25:05.936852Z'
                  gateFlags: []
                  grade: D
                  gradeEpisodeId: >-
                    polymarket:0x42945ea5657d6f6e77969a06661b29d6f6295083d1ef3479b42efd90647c9dfc:1
                  gradeSince: '2026-10-23T00:00:00.000000Z'
                  lastConfirmedAction: null
                  lastFullData: '2026-10-23T00:00:00.000000Z'
                  lifecycleState: active
                  marketId: >-
                    0x42945ea5657d6f6e77969a06661b29d6f6295083d1ef3479b42efd90647c9dfc
                  methodologyVersion: mg-1.2
                  observedDaysWindow: 30
                  pillarGrades:
                    integrity:
                      letter: B+
                      since: '2026-10-23T00:00:00.000000Z'
                      trend: stable
                    liquidity:
                      letter: F
                      since: '2026-10-23T00:00:00.000000Z'
                      trend: stable
                  preLaunch: false
                  question: Will Ethereum reach $3,500 by December 31, 2026?
                  revision: 0
                  stateRevision: 0
                  venue: polymarket
                  watch: null
                  window:
                    - '2026-09-23T00:00:00.000000Z'
                    - '2026-10-23T00:00:00.000000Z'
                meta:
                  attribution: 'Source: Belief Systems (beliefsystems.xyz)'
                  generatedAt: '2026-10-23T15:49:14.582224Z'
                  license: https://beliefsystems.xyz/license
                  termsUrl: https://beliefsystems.xyz/terms
              schema:
                $ref: '#/components/schemas/GradeLatestResponse'
          description: Success.
        '401':
          content:
            application/json:
              example:
                error:
                  code: invalid_api_key
                  docsUrl: >-
                    https://docs.beliefsystems.xyz/api-reference/limits#invalid-api-key
                  message: >-
                    This endpoint requires a Data API key. Create one free at
                    https://beliefsystems.xyz/data ; programmatic or commercial
                    licensing is at https://beliefsystems.xyz/license.
                  requestId: 9f2c1ad4e6b74c0f8a3d5e1b7c904a26
              schema:
                $ref: '#/components/schemas/Error'
          description: Missing or unresolvable API key.
        '404':
          content:
            application/json:
              example:
                error:
                  code: not_found
                  docsUrl: >-
                    https://docs.beliefsystems.xyz/api-reference/limits#not-found
                  message: >-
                    No Belief index 'NOPE'. GET /v1/indices lists the published
                    catalog.
                  requestId: 9f2c1ad4e6b74c0f8a3d5e1b7c904a26
              schema:
                $ref: '#/components/schemas/Error'
          description: No index or volatility series matches that ticker on this surface.
        '429':
          content:
            application/json:
              example:
                error:
                  code: rate_limited
                  docsUrl: >-
                    https://docs.beliefsystems.xyz/api-reference/limits#rate-limited
                  message: 'Rate limit exceeded: 60 requests per minute per key.'
                  requestId: 9f2c1ad4e6b74c0f8a3d5e1b7c904a26
              schema:
                $ref: '#/components/schemas/Error'
          description: >-
            Rate limited. Sleep for `Retry-After` seconds, which is exact on
            both windows.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Error. Every /v1 failure uses this shape.
      x-codeSamples:
        - label: curl
          lang: curl
          source: >-
            curl -s
            "https://api.beliefsystems.xyz/v1/grades/polymarket/0x42945ea5657d6f6e77969a06661b29d6f6295083d1ef3479b42efd90647c9dfc/latest"
            \
              -H "Authorization: Bearer $BELIEF_API_KEY"
        - label: Python
          lang: python
          source: |-
            import os
            import requests

            resp = requests.get(
                "https://api.beliefsystems.xyz/v1/grades/polymarket/0x42945ea5657d6f6e77969a06661b29d6f6295083d1ef3479b42efd90647c9dfc/latest",
                headers={"Authorization": f"Bearer {os.environ['BELIEF_API_KEY']}"},
                timeout=10,
            )
            resp.raise_for_status()

            payload = resp.json()
            print(payload["data"])
        - label: JavaScript
          lang: javascript
          source: >-
            const res = await
            fetch("https://api.beliefsystems.xyz/v1/grades/polymarket/0x42945ea5657d6f6e77969a06661b29d6f6295083d1ef3479b42efd90647c9dfc/latest",
            {
              headers: { Authorization: `Bearer ${process.env.BELIEF_API_KEY}` },
            });

            if (!res.ok) throw new Error(`Belief Systems API ${res.status}`);


            const { data, meta } = await res.json();

            console.log(data);
components:
  schemas:
    GradeLatestResponse:
      properties:
        data:
          properties:
            asOf:
              description: >-
                Measurement day (window end). UTC timestamp with microsecond
                precision, `Z`-suffixed.
              format: date-time
              type: string
            calibrationVersion:
              description: Calibration the record was computed under.
              example: mg-cal-1.0
              type: string
            caps:
              description: >-
                Caps applied to the letter. Null wherever the letter is
                withheld.
              items:
                description: One cap applied to the letter.
                properties:
                  binding:
                    description: >-
                      True when the cap is in force at or below the published
                      letter.
                    type: boolean
                  cap_letter:
                    description: >-
                      The best letter the cap allows. Letter on the published
                      scale, best to worst: `A+`, `A`, `A-`, `B+`, `B`, `B-`,
                      `C+`, `C`, `C-`, `D`, `F`.
                    type: string
                  lowered_letter:
                    description: >-
                      True only when the cap actually lowered the letter it was
                      applied to.
                    type: boolean
                  source:
                    description: 'What imposed the cap: `evidence_tier` or `weakest_link`.'
                    type: string
                type: object
              type:
                - array
                - 'null'
            computationStatus:
              description: >-
                `candidate` (full evidence) or `data_limited` on every published
                record.
              type: string
            correction:
              description: >-
                Null unless a published correction changed the current letter.
                Then the grade is a labeled revision (shown as v2, v3, ...):
                `grade` is the corrected letter, and this block says when it was
                revised and what was first published. The original record stays
                on record (`revisions=all`). It returns to null when the letter
                next changes for a market reason. Cite the current letter and
                say it was revised; a correction is never an upgrade or
                downgrade.
              properties:
                noteUrl:
                  description: The Governance Log note for the correction.
                  format: uri
                  type: string
                originalAsOf:
                  description: '`asOf` of the record first published.'
                  format: date-time
                  type: string
                originalLetter:
                  description: The letter first published for the corrected record.
                  type: string
                reason:
                  description: Why the grade was revised, in one plain sentence.
                  maxLength: 200
                  type: string
                revisedAt:
                  description: >-
                    When the correction was published. UTC timestamp with
                    microsecond precision, `Z`-suffixed.
                  format: date-time
                  type: string
                version:
                  description: 2 for the first correction of the letter, 3 for the second.
                  minimum: 2
                  type: integer
              type:
                - object
                - 'null'
            coverageClass:
              description: Input coverage class, for example `full`.
              type:
                - string
                - 'null'
            coverageShare:
              description: Share of the window with usable order-book coverage, 0 to 1.
              type:
                - number
                - 'null'
            dataStatus:
              description: >-
                `ok`, `data-limited`, or `suspended-with-last-grade`. A
                suspension never erases a grade: while suspended, the current
                record shows the last grade with this marker, and `asOf` is the
                day that grade was measured.
              type:
                - string
                - 'null'
            disclosureLines:
              description: >-
                Three or more disclosure sentences: the family's three, plus any
                lines a venue's capability profile adds. Reproduce them wherever
                you show a letter.
              items:
                type: string
              type: array
            evidenceTier:
              description: >-
                `T2` (full), `T1`, or `T0`. Lower tiers cap the best reachable
                letter.
              type:
                - string
                - 'null'
            firstObserved:
              description: >-
                When the market was first observed. UTC timestamp with
                microsecond precision, `Z`-suffixed.
              format: date-time
              type:
                - string
                - 'null'
            gateFlags:
              description: >-
                Names of the data gates that flagged this record. Empty when
                none did.
              items:
                type: string
              type: array
            grade:
              description: >-
                The grade of record. Letter on the published scale, best to
                worst: `A+`, `A`, `A-`, `B+`, `B`, `B-`, `C+`, `C`, `C-`, `D`,
                `F`. Null when the market is not rated (still seasoning, or
                terminal without a letter) or when the record predates the
                family's launch.
              type:
                - string
                - 'null'
            gradeEpisodeId:
              description: >-
                `venue:marketId:episode`. A new episode starts when a market's
                question materially changes.
              type: string
            gradeSince:
              description: Start of the current letter run. Null wherever `grade` is null.
              format: date-time
              type:
                - string
                - 'null'
            lastConfirmedAction:
              description: >-
                `actionId` of the last confirmed letter change (an upgrade or
                downgrade), or null. A first grade is not one.
              type:
                - string
                - 'null'
            lastFullData:
              description: The last day with full input coverage.
              format: date-time
              type:
                - string
                - 'null'
            lifecycleState:
              description: >-
                Where the market is in its rating life: for example `active`,
                `provisional`, `nr_new`, `nr_data`, `nr_inactive`, `terminal`,
                `resolved`, `retired`.
              type:
                - string
                - 'null'
            marketId:
              description: >-
                The venue's own market identifier. Unique only within its venue,
                so always join on `venue` and `marketId` together.
              type: string
            methodologyVersion:
              description: Methodology the record was computed under.
              example: mg-1.2
              type: string
            observedDaysWindow:
              description: Observed days in the window.
              type:
                - integer
                - 'null'
            pillarGrades:
              description: The two component grades, liquidity and integrity.
              properties:
                integrity:
                  additionalProperties: true
                  description: >-
                    A component grade. `letter` is null wherever `grade` is
                    null. When a letter is present on a current record, the
                    object also carries `since` (start of the current letter
                    run, UTC) and `trend` (`improving`, `stable`, or
                    `deteriorating` over about 30 days).
                  properties:
                    letter:
                      description: >-
                        Letter on the published scale, best to worst: `A+`, `A`,
                        `A-`, `B+`, `B`, `B-`, `C+`, `C`, `C-`, `D`, `F`.
                      type:
                        - string
                        - 'null'
                  type: object
                liquidity:
                  additionalProperties: true
                  description: >-
                    A component grade. `letter` is null wherever `grade` is
                    null. When a letter is present on a current record, the
                    object also carries `since` (start of the current letter
                    run, UTC) and `trend` (`improving`, `stable`, or
                    `deteriorating` over about 30 days).
                  properties:
                    letter:
                      description: >-
                        Letter on the published scale, best to worst: `A+`, `A`,
                        `A-`, `B+`, `B`, `B-`, `C+`, `C`, `C-`, `D`, `F`.
                      type:
                        - string
                        - 'null'
                  type: object
              type: object
            preLaunch:
              description: >-
                True for records measured before the family's launch. Their
                letters are withheld permanently.
              type: boolean
            question:
              description: >-
                The market's current question text, for display. Null if
                unknown.
              type:
                - string
                - 'null'
            revision:
              description: >-
                Correction marker for the computation. `0` as first published;
                corrections append, never overwrite.
              type: integer
            stateRevision:
              description: >-
                Correction marker for the lifecycle state rendered with this
                record.
              type:
                - integer
                - 'null'
            venue:
              description: Venue slug.
              example: polymarket
              type: string
            watch:
              description: An open watch, or null.
              properties:
                openedAsOf:
                  description: UTC timestamp with microsecond precision, `Z`-suffixed.
                  format: date-time
                  type:
                    - string
                    - 'null'
                value:
                  description: '`negative` or `positive`.'
                  type: string
              type:
                - object
                - 'null'
            window:
              description: The measurement window, `[start, end)`, in UTC.
              items:
                format: date-time
                type: string
              type: array
          type: object
        meta:
          properties:
            attribution:
              description: >-
                The attribution line required on anything you publish from this
                data. Reproduce it verbatim.
              example: 'Source: Belief Systems (beliefsystems.xyz)'
              type: string
            generatedAt:
              description: >-
                When this response was generated. UTC timestamp with microsecond
                precision, `Z`-suffixed.
              format: date-time
              type: string
            license:
              description: Terms covering production, redistribution, and commercial use.
              format: uri
              type: string
            termsUrl:
              description: Terms of Service.
              format: uri
              type: string
          required:
            - attribution
            - license
            - termsUrl
            - generatedAt
          type: object
      required:
        - data
        - meta
      type: object
    Error:
      description: >-
        Every failure replaces `data` and `meta` with a single `error` object.
        Match on `code`, which is a stable contract. `message` is written for a
        person and may be reworded.
      properties:
        error:
          properties:
            code:
              description: Stable machine-readable error code.
              enum:
                - invalid_api_key
                - ip_rate_limited
                - rate_limited
                - daily_limit_reached
                - not_found
                - invalid_parameter
                - invalid_interval
                - invalid_window
                - method_not_allowed
                - internal_error
                - unavailable
                - error
              type: string
            docsUrl:
              description: Deep link to this code on the limits and errors page.
              format: uri
              type: string
            message:
              description: Human-readable explanation. Not a stable contract.
              type: string
            requestId:
              description: >-
                Correlation id, also returned as the X-Request-Id header. Quote
                it in support requests.
              type: string
          required:
            - code
            - message
            - docsUrl
            - requestId
          type: object
      required:
        - error
      title: Error
      type: object
  securitySchemes:
    bearerAuth:
      description: >-
        Your Data API key as a Bearer token: `Authorization: Bearer
        belief_live_...`. This is the canonical form. Keys belong on a server,
        never in a browser.
      scheme: bearer
      type: http
    apiKeyAuth:
      description: >-
        The same key sent as `X-API-Key` instead. Accepted everywhere the Bearer
        header is. Send one or the other, not both.
      in: header
      name: X-API-Key
      type: apiKey

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.