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

# outcomeMeta | Hyperliquid info

> The info endpoint with type: "outcomeMeta" retrieves the live HIP-4 outcome markets and any categorical questions on the Hyperliquid exchange.

<Info>
  You can only use this endpoint on the official Hyperliquid public API. It is not available through Chainstack, as the open-source node implementation does not support it yet. See [Hyperliquid methods](/docs/hyperliquid-methods) for the full availability breakdown.
</Info>

The `info` endpoint with `type: "outcomeMeta"` retrieves the live HIP-4 outcome markets and any categorical questions on the Hyperliquid exchange. Outcome markets are fully collateralized binary contracts that settle within a fixed range — the primitive that powers prediction markets and bounded options-like instruments on Hyperliquid.

## Parameters

* `type` (string, required) — Must be `"outcomeMeta"`

## Returns

Returns an object with two arrays:

### Outcomes

An array of live outcome markets. Each entry contains:

* `outcome` (integer) — Outcome id. Used together with the side index to derive the asset encoding.
* `name` (string) — Human-readable market name (for example, `"Recurring"` for the recurring BTC daily binary, or a custom name for one-off markets).
* `description` (string) — For recurring binary markets, a pipe-separated `key:value` string with `class`, `underlying`, `expiry`, `targetPrice`, `period` (for example, `"class:priceBinary|underlying:BTC|expiry:20260504-0600|targetPrice:78213|period:1d"`). For other market types, free-form text.
* `sideSpecs` (array) — Two-element array describing the YES (index 0) and NO (index 1) sides. Each element has a `name` field.

### Questions

An array of categorical multi-outcome questions (testnet only at the time of writing — mainnet returns an empty array). Each entry contains:

* `question` (integer) — Question id.
* `name` (string) — Question text.
* `description` (string) — Free-form description.
* `fallbackOutcome` (integer) — Outcome id used if none of the named outcomes matches.
* `namedOutcomes` (array of integers) — Outcome ids for the named legs.
* `settledNamedOutcomes` (array of integers) — Outcome ids that have already settled.

## Asset encoding

`outcomeMeta` does not return per-side coin strings or asset ids. Compute them client-side from `outcome` and `side` (`0` for YES, `1` for NO):

```
encoding   = 10 * outcome + side
trade coin = "#<encoding>"        # for /info l2Book and Exchange.order(...)
balance coin = "+<encoding>"      # for spotClearinghouseState
asset id   = 100_000_000 + encoding
```

For the mainnet BTC daily YES (outcome `1`, side `0`), the encoding is `10`, the trade coin is `#10`, the balance coin is `+10`, and the asset id is `100_000_010`.

See the full guide at [Trading HIP-4 outcome markets on Hyperliquid](/docs/hyperliquid-hip4-outcome-markets-trading) for the rest of the trading flow.

## Example request

<CodeGroup>
  ```shell Shell theme={"system"}
  curl -X POST \
    -H "Content-Type: application/json" \
    -d '{"type": "outcomeMeta"}' \
    https://api.hyperliquid.xyz/info
  ```

  ```python Python (hyperliquid-python-sdk) theme={"system"}
  from hyperliquid.info import Info
  from hyperliquid.utils import constants

  # This endpoint is public-only, so use the default Hyperliquid mainnet API.
  info = Info(constants.MAINNET_API_URL, skip_ws=True)

  # The SDK has no typed wrapper for "outcomeMeta", so post the request directly.
  # Every typed Info method is a thin wrapper over this same post(...) call.
  outcome_meta = info.post("/info", {"type": "outcomeMeta"})

  print(outcome_meta["outcomes"])
  print(outcome_meta["questions"])
  ```

  ```typescript TypeScript (@nktkas/hyperliquid) theme={"system"}
  import * as hl from "@nktkas/hyperliquid";

  // This endpoint is public-only, so use the default public HTTP transport.
  const transport = new hl.HttpTransport();
  const client = new hl.InfoClient({ transport });

  const data = await client.outcomeMeta();

  console.log(data.outcomes);
  console.log(data.questions);
  ```
</CodeGroup>

## Use cases

* **Market discovery** — enumerate every live outcome market and its side names before placing orders.
* **Settlement parser** — read `description` to extract the `expiry` and `targetPrice` for binary price-based markets.
* **Categorical markets** — list named legs of a `question` and their settled status (testnet).
* **Inventory reconciliation** — track which `outcome` ids are still live so you can mark settled positions out of your book.


## OpenAPI

````yaml openapi/hyperliquid_node_api/hypercore_info/info_outcomemeta.json post /info
openapi: 3.0.0
info:
  title: Hyperliquid Node API
  version: 1.0.0
  description: This is an API for interacting with Chainstack Hyperliquid node.
servers:
  - url: https://api.hyperliquid.xyz
security: []
paths:
  /info:
    post:
      tags:
        - hyperliquid operations
      summary: info (outcomeMeta)
      operationId: infoOutcomeMeta
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                type:
                  type: string
                  default: outcomeMeta
                  enum:
                    - outcomeMeta
                  description: Request type to retrieve HIP-4 outcome market metadata
              required:
                - type
      responses:
        '200':
          description: Live HIP-4 outcome markets and categorical questions
          content:
            application/json:
              schema:
                type: object
                properties:
                  outcomes:
                    type: array
                    description: Array of live outcome markets
                    items:
                      type: object
                      properties:
                        outcome:
                          type: integer
                          description: >-
                            Outcome id; combine with side index to derive the
                            asset encoding
                        name:
                          type: string
                          description: Human-readable market name
                        description:
                          type: string
                          description: >-
                            For recurring binary markets, a pipe-separated
                            key:value string (class, underlying, expiry,
                            targetPrice, period). For other market types,
                            free-form text.
                        sideSpecs:
                          type: array
                          description: >-
                            Two-element array describing the YES (index 0) and
                            NO (index 1) sides
                          items:
                            type: object
                            properties:
                              name:
                                type: string
                                description: Side name (for example, 'Yes' or 'No')
                  questions:
                    type: array
                    description: >-
                      Array of categorical multi-outcome questions; mainnet
                      returns an empty array at the time of writing
                    items:
                      type: object
                      properties:
                        question:
                          type: integer
                          description: Question id
                        name:
                          type: string
                          description: Question text
                        description:
                          type: string
                          description: Free-form description
                        fallbackOutcome:
                          type: integer
                          description: >-
                            Outcome id used if none of the named outcomes
                            matches
                        namedOutcomes:
                          type: array
                          description: Outcome ids for the named legs
                          items:
                            type: integer
                        settledNamedOutcomes:
                          type: array
                          description: Outcome ids that have already settled
                          items:
                            type: integer
                example:
                  outcomes:
                    - outcome: 1
                      name: Recurring
                      description: >-
                        class:priceBinary|underlying:BTC|expiry:20260504-0600|targetPrice:78213|period:1d
                      sideSpecs:
                        - name: 'Yes'
                        - name: 'No'
                  questions: []

````