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

# Ouverture + clôture + timeline d'un special

> Miroir de `/api/history` pour les marchés specials (props, outrights, corners, buteurs…). Renvoie `opening`, `closing` et `history` en un appel.

**La timeline ne contient que des CHANGEMENTS**, jamais deux points identiques d'affilée. Un point est créé dès que bouge la cote (`odds`), la **limite de mise** (`max_win`) ou la **ligne** (`handicap`). Chaque point porte l'identité complète du marché (`special_name`, `period`, `handicap`, `max_win`) : la série se lit seule, sans jointure. Plan Sharp.



## OpenAPI

````yaml /api-reference/openapi.json get /api/specials/history
openapi: 3.1.0
info:
  title: apinn — API Pinnacle temps réel
  version: 1.0.0
  description: >-
    Cotes Pinnacle en temps réel : prématch et live, ouverture et clôture
    TrueLine multi-modèles, specials et outrights.
servers:
  - url: https://api.apinn.io
security:
  - ApiKeyAuth: []
paths:
  /api/specials/history:
    get:
      tags:
        - specials
      summary: Ouverture + clôture + timeline d'un special
      description: >-
        Miroir de `/api/history` pour les marchés specials (props, outrights,
        corners, buteurs…). Renvoie `opening`, `closing` et `history` en un
        appel.


        **La timeline ne contient que des CHANGEMENTS**, jamais deux points
        identiques d'affilée. Un point est créé dès que bouge la cote (`odds`),
        la **limite de mise** (`max_win`) ou la **ligne** (`handicap`). Chaque
        point porte l'identité complète du marché (`special_name`, `period`,
        `handicap`, `max_win`) : la série se lit seule, sans jointure. Plan
        Sharp.
      operationId: getSpecialsHistory
      parameters:
        - name: event_id
          in: query
          required: false
          schema:
            type: integer
          description: Événement (obligatoire si `special_id` est absent).
        - name: special_id
          in: query
          required: false
          schema:
            type: integer
          description: Limiter à un marché special précis.
        - name: since
          in: query
          required: false
          schema:
            type: string
          description: Ne renvoyer que les points postérieurs à cet horodatage ISO.
        - name: model
          in: query
          required: false
          schema:
            type: string
            enum:
              - LOG
              - EM
              - MPTO
              - SHIN
              - OR
          description: Modèle de devig des `todds`.
      responses:
        '200':
          description: Ouverture, clôture et timeline
          content:
            application/json:
              schema:
                type: object
                properties:
                  opening:
                    type: array
                    items:
                      $ref: '#/components/schemas/SpecialOdds'
                  closing:
                    type: array
                    items:
                      $ref: '#/components/schemas/SpecialOdds'
                  history:
                    type: array
                    items:
                      $ref: '#/components/schemas/SpecialOdds'
        '403':
          description: Réservé au plan Sharp
        '422':
          description: event_id ou special_id requis
components:
  schemas:
    SpecialOdds:
      type: object
      properties:
        event_id:
          type:
            - integer
            - 'null'
        special_id:
          type: integer
        special_name:
          type: string
        contestant_id:
          type:
            - integer
            - 'null'
        contestant_name:
          type: string
        handicap:
          type:
            - number
            - 'null'
        odds:
          type:
            - number
            - 'null'
        todds:
          type:
            - number
            - 'null'
          description: True odds (devig).
        period:
          type: integer
        max_win:
          type:
            - number
            - 'null'
          description: >-
            Mise maximale acceptée sur ce marché. **Historisée** : tout
            changement crée un point dans `/api/specials/history`.
        cutoff:
          type:
            - string
            - 'null'
        timestamp:
          type: string
        true_odds_by_model:
          type: object
          description: >-
            Les cotes justes selon CHACUN des 5 modèles TrueLine (LOG, EM, MPTO,
            SHIN, OR). La cote juste n'est pas une observation : c'est la sortie
            d'un modèle de dévig, et les 5 divergent — d'où les 5 servies
            d'office, au prix d'un seul appel. Les champs `todds` de tête
            restent ceux du modèle demandé (`?model=` > préférence du compte >
            MPTO). Présent sur l'ouverture (premier tick) et la clôture (dernier
            tick avant le coup d'envoi) uniquement, jamais sur les ticks
            intermédiaires.
          additionalProperties:
            type:
              - number
              - 'null'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key

````