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

# List events related by meaning

> Open events that mean something close to this one, for "more like
this". Nearness is the cosine similarity of the embeddings free-text
search uses, which are built from each event's title, outcomes and
labels. Unlike relations, nothing here is proven: two related events
can resolve independently.

What comes back is filtered to be worth a look:

- Only listed events that can still be traded: closed events, games
  already under way, and one-winner events whose leading outcome costs
  97¢ or more are left out, as are the event itself, its twin, and the
  same question listed on the other venue without a proven twin.
- A neighbour is kept when its meaning is very close, or when it is
  reasonably close and shares a labeled name or subject with the event.
- Instances of one recurring question collapse to the best of them:
  every day of a price range, or every game of the same team, shows
  once. At most one other instance of this event's own series is kept,
  ranked below new questions.
- Order is by similarity, nudged toward what traded today.

Each result says why in `reason`. An event not yet labeled has no
related events. Results are cached for two minutes.




## OpenAPI

````yaml /openapi.yaml get /v1/events/{venue}/{id}/related
openapi: 3.1.0
info:
  title: Routeur Graph API
  version: '2026-09-15'
  summary: >-
    Proven relations between Kalshi and Polymarket contracts, with the history
    and signals built on them.
  description: >
    Routeur reads every open market on Kalshi and global Polymarket, and proves

    which ones imply, exclude or equal each other from each venue's structured

    contract terms and exact arithmetic. No relation is inferred from prose, and

    ambiguous or conflicting evidence is withheld.


    ## Authentication

    Send your key in the `X-API-Key` header, or as `Authorization: Bearer
    <key>`.

    Keys look like `rk_live_<12-character id>_<43-character secret>` and are

    shown once when issued. Keep them server-side.


    ## Rate limits

    Every key has a per-minute limit and a per-day quota set by its tier:


    | Tier | Requests per minute | Requests per day |

    |---|---|---|

    | free | 30 | 2,000 |

    | trader | 120 | 50,000 |

    | pro | 600 | 500,000 |

    | institutional | 3,000 | 10,000,000 |


    Responses carry `X-RateLimit-Limit`, `X-RateLimit-Remaining` and

    `X-RateLimit-Reset` (Unix seconds) for the minute window, and

    `X-Daily-Quota-Limit` and `X-Daily-Quota-Remaining` for the day (UTC).

    A request over either limit returns `429` with `Retry-After` in seconds.


    ## Conventions

    - Money and prices are decimal strings in USD (for example `"0.4100"`),
    never
      floats. Prices are per contract that pays $1.
    - Times are RFC 3339 in UTC.

    - Successful responses wrap results in `data`. Graph-derived responses also
      name the `graph_run` they were read from; runs finish hourly.
    - Paginated lists return `next_cursor` when more results exist. Pass it back
      as `cursor` unchanged; cursors are opaque.
    - Unknown or repeated query parameters are rejected with `400`, so typos
    never
      silently widen a query.

    ## Liquidity

    Every object that names a market carries its 24-hour volume, its spread and

    a `liquidity` grade, because a price nobody can trade at is not a price:


    | Grade | 24-hour volume or open interest | Round-trip spread |

    |---|---|---|

    | `deep` | $25,000 traded, or $250,000 open interest | 2¢ or less |

    | `tradeable` | $1,000 traded, or $25,000 open interest | 5¢ or less |

    | `thin` | anything less, or no quoted round trip | |


    Lists that suggest something to act on — price gaps, leads, movers, flows,

    large fills, closing soon, strategy matches — leave thin markets out by

    default, and rank what is left by the money behind it. Three parameters

    change that wherever it applies: `min_volume_usd`, `max_spread_usd` and

    `include_thin=true`, which drops both floors. Search and event listings show

    thin markets but rank them below what can be traded.


    ## Errors

    Errors return a JSON body `{"error": {"code": "...", "message": "..."}}`.

    Branch on `code`; messages may change.


    | Status | Code | Meaning |

    |---|---|---|

    | 400 | `invalid_parameter` | A query parameter is unknown, repeated or out
    of range. |

    | 400 | `invalid_market` | The venue is not `kalshi` or `polymarket`, or the
    market id is malformed. |

    | 400 | `invalid_rulebook` | The venue, rulebook kind or id is malformed. |

    | 401 | `api_key_required` | No key was sent. |

    | 401 | `invalid_api_key` | The key is malformed or unknown. |

    | 401 | `api_key_revoked` | The key was revoked. |

    | 404 | `market_not_found` | The market is not in the latest graph. |

    | 404 | `relation_not_found` | Both markets are listed, but no current proof
    relates them. |

    | 404 | `rulebook_not_found` | No such rulebook has been recorded. |

    | 404 | `book_not_found` | No order book is recorded for the market at that
    time. |

    | 404 | `not_found` | No such endpoint. |

    | 429 | `rate_limited` | The per-minute limit was exceeded. |

    | 429 | `daily_quota_exceeded` | The daily quota is used up. |

    | 429 | `too_many_streams` | The key already holds its concurrent live
    streams. |

    | 503 | `graph_unavailable` | No graph run has finished yet. |

    | 503 | `stream_unavailable` | No live stream capacity is free; retry
    shortly. |

    | 504 | `timeout` | The request took longer than 15 seconds. |

    | 500 | `internal` | Something failed on our side. |


    ## Webhooks

    Mispricing alerts are delivered as signed `POST` requests; see the

    `webhooks` section. Each request carries

    `Routeur-Signature: t=<unix seconds>,v1=<hex>`, where `v1` is

    HMAC-SHA256 of `<t>.<raw body>` keyed by your subscription's signing

    secret. Reject requests whose signature does not match or whose `t` is more

    than five minutes old, and respond `2xx` within 10 seconds.


    `Routeur-Delivery` identifies the delivery and stays the same across
    retries,

    so use it to ignore duplicates. Any response other than `2xx` or `410`, or
    no

    response, is retried with exponential backoff from 30 seconds for up to 8

    attempts; responding `410 Gone` disables the subscription. Endpoints must be

    HTTPS on a public address, and redirects are not followed.
  contact:
    name: Routeur
    url: https://routeur.app
