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

# Get market

> Get one market with its YES and NO sides, product details, current round and 24-hour stats.

No API key required.



## OpenAPI

````yaml /hyperliquid/openapi.json get /v1/markets/{outcome_id}
openapi: 3.1.1
info:
  title: Totalis Hyperliquid API
  description: >-
    REST API for Totalis singles and parlays on Hyperliquid HIP-4 outcome
    markets, for client integrations and external market makers.


    Authenticate with a scoped API key created in the Totalis app, sent as
    `Authorization: Bearer <key>`. Public market reads need no key.
    Balance-affecting commands also carry the wallet or maker signature the
    HyperEVM contract verifies.


    Amounts are base-10 strings in native USDC atomic units, large identifiers
    are decimal strings, and every command `POST` requires an `Idempotency-Key`
    header.


    Every error is `{error: {code, message, retry, request_id,
    field_violations}}`. `code` is stable; each operation lists the codes it
    returns per status. `retry` is `NEVER` (stop), `BACKOFF` (resend the same
    request with the same `Idempotency-Key` after `Retry-After` seconds) or
    `REFRESH` (re-read state, then send a new request with a new key).
    `field_violations` names invalid inputs by JSON pointer, such as
    `/legs/0/side`.
  version: 127.0.0-pure-reads
servers:
  - url: https://hip4-api.totalis.trade
    description: Production public edge
  - url: https://hip4-api-staging.totalis.trade
    description: Staging and chain-998 public edge
security: []
tags:
  - name: Markets
    description: HIP-4 markets, their sides and price history. No API key needed.
  - name: RFQs & Quotes
    description: >-
      RFQs and the quotes that answer them: what a taker calls, then what a
      maker calls.
  - name: Positions
    description: Positions the account holds, or its maker backs.
  - name: Account
    description: >-
      The account a key acts for: identity, balances, activity, operations and
      withdrawals.
  - name: Makers
    description: 'The rest of a maker''s setup after Making: capital and collateral.'
  - name: Deployment
    description: The contract deployment every signature is made against.
  - name: WebSocket
    description: The authenticated WebSocket for account and maker updates.
paths:
  /v1/markets/{outcome_id}:
    parameters:
      - $ref: '#/components/parameters/OutcomeId'
    get:
      tags:
        - Markets
      summary: Get market
      description: >-
        Get one market with its YES and NO sides, product details, current round
        and 24-hour stats.


        No API key required.
      operationId: getMarket
      responses:
        '200':
          description: >-
            The market with its YES and NO sides, product details, current round
            and 24-hour stats.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MarketDetail'
              example:
                catalog_generation: '6100'
                market:
                  outcome_id: '1209'
                  native_question_id: null
                  title: HYPE touches 100 by 20261001-0000
                  state: ACTIVE
                  result:
                    availability: AVAILABLE
                    result_state: UNRESOLVED
                  metadata_revision: '6100'
                  eligibility:
                    state: ENABLED
                  category: Crypto
                  subcategory: other
                  sides:
                    - side: 'YES'
                      coin: '#12090'
                      reference:
                        availability: AVAILABLE
                        quality: BOOK_MID
                        value: '240800000000000000'
                        best_bid: '238600000000000000'
                        best_ask: '243000000000000000'
                        scale: '1000000000000000000'
                        freshness: FRESH
                        received_at: '2026-09-26T19:59:25.086007173Z'
                    - side: 'NO'
                      coin: '#12091'
                      reference:
                        availability: AVAILABLE
                        quality: BOOK_MID
                        value: '759200000000000000'
                        best_bid: '757000000000000000'
                        best_ask: '761400000000000000'
                        scale: '1000000000000000000'
                        freshness: FRESH
                        received_at: '2026-09-26T19:59:25.086007173Z'
                  dates:
                    event: null
                    result_by: null
                    resolves_after: null
                    scheduled_event_at: null
                    observation_ends_at: '1790812800'
                    market_class: PRICE_TOUCH
                question: null
                series_id: f373fade6a46dc0e
                metadata:
                  content:
                    title: HYPE touches 100 by 20261001-0000
                    rules: >-
                      The market resolves to Yes if the HYPE price touches 100
                      at or before 20261001-0000, and otherwise resolves to No.
                      The price counts as touched once the 1-second TWAP of
                      HYPE-USDC perp mark  price equals or crosses 100 at any
                      time after this market is deployed and at or before
                      20261001-0000; the market can settle as soon as a touch
                      occurs. If HYPE is delisted before this market settles,
                      the HYPE settlement price at delisting counts as the final
                      price for the touch determination, and the market can
                      settle at delisting if the price has not touched 100 by
                      then.
                      metadata=category:price|subCategory:N/A|semanticRestriction:This
                      market must refer to the price of a Hyperliquid perp.
                  parent: null
                  sides:
                    - side: 'YES'
                      label: 'Yes'
                    - side: 'NO'
                      label: 'No'
                recurring_round: null
                stats:
                  volume_24h: '18240500000'
                  open_interest: '52000000000'
                updated_at: '2026-09-26T19:59:25.086007173Z'
        '400':
          description: >-
            - `INVALID_REQUEST` (retry `NEVER`): The body, a path parameter or a
            header is malformed or fails validation. `field_violations` names
            invalid body fields.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/Error'
        '404':
          description: >-
            - `NOT_FOUND` (retry `NEVER`): The resource does not exist or is not
            visible to this credential.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/Error'
        '503':
          description: >-
            - `MARKET_DATA_UNAVAILABLE` (retry `BACKOFF`): No complete market
            catalog is available.
          headers:
            Retry-After:
              $ref: '#/components/headers/RetryAfter'
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/Error'
      security:
        - {}
