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

# Grade Selections

> Grades up to 50 bet selections against final results. Each selection is the event id, market name, side and, where the market has one, the line (hdp) and label exactly as served on /odds. Returns won, lost, void, half_won, half_lost, pending or ungradeable per selection, with a reason for void, pending and ungradeable answers (reason is null for won, lost, half_won and half_lost). Paid plans only.



## OpenAPI

````yaml /api-reference/openapi.json post /settlements/grade
openapi: 3.0.0
info:
  description: >-
    Odds-API.io is a powerful sports betting odds comparison API, providing
    real-time data from 365+ bookmakers across 34 sports with near zero latency.


    - 365+ bookmakers supported

    - 34 sports including Football, Basketball, Tennis, Esports and more

    - Real-time odds with close to zero latency

    - Pre-match & In-play odds coverage

    - 99.9% uptime for reliability
  title: Odds-API.io - Real-Time Sports Betting Odds API (v3)
  contact: {}
  version: 3.0.0
servers:
  - url: https://api.odds-api.io/v3
security: []
paths:
  /settlements/grade:
    post:
      tags:
        - Settlement
      summary: Grade Selections
      description: >-
        Grades up to 50 bet selections against final results. Each selection is
        the event id, market name, side and, where the market has one, the line
        (hdp) and label exactly as served on /odds. Returns won, lost, void,
        half_won, half_lost, pending or ungradeable per selection, with a reason
        for void, pending and ungradeable answers (reason is null for won, lost,
        half_won and half_lost). Paid plans only.
      parameters:
        - description: API key for authentication
          name: apiKey
          in: query
          required: true
          schema:
            type: string
      requestBody:
        required: true
        description: Selections to grade. At most 64 KB.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/controllers.GradeRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/controllers.GradesResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/controllers.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/controllers.ErrorResponse'
        '403':
          description: Paid plans only
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/controllers.ErrorResponse'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/controllers.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/controllers.ErrorResponse'
        '503':
          description: Storage unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/controllers.ErrorResponse'
      security:
        - ApiKeyAuth: []
components:
  schemas:
    controllers.GradeRequest:
      type: object
      required:
        - selections
      properties:
        selections:
          type: array
          minItems: 1
          maxItems: 50
          items:
            $ref: '#/components/schemas/controllers.GradeSelectionRequest'
    controllers.GradesResponse:
      type: object
      properties:
        grades:
          type: array
          description: One grade per selection, in the order sent.
          items:
            $ref: '#/components/schemas/controllers.GradeResponse'
    controllers.ErrorResponse:
      type: object
      properties:
        error:
          type: string
          example: Error message
    controllers.GradeSelectionRequest:
      type: object
      required:
        - eventId
        - market
        - side
      properties:
        ref:
          type: string
          description: Your own id for the bet, echoed back. At most 64 characters.
          example: bet-1
        eventId:
          description: Event id, as a number or a numeric string.
          oneOf:
            - type: integer
            - type: string
          example: 74919888
        market:
          type: string
          description: >-
            Market name as served on /odds, for example ML, Spread, Totals HT,
            Corners Totals, Player Props.
          example: Spread
        side:
          type: string
          description: >-
            home, away, draw, over, under, yes, no, odd, even, 1x, 12, x2, none,
            or an HT/FT pair such as draw/home.
          example: home
        hdp:
          type: number
          description: >-
            The line as served on /odds. Handicaps are stated for the home side.
            Required on handicap, totals, corners, bookings and player prop
            markets.
          example: -0.25
        label:
          type: string
          description: >-
            Row label as served. Required for Player Props, for example "Arike
            Ogunbowale (Assists)".
          example: Arike Ogunbowale (Assists)
        tieRule:
          type: string
          enum:
            - lose
            - void
          description: >-
            What a level score does to a moneyline bet in sports where books
            differ. Ignored where a fixed rule applies.
    controllers.GradeResponse:
      type: object
      properties:
        ref:
          type: string
          example: bet-1
        eventId:
          type: integer
          example: 74919888
        result:
          type: string
          enum:
            - won
            - lost
            - void
            - half_won
            - half_lost
            - pending
            - ungradeable
          example: won
        reason:
          type: string
          nullable: true
          description: Null for won, lost, half_won and half_lost. Always set otherwise.
          enum:
            - push
            - event_cancelled
            - event_not_started
            - event_live
            - awaiting_result
            - awaiting_stats
            - event_not_found
            - unsupported_market
            - invalid_side
            - invalid_line
            - invalid_label
            - incomplete_score
            - ambiguous_tie
            - player_not_matched
            - stats_unavailable
            - result_unavailable
            - null
          example: null
        final:
          type: boolean
          description: True when you can stop polling this selection.
          example: true
        basis:
          $ref: '#/components/schemas/settlement.Basis'
    settlement.Basis:
      type: object
      description: The score the verdict was computed from. Only on graded score markets.
      properties:
        scope:
          type: string
          enum:
            - regulation
            - full_game
            - match_result
            - first_half
            - second_half
            - first_period
            - period_2
            - period_3
            - games
            - map_1
            - map_2
            - map_3
            - map_4
            - map_5
          example: regulation
        home:
          type: integer
          example: 3
        away:
          type: integer
          example: 2

````

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