servers:
  - url: https://api.routeur.app
security:
  - apiKey: []
  - bearer: []
tags:
  - name: Events
    description: Real-world events across both venues, the way people browse them.
  - name: Graph
    description: Markets and the relations proven between them.
  - name: History
    description: Recorded quotes and trades.
  - name: Rules
    description: |
      Contract terms and their history. Every version of every market's rule
      text is kept from the day it was first seen, along with the rulebooks
      above it (Kalshi series and event terms, Polymarket resolution metadata)
      and the venue's contract terms documents, with diffs between versions.
  - name: Books
    description: >-
      Order books recorded live from each venue's feed, their history, and the
      health of the feeds.
  - name: Signals
    description: Mispricing leads and unusual trading derived from the graph and history.
  - name: Live
    description: Quotes, trades, relations and leads pushed as they happen.
  - name: Service
    description: Service status and this document.
paths:
  /v1/events/{venue}/{id}/related:
    parameters:
      - $ref: '#/components/parameters/Venue'
      - name: id
        in: path
        required: true
        description: >-
          The venue's event id. A twin event's id reads the event it is listed
          with.
        schema:
          $ref: '#/components/schemas/MarketID'
        example: KXNFLGAME-26SEP20KCBUF
    get:
      tags:
        - Events
      summary: List events related by meaning
      description: |
        Open events that mean something close to this one, for "more like
        this". Nearness is the cosine similarity of the embeddings free-text
        search uses, which are built from each event's title, outcomes and
        labels. Unlike relations, nothing here is proven: two related events
        can resolve independently.

        What comes back is filtered to be worth a look:

        - Only listed events that can still be traded: closed events, games
          already under way, and one-winner events whose leading outcome costs
          97¢ or more are left out, as are the event itself, its twin, and the
          same question listed on the other venue without a proven twin.
        - A neighbour is kept when its meaning is very close, or when it is
          reasonably close and shares a labeled name or subject with the event.
        - Instances of one recurring question collapse to the best of them:
          every day of a price range, or every game of the same team, shows
          once. At most one other instance of this event's own series is kept,
          ranked below new questions.
        - Order is by similarity, nudged toward what traded today.

        Each result says why in `reason`. An event not yet labeled has no
        related events. Results are cached for two minutes.
      operationId: listRelatedEvents
      parameters:
        - $ref: '#/components/parameters/RelatedLimit'
        - $ref: '#/components/parameters/RelatedCrossVenue'
      responses:
        '200':
          $ref: '#/components/responses/RelatedEvents'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/Unavailable'
        default:
          $ref: '#/components/responses/Error'