components:
  parameters:
    OutcomeId:
      name: outcome_id
      in: path
      required: true
      schema:
        $ref: '#/components/schemas/UInt32String'
      description: HIP-4 outcome ID of the market, as a decimal string.
      example: '1209'
  schemas:
    MarketDetail:
      type: object
      additionalProperties: false
      required:
        - catalog_generation
        - market
        - question
        - series_id
        - metadata
        - recurring_round
        - stats
        - updated_at
      properties:
        catalog_generation:
          $ref: '#/components/schemas/PositiveInt64'
          description: Catalog generation the market, question and metadata were read from.
        market:
          $ref: '#/components/schemas/Market'
          description: The market with its current references, eligibility and result.
        question:
          oneOf:
            - $ref: '#/components/schemas/Question'
            - type: 'null'
          description: >-
            Parent question with all of its markets; null for a standalone
            market.
        series_id:
          oneOf:
            - $ref: '#/components/schemas/SeriesId'
            - type: 'null'
          description: >-
            Key of the price series this standalone binaryPrice or priceTouch
            market belongs to, the series_id of the series read; set even while
            it is the only listed member. Null for every other market.
        metadata:
          $ref: '#/components/schemas/ProductMetadata'
          description: >-
            Display title and rules of the market, its sides and its parent
            question, read at the same catalog generation as market.
        recurring_round:
          oneOf:
            - $ref: '#/components/schemas/RecurringRoundContext'
            - type: 'null'
          description: >-
            The recurring round the market belongs to, with its recorded
            neighbours; null for a market outside a recurring series or a round
            whose recorded definition is withheld.
        stats:
          oneOf:
            - $ref: '#/components/schemas/MarketDetailStats'
            - type: 'null'
          description: >-
            This market's 24h volume and open interest; null until a current
            stats snapshot has a row for it.
        updated_at:
          $ref: '#/components/schemas/CommonTimestamp'
          description: >-
            Latest change to the market's catalog record, native result or
            reference prices, RFC 3339 UTC.
    Error:
      additionalProperties: false
      properties:
        error:
          $ref: '#/components/schemas/ErrorDetail'
          description: The one error this request failed with.
      required:
        - error
      type: object
    UInt32String:
      type: string
      pattern: >-
        ^(0|[1-9][0-9]{0,8}|[1-3][0-9]{9}|4[01][0-9]{8}|42[0-8][0-9]{7}|429[0-3][0-9]{6}|4294[0-8][0-9]{5}|42949[0-5][0-9]{4}|429496[0-6][0-9]{3}|4294967[0-1][0-9]{2}|42949672[0-8][0-9]|429496729[0-5])$
      maxLength: 10
    PositiveInt64:
      type: string
      pattern: ^[1-9][0-9]*$
      maxLength: 19
      format: positive-int64-decimal
      description: Positive generation or version bounded by signed int64 storage.
    Market:
      type: object
      additionalProperties: false
      required:
        - outcome_id
        - native_question_id
        - title
        - state
        - result
        - metadata_revision
        - eligibility
        - category
        - subcategory
        - sides
        - dates
      properties:
        outcome_id:
          $ref: '#/components/schemas/UInt32String'
          description: Hyperliquid outcome ID of the market.
        native_question_id:
          oneOf:
            - $ref: '#/components/schemas/RealQuestionId'
            - type: 'null'
          description: >-
            Hyperliquid question this market belongs to; null for a standalone
            market.
        title:
          type: string
          minLength: 1
          maxLength: 512
          description: Display title derived from the market definition.
        state:
          $ref: '#/components/schemas/MarketState'
          description: >-
            Native lifecycle: ACTIVE while the market is live on Hyperliquid,
            CLOSED once it is no longer live, UNSUPPORTED when Totalis does not
            support it.
        result:
          $ref: '#/components/schemas/Result'
          description: Native result as last read from HyperEVM.
        metadata_revision:
          $ref: '#/components/schemas/PositiveInt64'
          description: >-
            Revision of this market's catalog metadata; it increases when the
            metadata changes.
        eligibility:
          $ref: '#/components/schemas/Eligibility'
          description: >-
            Whether Totalis currently accepts new positions on this market, with
            the reason when it does not.
        category:
          $ref: '#/components/schemas/Category'
          description: Display category, or null when the market is not mapped to one.
        subcategory:
          $ref: '#/components/schemas/Subcategory'
          description: >-
            Display subcategory slug within the category, for example btc; null
            when unmapped or not subdivided.
        sides:
          type: array
          minItems: 2
          maxItems: 2
          items:
            $ref: '#/components/schemas/MarketSide'
          description: The YES and NO sides, in that order.
        dates:
          oneOf:
            - $ref: '#/components/schemas/MarketDates'
            - type: 'null'
          description: >-
            Display dates and the market class; null when the market has neither
            reviewed timing nor a market class. Never controls availability or
            settlement.
    Question:
      type: object
      additionalProperties: false
      required:
        - native_question_id
        - catalog_generation
        - title
        - outcome_ids
        - state
        - category
        - subcategory
        - markets
        - relationships
      properties:
        native_question_id:
          $ref: '#/components/schemas/RealQuestionId'
          description: Hyperliquid question ID.
        catalog_generation:
          $ref: '#/components/schemas/PositiveInt64'
          description: Catalog generation the question and its markets were read from.
        title:
          type: string
          minLength: 1
          maxLength: 512
          description: Display title derived from the question definition.
        outcome_ids:
          type: array
          maxItems: 256
          uniqueItems: true
          items:
            $ref: '#/components/schemas/UInt32String'
          description: Outcome IDs of the question's markets in the current catalog.
        state:
          $ref: '#/components/schemas/MarketState'
          description: >-
            ACTIVE when any market is active, CLOSED when none is active and at
            least one is closed, UNSUPPORTED otherwise.
        category:
          $ref: '#/components/schemas/Category'
          description: Display category, or null when the question is not mapped to one.
        subcategory:
          $ref: '#/components/schemas/Subcategory'
          description: >-
            Display subcategory slug within the category; null when unmapped or
            not subdivided.
        markets:
          type: array
          maxItems: 256
          items:
            $ref: '#/components/schemas/Market'
          description: >-
            The question's markets in the current catalog. In a market detail,
            the requested market is given once as market and is not repeated
            here.
        relationships:
          type: array
          maxItems: 256
          items:
            $ref: '#/components/schemas/QuestionRelationship'
          description: >-
            Relationships between the question's markets; empty when it has none
            in the catalog.
    SeriesId:
      type: string
      pattern: ^[0-9a-f]{16}$
      description: >-
        Price series key: the first 16 lowercase hex characters of the SHA-256
        of v1|network|template|underlying|expiry, where network is mainnet or
        testnet, template is binaryPrice or priceTouch, underlying is the perp
        name and expiry is decimal Unix seconds. Thresholds and membership are
        not part of the key.
    ProductMetadata:
      type: object
      additionalProperties: false
      required:
        - content
        - parent
        - sides
      properties:
        content:
          $ref: '#/components/schemas/Content'
          description: Rendered title and rules of the market itself.
        parent:
          oneOf:
            - $ref: '#/components/schemas/Parent'
            - type: 'null'
          description: >-
            Parent question details for a NAMED or FALLBACK market; null for a
            standalone market.
        sides:
          type: array
          minItems: 2
          maxItems: 2
          items:
            $ref: '#/components/schemas/SideLabel'
          description: Display labels of the YES and NO sides, in that order.
    RecurringRoundContext:
      type: object
      additionalProperties: false
      required:
        - series
        - current
        - previous
        - previous_state
        - next
        - next_state
      properties:
        series:
          $ref: '#/components/schemas/RecurringSeries'
          description: Recurring series the round belongs to.
        current:
          $ref: '#/components/schemas/RecurringRound'
          description: The round that contains the requested market or question.
        previous:
          oneOf:
            - $ref: '#/components/schemas/RecurringRound'
            - type: 'null'
          description: >-
            Nearest earlier recorded round of the same series; null unless
            previous_state is AVAILABLE.
        previous_state:
          type: string
          enum:
            - AVAILABLE
            - BEFORE_RECORDED_HISTORY
            - CONFLICTED
          description: >-
            BEFORE_RECORDED_HISTORY means Totalis never observed an earlier
            round; it never claims that none existed. CONFLICTED means the
            nearest earlier round was observed but its recorded definition is
            withheld.
        next:
          oneOf:
            - $ref: '#/components/schemas/RecurringRound'
            - type: 'null'
          description: >-
            Nearest later recorded round of the same series; null unless
            next_state is AVAILABLE.
        next_state:
          type: string
          enum:
            - AVAILABLE
            - NONE_RECORDED
            - CONFLICTED
          description: >-
            NONE_RECORDED means Totalis has not observed a later round; it never
            claims none was published. CONFLICTED means the nearest later round
            was observed but its recorded definition is withheld.
    MarketDetailStats:
      type: object
      additionalProperties: false
      required:
        - volume_24h
        - open_interest
      properties:
        volume_24h:
          $ref: '#/components/schemas/UInt64String'
          description: Side 0 24h notional volume in atomic USDC (6 decimals).
        open_interest:
          $ref: '#/components/schemas/UInt64String'
          description: >-
            Mean circulating supply of the two sides, in atomic USDC (6
            decimals).
      description: >-
        This market's row of the stats snapshot, refreshed about every minute
        from Hyperliquid asset contexts. Display data only; it never gates
        trading.
    CommonTimestamp:
      type: string
      format: date-time
      pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}([.][0-9]{1,9})?Z$
      maxLength: 30
    ErrorDetail:
      additionalProperties: false
      properties:
        code:
          $ref: '#/components/schemas/ErrorCode'
          description: Stable registered code; branch on this, not on message or status.
        field_violations:
          description: >-
            Each invalid input by JSON pointer; empty when the error is not
            about a specific input.
          items:
            $ref: '#/components/schemas/FieldViolation'
          type: array
        message:
          description: Human-readable; may change without notice.
          minLength: 1
          type: string
        request_id:
          description: >-
            UUIDv7 of this request, also returned in the X-Request-ID header.
            Quote it when reporting a problem.
          format: uuid
          pattern: >-
            ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
          type: string
        retry:
          $ref: '#/components/schemas/Retry'
          description: What the caller should do next; fixed by the registry for each code.
      required:
        - code
        - message
        - retry
        - request_id
        - field_violations
      type: object
    RealQuestionId:
      allOf:
        - $ref: '#/components/schemas/UInt32String'
      description: >-
        A real native question identifier; the standalone NO_QUESTION sentinel
        is excluded. Never `4294967295`.
    MarketState:
      type: string
      enum:
        - ACTIVE
        - CLOSED
        - UNSUPPORTED
    Result:
      oneOf:
        - $ref: '#/components/schemas/ResultUnresolved'
        - $ref: '#/components/schemas/ResultNumeric'
        - $ref: '#/components/schemas/ResultNonnumeric'
        - $ref: '#/components/schemas/ResultUnavailable'
    Eligibility:
      oneOf:
        - $ref: '#/components/schemas/EligibilityEnabled'
        - $ref: '#/components/schemas/EligibilityDisabled'
    Category:
      oneOf:
        - type: string
          enum:
            - Crypto
            - Economics
            - Entertainment
            - Finance
            - Politics
            - Sports
            - Tech
            - Weather
        - type: 'null'
    Subcategory:
      oneOf:
        - type: string
          pattern: ^[a-z0-9]+(?:_[a-z0-9]+)*$
          maxLength: 50
        - type: 'null'
    MarketSide:
      type: object
      additionalProperties: false
      required:
        - side
        - coin
        - reference
      properties:
        side:
          $ref: '#/components/schemas/Side'
          description: Which side of the binary market this entry describes, YES or NO.
        coin:
          type: string
          pattern: ^#[0-9]+$
          maxLength: 12
          description: >-
            Hyperliquid coin name of this side, # followed by outcome_id times
            10 plus the side index (0 for YES, 1 for NO).
        reference:
          $ref: '#/components/schemas/Reference'
          description: Current reference price of this side, or why none is available.
    MarketDates:
      type: object
      additionalProperties: false
      required:
        - event
        - result_by
        - resolves_after
        - scheduled_event_at
        - observation_ends_at
        - market_class
      description: >-
        Display-only UTC instants from typed Hyperliquid template keywords, and
        the reviewed market class. event, result_by and resolves_after are null
        when already interpolated into the title; scheduled_event_at and
        observation_ends_at are always given when known.
      properties:
        event:
          oneOf:
            - $ref: '#/components/schemas/DateEvent'
            - type: 'null'
          description: >-
            The scheduled event the market is about; null when unknown or
            already in the title.
        result_by:
          oneOf:
            - $ref: '#/components/schemas/PositiveInt64'
            - type: 'null'
          description: >-
            Latest instant at which the source rules fix the result, in Unix
            seconds; null when unknown or already in the title.
        resolves_after:
          oneOf:
            - $ref: '#/components/schemas/PositiveInt64'
            - type: 'null'
          description: >-
            Resolution cannot occur before this instant, in Unix seconds; not a
            settlement promise. Null when unknown or already in the title.
        scheduled_event_at:
          oneOf:
            - $ref: '#/components/schemas/PositiveInt64'
            - type: 'null'
          description: >-
            Scheduled start or decision named by the source rules, in Unix
            seconds; null when the market has none.
        observation_ends_at:
          oneOf:
            - $ref: '#/components/schemas/PositiveInt64'
            - type: 'null'
          description: >-
            End of the observation window named by the source rules, in Unix
            seconds; null when the market has none.
        market_class:
          oneOf:
            - type: string
              minLength: 1
              maxLength: 64
            - type: 'null'
          description: >-
            Reviewed market class, for example PRICE_BINARY, PRICE_TOUCH or
            SPORTS_TOURNAMENT; null when no reviewed rule classifies the market.
    QuestionRelationship:
      type: object
      additionalProperties: false
      required:
        - kind
        - outcome_ids
      properties:
        kind:
          type: string
          enum:
            - SAME_QUESTION
            - MUTUALLY_EXCLUSIVE
            - THRESHOLD_LADDER
            - DUPLICATE_CANDIDATE
          description: >-
            How the listed markets relate. SAME_QUESTION means they are all
            outcomes of this native question; the other kinds are reserved.
        outcome_ids:
          type: array
          minItems: 1
          maxItems: 256
          uniqueItems: true
          items:
            $ref: '#/components/schemas/UInt32String'
          description: Outcome IDs covered by the relationship.
    Content:
      type: object
      additionalProperties: false
      required:
        - title
        - rules
      properties:
        title:
          oneOf:
            - type: string
              maxLength: 512
            - type: 'null'
          description: >-
            Rendered display title; null when the template is unknown or the
            description does not fit it.
        rules:
          oneOf:
            - type: string
              maxLength: 65536
            - type: 'null'
          description: >-
            Rendered resolution rules; the native description for a free-form
            market, null when the template is unknown or the description does
            not fit it.
    Parent:
      type: object
      additionalProperties: false
      required:
        - content
      properties:
        content:
          $ref: '#/components/schemas/Content'
          description: Rendered title and rules of the parent question.
    SideLabel:
      type: object
      additionalProperties: false
      required:
        - side
        - label
      properties:
        side:
          enum:
            - 'YES'
            - 'NO'
          description: Market side the label belongs to, YES or NO.
        label:
          oneOf:
            - type: string
              maxLength: 512
            - type: 'null'
          description: >-
            Display label for the side; null when a templated name cannot be
            rendered from a qualified template.
    RecurringSeries:
      type: object
      additionalProperties: false
      required:
        - network
        - class
        - underlying
        - period
      properties:
        network:
          type: string
          enum:
            - HYPEREVM_TESTNET
            - HYPEREVM_MAINNET
          description: Hyperliquid network the series runs on.
        class:
          $ref: '#/components/schemas/RecurringClass'
          description: >-
            PRICE_BINARY for a single above-or-below round, PRICE_BUCKET for a
            three-bucket price range question.
        underlying:
          type: string
          pattern: ^([a-z0-9]{2,4}:)?[A-Za-z0-9._-]{1,32}$
          description: >-
            Deployer instrument name, optionally prefixed with a provider
            namespace.
        period:
          type: string
          pattern: ^[1-9][0-9]{0,3}[mhd]$
          description: >-
            Round length as a number followed by m (minutes), h (hours) or d
            (days), for example 1d.
      description: >-
        Hyperliquid guarantees at most one recurring series per network, class,
        underlying and period.
    RecurringRound:
      type: object
      additionalProperties: false
      required:
        - expiry
        - target_price
        - price_thresholds
        - native_question_id
        - markets
        - catalog_state
      properties:
        expiry:
          $ref: '#/components/schemas/PositiveInt64'
          description: >-
            Exact deployer settlement instant in Unix seconds; no safety buffer
            is applied.
        target_price:
          oneOf:
            - $ref: '#/components/schemas/RecurringPrice'
            - type: 'null'
          description: >-
            PRICE_BINARY settles YES when the interpolated mark price is at or
            above this value.
        price_thresholds:
          oneOf:
            - type: array
              minItems: 2
              maxItems: 2
              items:
                $ref: '#/components/schemas/RecurringPrice'
            - type: 'null'
          description: >-
            Ascending PRICE_BUCKET boundaries; the three buckets cover `< P1`,
            `[P1, P2)` and `>= P2`.
        native_question_id:
          oneOf:
            - $ref: '#/components/schemas/RealQuestionId'
            - type: 'null'
          description: >-
            Parent question of a bucket round; null for a standalone binary
            round.
        markets:
          type: array
          minItems: 1
          maxItems: 4
          items:
            $ref: '#/components/schemas/RecurringRoundMarket'
          description: >-
            Markets of the round: one STANDALONE market for a binary round, or
            three NAMED buckets and one FALLBACK for a bucket round.
        catalog_state:
          type: string
          enum:
            - LISTED
            - NOT_LISTED
          description: >-
            NOT_LISTED means the round is durably recorded but absent from the
            current catalog generation, so its market and question routes return
            404.
    UInt64String:
      type: string
      pattern: >-
        ^(0|[1-9][0-9]{0,18}|1[0-7][0-9]{18}|18[0-3][0-9]{17}|184[0-3][0-9]{16}|1844[0-5][0-9]{15}|18446[0-6][0-9]{14}|184467[0-3][0-9]{13}|1844674[0-3][0-9]{12}|184467440[0-6][0-9]{10}|1844674407[0-2][0-9]{9}|18446744073[0-6][0-9]{8}|1844674407370[0-8][0-9]{6}|18446744073709[0-4][0-9]{5}|184467440737095[0-4][0-9]{4}|18446744073709550[0-9]{3}|18446744073709551[0-5][0-9]{2}|1844674407370955160[0-9]|1844674407370955161[0-5])$
      maxLength: 20
      format: uint64-decimal
    ErrorCode:
      description: >-
        Stable HTTP error code. Each code has one HTTP status and one retry
        value.
      enum:
        - INVALID_REQUEST
        - INVALID_QUERY
        - INVALID_CURSOR
        - INVALID_IDEMPOTENCY_KEY
        - ORIGIN_REQUIRED
        - SUBPROTOCOL_REQUIRED
        - UNSUPPORTED_BROWSE_CONTRACT
        - UNAUTHENTICATED
        - FORBIDDEN
        - ORIGIN_NOT_ALLOWED
        - ACCESS_REQUIRED
        - NOT_FOUND
        - IDENTITY_NOT_FOUND
        - QUOTE_NOT_FOUND
        - INVITE_CODE_NOT_FOUND
        - IDEMPOTENCY_KEY_REUSED
        - STATE_CONFLICT
        - INVITE_CODE_EXHAUSTED
        - STALE_CURSOR
        - CURSOR_EXPIRED
        - CURSOR_RESET
        - RECURRING_DEFINITION_CONFLICT
        - EMBEDDED_WALLET_CONFLICT
        - SECRET_UNAVAILABLE
        - ROTATION_IN_PROGRESS
        - TELEMETRY_CONFLICT
        - RFQ_NOT_CANCELLABLE
        - RFQ_NOT_OPEN
        - RFQ_GENERATION_STALE
        - RFQ_GENERATION_IN_FLIGHT
        - QUOTE_EXPIRED
        - QUOTE_CANCELLED
        - QUOTE_REPLACED
        - QUOTE_SIGNER_CHANGED
        - QUOTE_CAPACITY_EXCEEDED
        - CORE_ACCOUNT_NOT_READY
        - CORE_EXIT_ABANDONED
        - CORE_FUNDING_CONFLICT
        - CORE_VAULT_RESERVATION
        - CORE_MOVE_IN_FLIGHT
        - INVALID_SIGNATURE
        - WRONG_AUTHORITY
        - KEY_LIMIT_REACHED
        - HYPERCORE_WALLET_UNQUALIFIED
        - HYPERCORE_ACCOUNT_NOT_MAIN
        - HYPERCORE_INSUFFICIENT_BALANCE
        - RATE_LIMITED
        - CONNECTION_LIMIT
        - RFQ_INTENT_LIMIT
        - QUOTE_EXPOSURE_LIMIT
        - DEPENDENCY_STALE
        - AUTHORIZATION_UNAVAILABLE
        - SOURCE_UNAVAILABLE
        - CONTRACT_UNAVAILABLE
        - MARKET_DATA_UNAVAILABLE
        - BROWSE_UNAVAILABLE
        - FINANCIAL_ACTIONS_DISABLED
        - CORE_FUNDING_UNAVAILABLE
        - CORE_EXIT_UNAVAILABLE
        - SPONSORSHIP_UNAVAILABLE
        - CONTRACT_SIGNATURE_OVERLOADED
        - QUOTE_EXPOSURE_STALE
        - COMBO_AUTOMATIC_DISABLED
        - EMBEDDED_WALLET_UNAVAILABLE
        - CONNECTION_DRAIN
      type: string
    FieldViolation:
      additionalProperties: false
      properties:
        code:
          description: >-
            REQUIRED: the input is missing. INVALID: it is present but malformed
            or out of range. UNEXPECTED: the input is not accepted here.
          enum:
            - REQUIRED
            - INVALID
            - UNEXPECTED
          type: string
        field:
          description: >-
            JSON pointer into the body, or into the query parameters as one flat
            object for requests without a body, for example /legs/0/stake or
            /limit.
          pattern: ^(/([^~/]|~[01])*)+$
          type: string
      required:
        - field
        - code
      type: object
    Retry:
      description: >-
        NEVER: stop. BACKOFF: resend the same request with the same
        Idempotency-Key after Retry-After. REFRESH: re-read state, then send a
        new request with a new Idempotency-Key.
      enum:
        - NEVER
        - BACKOFF
        - REFRESH
      type: string
    ResultUnresolved:
      type: object
      additionalProperties: false
      required:
        - availability
        - result_state
      properties:
        availability:
          type: string
          const: AVAILABLE
          description: 'AVAILABLE: the native result was read successfully.'
        result_state:
          type: string
          const: UNRESOLVED
          description: 'UNRESOLVED: the native market has not recorded a result.'
      title: Unresolved
    ResultNumeric:
      type: object
      additionalProperties: false
      required:
        - availability
        - result_state
        - yes_factor_numerator
        - factor_scale
        - recorded_at_block
        - evidence_digest
      properties:
        availability:
          type: string
          const: AVAILABLE
          description: 'AVAILABLE: the native result was read successfully.'
        result_state:
          type: string
          const: NUMERIC_RECORDED
          description: >-
            NUMERIC_RECORDED: the native market recorded a numeric payout for
            the YES side.
        yes_factor_numerator:
          $ref: '#/components/schemas/FactorNumerator'
          description: >-
            YES payout as a fraction of factor_scale; 100000000 pays YES in
            full, 0 pays NO in full.
        factor_scale:
          type: string
          const: '100000000'
          description: Denominator for yes_factor_numerator; always 100000000.
        recorded_at_block:
          $ref: '#/components/schemas/PositiveInt64'
          description: HyperEVM block number of the native read that observed this result.
        evidence_digest:
          $ref: '#/components/schemas/NonZeroBytes32'
          description: >-
            SHA-256 over the chain, contracts, block number and hash, outcome
            and result of the native read that observed this result.
      title: Numeric result
    ResultNonnumeric:
      type: object
      additionalProperties: false
      required:
        - availability
        - result_state
        - recorded_at_block
        - evidence_digest
      properties:
        availability:
          type: string
          const: AVAILABLE
          description: 'AVAILABLE: the native result was read successfully.'
        result_state:
          type: string
          const: RECOGNIZED_NONNUMERIC_OBSERVED
          description: >-
            RECOGNIZED_NONNUMERIC_OBSERVED: the native market recorded a
            recognized result that carries no numeric payout factor.
        recorded_at_block:
          $ref: '#/components/schemas/PositiveInt64'
          description: HyperEVM block number of the native read that observed this result.
        evidence_digest:
          $ref: '#/components/schemas/NonZeroBytes32'
          description: >-
            SHA-256 over the chain, contracts, block number and hash, outcome
            and result of the native read that observed this result.
      title: Named result
    ResultUnavailable:
      type: object
      additionalProperties: false
      required:
        - availability
        - reason
      properties:
        availability:
          type: string
          const: UNAVAILABLE
          description: 'UNAVAILABLE: the native result could not be read; reason says why.'
        reason:
          type: string
          enum:
            - NOT_QUERIED
            - NATIVE_READ_FAILED
            - RPC_UNAVAILABLE
            - MALFORMED_RETURN
            - PROVIDER_DISAGREEMENT
            - UNSUPPORTED_PROTOCOL_VERSION
          description: >-
            NOT_QUERIED: not read yet; NATIVE_READ_FAILED: the on-chain read
            failed; RPC_UNAVAILABLE: no RPC provider answered; MALFORMED_RETURN:
            the contract returned an unexpected shape; PROVIDER_DISAGREEMENT:
            providers returned different results; UNSUPPORTED_PROTOCOL_VERSION:
            the outcome uses an unsupported protocol version.
      title: Unavailable
    EligibilityEnabled:
      type: object
      additionalProperties: false
      required:
        - state
      properties:
        state:
          type: string
          const: ENABLED
          description: 'ENABLED: Totalis currently accepts new positions on this market.'
      title: Enabled
    EligibilityDisabled:
      type: object
      additionalProperties: false
      required:
        - state
        - reason
      properties:
        state:
          type: string
          const: DISABLED
          description: >-
            DISABLED: Totalis does not currently accept new positions on this
            market; reason says why.
        reason:
          type: string
          enum:
            - UNSUPPORTED_PROTOCOL_VERSION
            - UNSUPPORTED_QUOTE_ASSET
            - IDENTITY_CONFLICT
            - DEADLINE_UNAVAILABLE
            - SOURCE_UNQUALIFIED
            - FINANCIAL_PROFILE_DISABLED
            - MARKET_NOT_ACTIVE
            - NATIVE_STATE_UNAVAILABLE
            - NATIVE_STATE_STALE
            - DEADLINE_BUFFER_ENTERED
            - REFERENCE_UNAVAILABLE
            - REFERENCE_STALE
            - SOURCE_GENERATION_MISMATCH
          description: >-
            Why new positions are refused. UNSUPPORTED_PROTOCOL_VERSION,
            UNSUPPORTED_QUOTE_ASSET and IDENTITY_CONFLICT are permanent support
            failures; MARKET_NOT_ACTIVE means the native market is no longer
            live; NATIVE_STATE_UNAVAILABLE, NATIVE_STATE_STALE,
            REFERENCE_UNAVAILABLE, REFERENCE_STALE and
            SOURCE_GENERATION_MISMATCH are temporary data outages;
            FINANCIAL_PROFILE_DISABLED means trading is switched off in this
            environment; SOURCE_UNQUALIFIED marks cached catalog copies that
            carry no live eligibility.
      title: Disabled
    Side:
      type: string
      enum:
        - 'YES'
        - 'NO'
    Reference:
      oneOf:
        - $ref: '#/components/schemas/ReferenceAvailable'
        - $ref: '#/components/schemas/ReferenceUnavailable'
    DateEvent:
      type: object
      additionalProperties: false
      required:
        - kind
        - at
      properties:
        kind:
          enum:
            - START
            - DECISION
            - DEADLINE
          description: >-
            Scheduled start, scheduled decision, or deadline named by the source
            rules.
        at:
          $ref: '#/components/schemas/PositiveInt64'
          description: When the event happens, in Unix seconds.
    RecurringClass:
      type: string
      enum:
        - PRICE_BINARY
        - PRICE_BUCKET
    RecurringPrice:
      type: string
      pattern: ^(0|[1-9][0-9]{0,19})([.][0-9]{1,18})?$
      maxLength: 40
      description: Exact deployer price text; never reformatted or rounded.
    RecurringRoundMarket:
      type: object
      additionalProperties: false
      required:
        - outcome_id
        - role
        - index
      properties:
        outcome_id:
          $ref: '#/components/schemas/UInt32String'
          description: Hyperliquid outcome ID of the round's market.
        role:
          type: string
          enum:
            - STANDALONE
            - NAMED
            - FALLBACK
          description: >-
            STANDALONE for the single market of a binary round, NAMED for a
            price bucket of a bucket round, FALLBACK for the bucket question's
            fallback outcome.
        index:
          oneOf:
            - type: integer
              minimum: 0
              maximum: 2
            - type: 'null'
          description: >-
            Bucket position the child market states for itself; null unless the
            role is NAMED.
    FactorNumerator:
      type: string
      pattern: ^(0|[1-9][0-9]{0,7}|100000000)$
      maxLength: 9
      description: >-
        Native result numerator in the inclusive range zero through Q =
        100000000.
    NonZeroBytes32:
      allOf:
        - $ref: '#/components/schemas/Bytes32'
      description: >-
        Never
        `0x0000000000000000000000000000000000000000000000000000000000000000`.
    ReferenceAvailable:
      type: object
      additionalProperties: false
      required:
        - availability
        - quality
        - value
        - scale
        - freshness
        - received_at
      properties:
        availability:
          type: string
          const: AVAILABLE
          description: >-
            AVAILABLE: a qualified reference price has been observed for this
            side.
        quality:
          $ref: '#/components/schemas/Quality'
          description: >-
            How the reference price was derived: BOOK_MID from the order book or
            best bid and offer, MARK_PRICE from the mark price,
            ALL_MIDS_FALLBACK from the all-mids fallback, TRADE from executed
            trades.
        value:
          $ref: '#/components/schemas/IntegerValue'
          description: >-
            Reference price of this side as an integer; divide by scale for the
            probability price between 0 and 1.
        best_bid:
          oneOf:
            - $ref: '#/components/schemas/IntegerValue'
            - type: 'null'
          description: Best bid at scale when the feed carries a book, otherwise null.
        best_ask:
          oneOf:
            - $ref: '#/components/schemas/IntegerValue'
            - type: 'null'
          description: Best ask at scale when the feed carries a book, otherwise null.
        scale:
          $ref: '#/components/schemas/Scale'
          description: >-
            Divisor for value, best_bid and best_ask; currently
            1000000000000000000 (18 decimals).
        freshness:
          type: string
          enum:
            - FRESH
            - STALE
          description: FRESH when received within the last 15 seconds, otherwise STALE.
        received_at:
          $ref: '#/components/schemas/CommonTimestamp'
          description: When Totalis received the observation, RFC 3339 UTC.
      title: Available
    ReferenceUnavailable:
      type: object
      additionalProperties: false
      required:
        - availability
        - reason
        - freshness
        - received_at
      properties:
        availability:
          type: string
          const: UNAVAILABLE
          description: >-
            UNAVAILABLE: no qualified reference price exists for this side;
            reason says why.
        reason:
          type: string
          enum:
            - NOT_OBSERVED
            - AMBIGUOUS_SOURCE
            - STALE_GENERATION
            - UNSUPPORTED_MARKET
            - SOURCE_UNQUALIFIED
          description: >-
            NOT_OBSERVED: no price seen yet; AMBIGUOUS_SOURCE: the source gave
            conflicting values; STALE_GENERATION: the last price belongs to an
            older feed generation; UNSUPPORTED_MARKET: the market is not
            supported; SOURCE_UNQUALIFIED: the copy carries no live price, as in
            cached catalog pages.
        freshness:
          type: string
          const: UNKNOWN
          description: Always UNKNOWN while no price is available.
        received_at:
          $ref: '#/components/schemas/CommonTimestamp'
          description: >-
            Last update time of the market record this state was derived from,
            RFC 3339 UTC; 1970-01-01T00:00:00Z in cached catalog copies.
      title: Unavailable
    Bytes32:
      type: string
      pattern: ^0x[0-9a-f]{64}$
    Quality:
      type: string
      enum:
        - BOOK_MID
        - MARK_PRICE
        - ALL_MIDS_FALLBACK
        - TRADE
    IntegerValue:
      type: string
      pattern: ^(0|[1-9][0-9]*)$
      maxLength: 78
      format: uint256-decimal
      description: Nonnegative integer value paired with an explicit positive scale.
    Scale:
      type: string
      pattern: ^[1-9][0-9]*$
      maxLength: 78
      format: uint256-decimal
      description: Positive base-10 scale for an integer value.
  headers:
    RetryAfter:
      description: Seconds to wait before resending the same request
      schema:
        type: integer
        minimum: 1

````

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