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

# orderStatus | Hyperliquid Info API

> Hyperliquid orderStatus: look up the status of a single order for a user by order id (oid) or client order id (cloid).

<CardGroup cols={2}>
  <Card title="Credit Cost"> 1 per call</Card>
  <Card title="Processing"> Realtime</Card>
</CardGroup>

The Hyperliquid info endpoint with `type: "orderStatus"` is used to look up the status of a single order for a user, by order id (`oid`) or client order id (`cloid`).

<Tip>
  Estimate your monthly cost for this API using the [Pricing Calculator](/docs/pricing-calculator?endpoint=%2Fapi-reference%2Fhyperliquid-info%2Forder-status).
</Tip>

<Info>
  * Wire-equal to `POST api.hyperliquid.xyz/info` with `{"type": "orderStatus", "user": "0x...", "oid": ...}`.
  * `oid` accepts **either** a numeric order id **or** a client order id (`cloid`, a hex string).
  * If the order is not found for that user, the response is `{"status": "unknownOid"}` (no `order` field).
  * To fetch many orders at once, use <a href="/docs/api-reference/hyperliquid-info/historical-orders">`historicalOrders`</a> instead.
</Info>

Returns the status of one order together with the order itself. Use it to poll a specific order you placed - by its exchange `oid` or the `cloid` you supplied - without pulling the user's whole order history.

## Endpoint

```
POST https://hypercore.goldrushdata.com/info
Authorization: Bearer <GOLDRUSH_API_KEY>
Content-Type: application/json
```

## Request

<ParamField body="type" type="string" required default="orderStatus">
  Always `"orderStatus"`.
</ParamField>

<ParamField body="user" type="string" required>
  The account address in 42-character hex format, e.g. `"0x0000000000000000000000000000000000000000"`.
</ParamField>

<ParamField body="oid" type="int | string" required>
  The order identifier. Pass the numeric **order id** (e.g. `513957677284`) or a **client order id** (`cloid`) as a hex string (e.g. `"0x..."`).
</ParamField>

### Example

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://hypercore.goldrushdata.com/info \
    -H "Authorization: Bearer $GOLDRUSH_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "type": "orderStatus",
      "user": "0x31ca8395cf837de08b24da3f660e77761dfb974b",
      "oid": 513957677284
    }'
  ```

  ```typescript TypeScript theme={null}
  const response = await fetch("https://hypercore.goldrushdata.com/info", {
    method: "POST",
    headers: {
      "Authorization": `Bearer ${process.env.GOLDRUSH_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      type: "orderStatus",
      user: "0x31ca8395cf837de08b24da3f660e77761dfb974b",
      oid: 513957677284,
    }),
  });

  const result = await response.json();
  if (result.status === "order") {
    console.log(result.order.status, result.order.order.coin, result.order.order.oid);
  } else {
    console.log("not found:", result.status); // "unknownOid"
  }
  ```

  ```python Python theme={null}
  import os, requests

  response = requests.post(
      "https://hypercore.goldrushdata.com/info",
      headers={"Authorization": f"Bearer {os.environ['GOLDRUSH_API_KEY']}"},
      json={"type": "orderStatus", "user": "0x31ca8395cf837de08b24da3f660e77761dfb974b", "oid": 513957677284},
  )

  result = response.json()
  if result["status"] == "order":
      print(result["order"]["status"], result["order"]["order"]["coin"])
  else:
      print("not found:", result["status"])
  ```
</CodeGroup>

## Response

When the order is found, `status` is `"order"` and `order` contains the order plus its status. When it is not, `status` is `"unknownOid"` and there is no `order`.

```json theme={null}
{
  "status": "order",
  "order": {
    "order": {
      "coin": "POPCAT",
      "side": "A",
      "limitPx": "0.043668",
      "sz": "16812.0",
      "oid": 513957677284,
      "timestamp": 1786384269962,
      "triggerCondition": "N/A",
      "isTrigger": false,
      "triggerPx": "0.0",
      "children": [],
      "isPositionTpsl": false,
      "reduceOnly": false,
      "orderType": "Limit",
      "origSz": "16812.0",
      "tif": "Alo",
      "cloid": null
    },
    "status": "canceled",
    "statusTimestamp": 1786384274789
  }
}
```

Not found:

```json theme={null}
{ "status": "unknownOid" }
```

### Field descriptions

<Note>
  `limitPx`, `sz`, `origSz`, and `triggerPx` are returned as **decimal strings**, preserving upstream precision. Do not parse them as floats.
</Note>

<ResponseField name="status" type="string">
  `"order"` when the order is found, `"unknownOid"` when there is no such order for this user.
</ResponseField>

<ResponseField name="order" type="object">
  Present only when `status` is `"order"`.

  <Expandable title="order fields">
    <ResponseField name="order" type="object">
      The order itself.

      <Expandable title="order fields">
        <ResponseField name="coin" type="string">Asset symbol.</ResponseField>
        <ResponseField name="side" type="string">`"B"` = bid (buy), `"A"` = ask (sell).</ResponseField>
        <ResponseField name="limitPx" type="string">Limit price (decimal string).</ResponseField>
        <ResponseField name="sz" type="string">Remaining size (decimal string).</ResponseField>
        <ResponseField name="origSz" type="string">Original size (decimal string).</ResponseField>
        <ResponseField name="oid" type="int">Order id.</ResponseField>
        <ResponseField name="cloid" type="string | null">Client order id (hex) if supplied, else `null`.</ResponseField>
        <ResponseField name="timestamp" type="int">Order creation time (ms since epoch).</ResponseField>
        <ResponseField name="orderType" type="string">e.g. `"Limit"`, `"Stop Market"`.</ResponseField>
        <ResponseField name="tif" type="string | null">Time-in-force, e.g. `"Alo"`, `"Gtc"`, `"Ioc"`.</ResponseField>
        <ResponseField name="reduceOnly" type="bool">Whether the order is reduce-only.</ResponseField>
        <ResponseField name="isTrigger" type="bool">Whether it is a trigger order.</ResponseField>
        <ResponseField name="triggerCondition" type="string">Trigger condition, or `"N/A"`.</ResponseField>
        <ResponseField name="triggerPx" type="string">Trigger price (decimal string).</ResponseField>
        <ResponseField name="isPositionTpsl" type="bool">Whether it is a position-level TP/SL.</ResponseField>
        <ResponseField name="children" type="array">Child orders attached to this order.</ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="status" type="string">The order's current or terminal status. Hyperliquid defines many values; observed examples include `"open"`, `"filled"`, `"canceled"`, `"selfTradeCanceled"`, and `"iocCancelRejected"`.</ResponseField>
    <ResponseField name="statusTimestamp" type="int">Millisecond timestamp when the status took effect.</ResponseField>
  </Expandable>
</ResponseField>

## Related endpoints

<CardGroup cols={2}>
  <Card title="historicalOrders" href="/docs/api-reference/hyperliquid-info/historical-orders">A user's recent orders (open + finalized), up to 2000.</Card>
  <Card title="openOrders" href="/docs/api-reference/hyperliquid-info/open-orders">A user's currently-resting open orders.</Card>
</CardGroup>