components:
  parameters:
    Venue:
      name: venue
      in: path
      required: true
      description: The venue the market is listed on.
      schema:
        $ref: '#/components/schemas/Venue'
      example: kalshi
    RelatedLimit:
      name: limit
      in: query
      description: Related events to return.
      schema:
        type: integer
        minimum: 1
        maximum: 24
        default: 6
    RelatedCrossVenue:
      name: cross_venue
      in: query
      description: Only related events listed on both venues.
      schema:
        type: boolean
        default: false
  schemas:
    MarketID:
      type: string
      pattern: ^[A-Za-z0-9][A-Za-z0-9_.-]{0,199}$
    Venue:
      type: string
      enum:
        - kalshi
        - polymarket
    RelatedEvent:
      type: object
      additionalProperties: false
      required:
        - similarity
        - reason
        - event
      properties:
        similarity:
          type: number
          minimum: 0
          maximum: 1
          description: >-
            Cosine similarity of the two events' embeddings. Above about 0.8 the
            events are about the same thing.
        reason:
          type: object
          additionalProperties: false
          required:
            - kind
            - text
          description: Why the event is related, from the labels both share.
          properties:
            kind:
              type: string
              enum:
                - team
                - entity
                - topic
                - series
                - meaning
              description: >
                `team`: two games with a team in common. `entity`: about the
                same

                person, organization, place or asset. `topic`: in the same
                narrow

                subject. `series`: another instance of the same recurring
                question,

                such as a different day. `meaning`: no label in common, but very

                close in meaning.
            label:
              type: string
              description: >-
                The shared name or subject, lowercase as labeled. Absent for
                `series` and `meaning`.
            text:
              type: string
              description: >-
                The reason in a few words, ready to show, such as `Same team:
                Kansas City Chiefs`.
        event:
          $ref: '#/components/schemas/Event'
    GraphRunID:
      type: integer
      description: The graph run the response was read from.
      minimum: 1
    Error:
      type: object
      additionalProperties: false
      required:
        - error
      properties:
        error:
          type: object
          additionalProperties: false
          required:
            - code
            - message
          properties:
            code:
              type: string
              description: A stable machine-readable code.
            message:
              type: string
              description: A human-readable explanation.
    Event:
      type: object
      additionalProperties: false
      required:
        - venue
        - id
        - title
        - category
        - venues
        - markets
        - mutually_exclusive
        - volume_24h_usd
        - trades_24h
        - outcomes
      properties:
        venue:
          $ref: '#/components/schemas/Venue'
        id:
          $ref: '#/components/schemas/MarketID'
        title:
          type: string
        image_url:
          type: string
          format: uri
          description: The venue's artwork for the event, on the venue's own image host.
        category:
          $ref: '#/components/schemas/CategoryName'
        venues:
          type: array
          items:
            $ref: '#/components/schemas/Venue'
        twin:
          type: object
          description: The same event on the other venue.
          additionalProperties: false
          required:
            - venue
            - id
          properties:
            venue:
              $ref: '#/components/schemas/Venue'
            id:
              $ref: '#/components/schemas/MarketID'
        markets:
          type: integer
        mutually_exclusive:
          type: boolean
          description: At most one outcome can happen.
        starts_at:
          $ref: '#/components/schemas/Timestamp'
        closes_at:
          $ref: '#/components/schemas/Timestamp'
        volume_24h_usd:
          $ref: '#/components/schemas/Decimal'
          description: >-
            Traded in the last 24 hours on every venue listing the event, as the
            venues report it.
        trades_24h:
          type: integer
          description: Fills recorded across the event in the last 24 hours.
        outcomes:
          type: array
          items:
            $ref: '#/components/schemas/Outcome'
        summary:
          type: string
          description: One line on what decides the event, from labeling.
        topics:
          type: array
          items:
            type: string
          description: Names the event is about; each opens a topic page.
    CategoryName:
      type: string
      enum:
        - Sports
        - Politics
        - Economics
        - Crypto
        - Culture
        - Tech & Science
        - Weather
        - World
        - Other
    Timestamp:
      type: string
      format: date-time
    Decimal:
      type: string
      description: An exact decimal number.
      pattern: ^-?[0-9]+(\.[0-9]+)?$
      example: '0.4100'
    Outcome:
      type: object
      additionalProperties: false
      required:
        - label
        - venue
        - market_id
        - title
        - prices
        - volume_24h_usd
        - trades_24h
        - liquidity
      properties:
        volume_24h_usd:
          $ref: '#/components/schemas/Decimal'
          description: >
            Traded in the last 24 hours, in USD. The venue's own figure where it

            publishes one (Kalshi counts contracts at their $1 face value, as
            its own

            site does; Polymarket reports USDC notional), otherwise the notional
            of

            the fills this platform recorded. `volume_source` says which.
        volume_source:
          type: string
          enum:
            - venue
            - trades
          description: Where `volume_24h_usd` comes from.
        total_volume_usd:
          $ref: '#/components/schemas/Decimal'
          description: Traded over the market's life, where the venue reports it.
        open_interest_usd:
          $ref: '#/components/schemas/Decimal'
          description: Contracts currently held, at face value. Kalshi only.
        spread_usd:
          $ref: '#/components/schemas/Decimal'
          description: >-
            The round trip: the Yes ask plus the No ask less the $1 a winning
            contract pays. Absent when a side has no ask.
        yes_spread_usd:
          $ref: '#/components/schemas/Decimal'
          description: The Yes ask less the Yes bid, where the venue publishes a bid.
        no_spread_usd:
          $ref: '#/components/schemas/Decimal'
          description: The No ask less the No bid.
        trades_24h:
          type: integer
          description: Fills recorded in the last 24 hours.
        liquidity:
          $ref: '#/components/schemas/LiquidityGrade'
        book_spread_usd:
          $ref: '#/components/schemas/Decimal'
          description: >-
            From the recorded order book: the best Yes ask less the best Yes
            bid. Present for markets whose book is recorded.
        book_yes_depth_5c_usd:
          $ref: '#/components/schemas/Decimal'
          description: >-
            USD resting to buy Yes within 5 cents of the best Yes bid, from the
            recorded book.
        book_no_depth_5c_usd:
          $ref: '#/components/schemas/Decimal'
          description: >-
            USD resting to buy No within 5 cents of the best No bid (that is, to
            sell Yes), from the recorded book.
        book_imbalance:
          $ref: '#/components/schemas/Decimal'
          description: >-
            (Yes depth − No depth) / (Yes depth + No depth) over the 5-cent
            windows, from −1 to 1.
        book_at:
          $ref: '#/components/schemas/Timestamp'
          description: When the recorded book last changed.
        label:
          type: string
          description: The outcome in a few words, such as `Chiefs` or `25 bps cut`.
        venue:
          $ref: '#/components/schemas/Venue'
        market_id:
          $ref: '#/components/schemas/MarketID'
        title:
          type: string
          description: The full market question.
        chance:
          $ref: '#/components/schemas/Decimal'
          description: >-
            Implied chance from 0 to 1, the midpoint of the best Yes ask and 1
            minus the best No ask across venues.
        prices:
          type: array
          description: Current asks on every venue with a proven-equivalent market.
          items:
            $ref: '#/components/schemas/VenuePrice'
        best_venue:
          $ref: '#/components/schemas/Venue'
          description: >-
            The venue with the lowest Yes ask, when more than one lists the
            outcome.
        change_24h:
          $ref: '#/components/schemas/Decimal'
          description: Change in the listed market's Yes ask over 24 hours.
        sparkline:
          type: array
          description: Hourly Yes asks over the last 24 hours, oldest first.
          items:
            $ref: '#/components/schemas/Decimal'
    LiquidityGrade:
      type: string
      description: |
        How tradeable a market is. `deep`: at least $25,000 traded in 24 hours
        or $250,000 of open interest, with a round trip of 2¢ or less.
        `tradeable`: at least $1,000 traded or $25,000 of open interest, with a
        round trip of 5¢ or less. `thin`: anything less, or no quoted round
        trip. Lists of suggestions leave thin markets out unless asked.
      enum:
        - deep
        - tradeable
        - thin
    VenuePrice:
      type: object
      additionalProperties: false
      required:
        - venue
        - market_id
        - volume_24h_usd
        - trades_24h
        - liquidity
      properties:
        volume_24h_usd:
          $ref: '#/components/schemas/Decimal'
          description: >
            Traded in the last 24 hours, in USD. The venue's own figure where it

            publishes one (Kalshi counts contracts at their $1 face value, as
            its own

            site does; Polymarket reports USDC notional), otherwise the notional
            of

            the fills this platform recorded. `volume_source` says which.
        volume_source:
          type: string
          enum:
            - venue
            - trades
          description: Where `volume_24h_usd` comes from.
        total_volume_usd:
          $ref: '#/components/schemas/Decimal'
          description: Traded over the market's life, where the venue reports it.
        open_interest_usd:
          $ref: '#/components/schemas/Decimal'
          description: Contracts currently held, at face value. Kalshi only.
        spread_usd:
          $ref: '#/components/schemas/Decimal'
          description: >-
            The round trip: the Yes ask plus the No ask less the $1 a winning
            contract pays. Absent when a side has no ask.
        yes_spread_usd:
          $ref: '#/components/schemas/Decimal'
          description: The Yes ask less the Yes bid, where the venue publishes a bid.
        no_spread_usd:
          $ref: '#/components/schemas/Decimal'
          description: The No ask less the No bid.
        trades_24h:
          type: integer
          description: Fills recorded in the last 24 hours.
        liquidity:
          $ref: '#/components/schemas/LiquidityGrade'
        book_spread_usd:
          $ref: '#/components/schemas/Decimal'
          description: >-
            From the recorded order book: the best Yes ask less the best Yes
            bid. Present for markets whose book is recorded.
        book_yes_depth_5c_usd:
          $ref: '#/components/schemas/Decimal'
          description: >-
            USD resting to buy Yes within 5 cents of the best Yes bid, from the
            recorded book.
        book_no_depth_5c_usd:
          $ref: '#/components/schemas/Decimal'
          description: >-
            USD resting to buy No within 5 cents of the best No bid (that is, to
            sell Yes), from the recorded book.
        book_imbalance:
          $ref: '#/components/schemas/Decimal'
          description: >-
            (Yes depth − No depth) / (Yes depth + No depth) over the 5-cent
            windows, from −1 to 1.
        book_at:
          $ref: '#/components/schemas/Timestamp'
          description: When the recorded book last changed.
        venue:
          $ref: '#/components/schemas/Venue'
        market_id:
          $ref: '#/components/schemas/MarketID'
        yes_ask_usd:
          $ref: '#/components/schemas/Decimal'
        no_ask_usd:
          $ref: '#/components/schemas/Decimal'
        yes_bid_usd:
          $ref: '#/components/schemas/Decimal'
        no_bid_usd:
          $ref: '#/components/schemas/Decimal'
        observed_at:
          $ref: '#/components/schemas/Timestamp'
  responses:
    RelatedEvents:
      description: >-
        Related events, most worth a look first. Empty when nothing is close
        enough.
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
        X-Daily-Quota-Limit:
          $ref: '#/components/headers/X-Daily-Quota-Limit'
        X-Daily-Quota-Remaining:
          $ref: '#/components/headers/X-Daily-Quota-Remaining'
      content:
        application/json:
          schema:
            type: object
            additionalProperties: false
            required:
              - data
              - graph_run
            properties:
              data:
                type: array
                items:
                  $ref: '#/components/schemas/RelatedEvent'
              graph_run:
                $ref: '#/components/schemas/GraphRunID'
          example:
            graph_run: 4812
            data:
              - similarity: 0.9123
                reason:
                  kind: team
                  label: kansas city chiefs
                  text: 'Same team: Kansas City Chiefs'
                event:
                  venue: kalshi
                  id: KXNFLGAME-26SEP27KCLV
                  title: Kansas City at Las Vegas
                  category: Sports
                  venues:
                    - kalshi
                    - polymarket
                  twin:
                    venue: polymarket
                    id: nfl-kc-lv-2026-09-27
                  markets: 2
                  mutually_exclusive: true
                  starts_at: '2026-09-27T20:05:00Z'
                  volume_24h_usd: '184220.50'
                  trades_24h: 1222
                  outcomes:
                    - label: Kansas City
                      venue: kalshi
                      market_id: KXNFLGAME-26SEP27KCLV-KC
                      title: Kansas City at Las Vegas winner?
                      chance: '0.6850'
                      prices:
                        - venue: kalshi
                          market_id: KXNFLGAME-26SEP27KCLV-KC
                          yes_ask_usd: '0.69'
                          no_ask_usd: '0.32'
                          volume_24h_usd: '74200.00'
                          spread_usd: '0.01'
                          trades_24h: 812
                          liquidity: deep
                        - venue: polymarket
                          market_id: nfl-kc-lv-2026-09-27-kc
                          yes_ask_usd: '0.68'
                          no_ask_usd: '0.33'
                          volume_24h_usd: '46200.00'
                          spread_usd: '0.01'
                          trades_24h: 410
                          liquidity: deep
                      best_venue: polymarket
                      volume_24h_usd: '120400.00'
                      volume_source: venue
                      spread_usd: '0.01'
                      trades_24h: 1222
                      liquidity: deep
              - similarity: 0.8411
                reason:
                  kind: entity
                  label: kansas city chiefs
                  text: Also about Kansas City Chiefs
                event:
                  venue: kalshi
                  id: KXSB-27
                  title: Super Bowl champion
                  category: Sports
                  venues:
                    - kalshi
                  markets: 32
                  mutually_exclusive: true
                  closes_at: '2027-02-14T23:30:00Z'
                  volume_24h_usd: '96310.00'
                  trades_24h: 96
                  outcomes:
                    - label: Kansas City
                      venue: kalshi
                      market_id: KXSB-27-KC
                      title: Will Kansas City win the Super Bowl?
                      chance: '0.1450'
                      prices:
                        - venue: kalshi
                          market_id: KXSB-27-KC
                          yes_ask_usd: '0.15'
                          no_ask_usd: '0.86'
                          volume_24h_usd: '12050.00'
                          spread_usd: '0.01'
                          trades_24h: 96
                          liquidity: tradeable
                      volume_24h_usd: '12050.00'
                      volume_source: venue
                      spread_usd: '0.01'
                      trades_24h: 96
                      liquidity: tradeable
    BadRequest:
      description: Invalid parameter or market.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: invalid_parameter
              message: 'Invalid or unsupported query parameter: limit.'
    Unauthorized:
      description: Missing, invalid or revoked API key.
      headers:
        WWW-Authenticate:
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: api_key_required
              message: Send an API key in the X-API-Key header or as a Bearer token.
    NotFound:
      description: The market is not in the latest graph.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    TooManyRequests:
      description: Rate limit or daily quota exceeded.
      headers:
        Retry-After:
          description: Seconds until the limit resets.
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unavailable:
      description: No graph run has finished yet.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Error:
      description: Any other error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  headers:
    X-RateLimit-Limit:
      description: Requests allowed per minute for this key.
      schema:
        type: integer
    X-RateLimit-Remaining:
      description: Requests left in the current minute.
      schema:
        type: integer
    X-RateLimit-Reset:
      description: Unix time when the minute window resets.
      schema:
        type: integer
    X-Daily-Quota-Limit:
      description: Requests allowed per UTC day.
      schema:
        type: integer
    X-Daily-Quota-Remaining:
      description: Requests left today.
      schema:
        type: integer
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: X-API-Key
    bearer:
      type: http
      scheme: bearer
      description: The same API key sent as a Bearer token.

````