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

# Get Lighter on Robinhood Chain account positions JSON Schema

> Get Lighter on Robinhood Chain account positions JSON Schema contract. Includes route metadata, schemas, examples, and implementation notes.

Source OpenAPI: 0xArchive API 1.7.0; 218 paths; 210 component schemas.

Open positions of one account: the latest live snapshot, or the state at `timestamp`. The first page of a snapshot read without `symbol` also returns the account's position aggregates. An empty result reports `account_seen`. The change log and hourly history start June 26, 2026; live snapshots refresh every 2 minutes. Values are in USDG. Rows past the trade finalization watermark are preliminary (`finalized: false`). Billed at 1 credit per 1,000 rows returned, minimum 1 credit per request.

## Route Metadata

| Field | Value |
| - | - |
| Method | `GET` |
| Path | `/v1/rh-lighter/accounts/{account_index}/positions` |
| operationId | `getRhLighterAccountPositions` |
| Tag | Lighter on Robinhood Chain - Positions |
| Family | Lighter on Robinhood Chain |
| Deprecated or legacy | no |

## Request Parameters

### Path Parameters

```json theme={"theme":"github-dark"}
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "getRhLighterAccountPositions path parameters",
  "type": "object",
  "required": [
    "account_index"
  ],
  "properties": {
    "account_index": {
      "description": "Lighter account index (an integer). Resolve an L1 address on Lighter mainnet with GET /v1/lighter/accounts?l1_address=0x...",
      "type": "string",
      "pattern": "^[0-9]+$",
      "example": "513030",
      "x-parameter-location": "path"
    }
  }
}
```

### Query Parameters

```json theme={"theme":"github-dark"}
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "getRhLighterAccountPositions query parameters",
  "type": "object",
  "properties": {
    "timestamp": {
      "description": "As-of instant in Unix milliseconds: the state after every event before it. An exact hour with a committed snapshot serves that snapshot; any other instant is reconstructed (`meta.source: reconstructed`) and clamped to `meta.built_through`. Omit for the latest live snapshot.",
      "type": "integer",
      "format": "int64",
      "x-parameter-location": "query"
    },
    "symbol": {
      "description": "Only this perpetual (e.g. BTC). Pass it exactly as the instruments route lists it, in uppercase.",
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "description": "Maximum rows per page (default 500, max 5000).",
      "type": "integer",
      "default": 500,
      "minimum": 1,
      "maximum": 5000,
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Cursor from the previous response `meta.next_cursor`. Keep every other parameter unchanged.",
      "type": "string",
      "x-parameter-location": "query"
    }
  }
}
```

## Response Contracts

### Status 200

Get Lighter on Robinhood Chain account positions

#### application/json

```json theme={"theme":"github-dark"}
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "getRhLighterAccountPositions response 200",
  "description": "Positions of one wallet or account.",
  "type": "object",
  "required": [
    "data",
    "meta",
    "success"
  ],
  "properties": {
    "data": {
      "description": "Positions of one wallet or account at one instant.",
      "type": "object",
      "required": [
        "account",
        "positions"
      ],
      "properties": {
        "account": {
          "description": "Account summary on the first page of a snapshot read. Hyperliquid core: the wallet's summary when the snapshot holds one. HIP-3: when the request is scoped to one dex. Lighter: position aggregates when no `symbol` filter is set. Null otherwise, on later pages, and on as-of reconstructions.",
          "nullable": true,
          "allOf": [
            {
              "description": "Account summary. Hyperliquid and HIP-3 carry the perp clearinghouse fields of one account (HIP-3: one per dex). Lighter carries position aggregates only (`account_index`, totals, and counts). A total is null when any position in it has no mark, never a partial sum.",
              "type": "object",
              "required": [
                "long_value",
                "n_positions",
                "quality",
                "short_value",
                "total_position_value",
                "total_unrealized_pnl"
              ],
              "properties": {
                "account_index": {
                  "description": "Lighter only: account index as a string.",
                  "type": "string",
                  "example": "513030"
                },
                "account_mode": {
                  "description": "Hyperliquid and HIP-3 only: account abstraction mode, `standard`, `unified`, `portfolio`, `dex_abstraction`, or `unknown`.",
                  "type": "string",
                  "example": "standard"
                },
                "account_value": {
                  "description": "Hyperliquid and HIP-3 only: account value in USD.",
                  "type": "string",
                  "nullable": true,
                  "example": "125000.5"
                },
                "collateral": {
                  "description": "Hyperliquid and HIP-3 only: collateral in USD.",
                  "type": "string",
                  "nullable": true,
                  "example": "100000"
                },
                "cross_account_value": {
                  "description": "Hyperliquid and HIP-3 only: cross-margin account value in USD.",
                  "type": "string",
                  "nullable": true,
                  "example": "118000.25"
                },
                "cross_maintenance_margin_used": {
                  "description": "Hyperliquid and HIP-3 only: cross maintenance margin used in USD.",
                  "type": "string",
                  "nullable": true,
                  "example": "6100.2"
                },
                "dex": {
                  "description": "HIP-3 only: dex the account summary belongs to.",
                  "type": "string",
                  "example": "xyz"
                },
                "long_value": {
                  "description": "Value of long positions in USD.",
                  "type": "string",
                  "nullable": true,
                  "example": "300000"
                },
                "n_positions": {
                  "description": "Number of open positions.",
                  "type": "integer",
                  "example": 4
                },
                "quality": {
                  "description": "`complete`, `partial` (a total is null because a position has no mark), or `degraded`.",
                  "type": "string",
                  "example": "complete"
                },
                "short_value": {
                  "description": "Value of short positions in USD.",
                  "type": "string",
                  "nullable": true,
                  "example": "112000.5"
                },
                "snapshot_as_of": {
                  "description": "Hyperliquid and HIP-3 only: time the clearinghouse fields describe.",
                  "type": "string",
                  "format": "date-time",
                  "nullable": true
                },
                "snapshot_ts": {
                  "description": "Hour the row describes. Present on hourly history rows only.",
                  "type": "string",
                  "format": "date-time"
                },
                "total_margin_used": {
                  "description": "Hyperliquid and HIP-3 only: total margin used in USD.",
                  "type": "string",
                  "nullable": true,
                  "example": "20500.75"
                },
                "total_position_value": {
                  "description": "Sum of absolute position values in USD.",
                  "type": "string",
                  "nullable": true,
                  "example": "412000.5"
                },
                "total_unrealized_pnl": {
                  "description": "Sum of unrealized PnL in USD.",
                  "type": "string",
                  "nullable": true,
                  "example": "2510.25"
                },
                "withdrawable": {
                  "description": "Hyperliquid and HIP-3 only: withdrawable amount in USD. Null outside the periods where it was captured.",
                  "type": "string",
                  "nullable": true
                }
              }
            }
          ]
        },
        "account_seen": {
          "description": "Present only when `positions` is empty: `flat` (activity is recorded but no position is open), `never_seen` (no recorded activity in the covered history, with `meta.notice` and `meta.coverage_from`), or `outside_coverage` (the requested instant is before coverage).",
          "type": "string",
          "enum": [
            "flat",
            "never_seen",
            "outside_coverage"
          ]
        },
        "positions": {
          "type": "array",
          "items": {
            "description": "One open position. Numbers are decimal strings (sizes to the market size precision, prices to the market price precision, USD values to 6 decimals); a flat position serializes as `\"0\"`. Hyperliquid rows carry `dex` on HIP-3; Lighter rows carry `account_index`, `account_kind`, and the Lighter fields at the end. Fields a source does not report are null, never estimated.",
            "type": "object",
            "required": [
              "coin",
              "cum_funding",
              "entry_price",
              "leverage",
              "liquidation_price",
              "liquidation_price_status",
              "margin_used",
              "mark_price",
              "mark_time",
              "max_leverage",
              "opened_at",
              "position_value",
              "quality",
              "return_on_equity",
              "side",
              "size",
              "snapshot_as_of",
              "symbol",
              "unrealized_pnl"
            ],
            "properties": {
              "account_index": {
                "description": "Lighter only: account index, serialized as a string because it can exceed JavaScript integers.",
                "type": "string",
                "example": "281474976710654"
              },
              "account_kind": {
                "description": "Lighter only: `user`, `insurance`, `settlement`, or `system`. Non-user accounts appear in market routes only with `include_system=true`.",
                "type": "string",
                "example": "user"
              },
              "allocated_margin": {
                "description": "Lighter only: isolated margin allocated to the position.",
                "type": "string",
                "nullable": true,
                "example": "1200.5"
              },
              "coin": {
                "description": "Alias of `symbol`.",
                "type": "string",
                "example": "BTC"
              },
              "cum_funding": {
                "description": "Cumulative funding in USD (decimal strings). Null when not reported, including every Lighter row and as-of reconstructions.",
                "type": "object",
                "required": [
                  "all_time",
                  "since_change",
                  "since_open"
                ],
                "properties": {
                  "all_time": {
                    "description": "Funding paid or received over the account lifetime for this coin.",
                    "type": "string",
                    "nullable": true,
                    "example": "-12.345678"
                  },
                  "since_change": {
                    "description": "Funding since the last change in position size.",
                    "type": "string",
                    "nullable": true,
                    "example": "-0.5"
                  },
                  "since_open": {
                    "description": "Funding since the current position opened.",
                    "type": "string",
                    "nullable": true,
                    "example": "-1.25"
                  }
                }
              },
              "dex": {
                "description": "HIP-3 only: the dex the position belongs to.",
                "type": "string",
                "example": "xyz"
              },
              "entry_price": {
                "description": "Average entry price.",
                "type": "string",
                "nullable": true,
                "example": "64210.5"
              },
              "finalized": {
                "description": "Lighter only: true when every trade behind the row is final (reconciled).",
                "type": "boolean",
                "example": true
              },
              "initial_margin_fraction": {
                "description": "Lighter only: initial margin fraction at the last trade, as a decimal ratio.",
                "type": "string",
                "nullable": true,
                "example": "0.05"
              },
              "leverage": {
                "description": "Leverage of a position.",
                "type": "object",
                "required": [
                  "type",
                  "value"
                ],
                "properties": {
                  "type": {
                    "description": "Margin type: `cross`, `isolated`, or `unknown`. On Lighter this is the margin mode of the position.",
                    "type": "string",
                    "example": "cross"
                  },
                  "value": {
                    "description": "Leverage multiple as a decimal string. Null when unknown (Lighter rows and as-of reconstructions).",
                    "type": "string",
                    "nullable": true,
                    "example": "20"
                  }
                }
              },
              "liquidation_price": {
                "description": "Liquidation price as reported for the position. Hyperliquid snapshot rows only.",
                "type": "string",
                "nullable": true,
                "example": "81250"
              },
              "liquidation_price_status": {
                "description": "How `liquidation_price` should be read: `exact`, `not_published_cross`, `changed_since_snapshot`, or `unavailable` (always `unavailable` on Lighter and on as-of reconstructions).",
                "type": "string",
                "example": "exact"
              },
              "margin_mode": {
                "description": "Lighter only: `cross`, `isolated`, or `unknown`.",
                "type": "string",
                "example": "cross"
              },
              "margin_used": {
                "description": "Margin allocated to the position in USD. Hyperliquid snapshot rows only.",
                "type": "string",
                "nullable": true,
                "example": "1625.5"
              },
              "mark_price": {
                "description": "Mark price used for value and PnL. Null when no mark is available.",
                "type": "string",
                "nullable": true,
                "example": "65020.1"
              },
              "mark_source": {
                "description": "Lighter only: where the mark came from: `mark`, `last_trade`, `stale_mark`, or `none`.",
                "type": "string",
                "example": "mark"
              },
              "mark_time": {
                "description": "Time of the mark price.",
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "max_leverage": {
                "description": "Maximum leverage allowed for the market. Hyperliquid snapshot rows only.",
                "type": "integer",
                "nullable": true,
                "example": 40
              },
              "opened_at": {
                "description": "Start of the current position lifecycle. Null when it opened before coverage.",
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "position_value": {
                "description": "Absolute position value in USD at the mark price.",
                "type": "string",
                "nullable": true,
                "example": "32510.05"
              },
              "quality": {
                "description": "Quality of this row. `complete`, `partial` (a mark or entry is missing, so value and PnL fields are null), or `degraded`. Lighter rows can also read `preliminary` (built from real-time trades not yet reconciled), `unreconciled` (a market with no reconciled trades), or `incomplete`. No row reads `complete` when its own data is not complete, or when its snapshot has a problem that could not be pinned to specific rows. A small number of Hyperliquid positions around three short windows in June and July 2025, where Hyperliquid's published fill data has gaps, read `partial`.",
                "type": "string",
                "example": "complete"
              },
              "return_on_equity": {
                "description": "Return on equity as a decimal ratio. Hyperliquid snapshot rows only.",
                "type": "string",
                "nullable": true,
                "example": "-0.1245"
              },
              "side": {
                "description": "Position side.",
                "type": "string",
                "enum": [
                  "long",
                  "short"
                ],
                "example": "short"
              },
              "size": {
                "description": "Signed position size in base units (negative is short).",
                "type": "string",
                "example": "-0.5"
              },
              "snapshot_as_of": {
                "description": "Time the leverage, margin, and funding fields describe, which can differ from the hour. Hyperliquid snapshot rows only.",
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "snapshot_ts": {
                "description": "Hour the row describes. Present on hourly history rows only.",
                "type": "string",
                "format": "date-time"
              },
              "symbol": {
                "description": "Market symbol (HIP-3: `dex:COIN`).",
                "type": "string",
                "example": "BTC"
              },
              "unrealized_pnl": {
                "description": "Unrealized PnL in USD at the mark price.",
                "type": "string",
                "nullable": true,
                "example": "-404.8"
              }
            }
          }
        }
      }
    },
    "meta": {
      "description": "Response metadata of the account positions routes. Every instant is RFC 3339 UTC with milliseconds and comes from the data, never the request time.",
      "type": "object",
      "required": [
        "count",
        "request_id"
      ],
      "properties": {
        "as_of": {
          "description": "Instant the returned state describes: the snapshot tick or hour, or the requested as-of time.",
          "type": "string",
          "format": "date-time"
        },
        "built_through": {
          "description": "Every event before this instant is built into the change log and as-of state. Reads are clamped to it.",
          "type": "string",
          "format": "date-time"
        },
        "clamped_to": {
          "description": "Boundary the read was clamped to (`built_through`). Present only when clamped.",
          "type": "string",
          "format": "date-time"
        },
        "count": {
          "description": "Number of records returned.",
          "type": "integer"
        },
        "coverage_from": {
          "description": "Coverage start, present with `notice` when the request falls before coverage or the address has no recorded activity.",
          "type": "string",
          "format": "date-time"
        },
        "finalized_through": {
          "description": "Every event before this instant is final and will not be re-derived (Lighter: the trade finalization watermark). Never later than `built_through`.",
          "type": "string",
          "format": "date-time"
        },
        "next_cursor": {
          "description": "Signed cursor for the next page, bound to the request. Pass it back with the same parameters. A market cursor pins its snapshot; if that snapshot is replaced or expires the next page answers 409 `snapshot_advanced`.",
          "type": "string",
          "nullable": true
        },
        "notice": {
          "description": "Human-readable advisory: before coverage, no recorded activity, or a stale snapshot.",
          "type": "string"
        },
        "quality": {
          "description": "Completeness of the snapshot the response was read from: `complete`, `partial`, or `degraded`. Rows carry their own `quality`. On Lighter and Robinhood Chain, snapshots from the latest day, before the venue's daily trade reconcile, can read `degraded` while their rows read `preliminary`; they read `complete` once the reconcile has run.",
          "type": "string"
        },
        "request_id": {
          "description": "Unique request ID for support.",
          "type": "string",
          "format": "uuid"
        },
        "requested_end": {
          "description": "The `end` or `timestamp` the caller asked for, echoed when the read was clamped.",
          "type": "string",
          "format": "date-time"
        },
        "snapshot_ts": {
          "description": "Committed snapshot the response was read from. Market routes echo the resolved `hour` here.",
          "type": "string",
          "format": "date-time"
        },
        "source": {
          "description": "How the rows were produced: `snapshot` (live or hourly snapshot), `reconstructed` (as-of state between snapshots), or `changes` (change log).",
          "type": "string",
          "enum": [
            "snapshot",
            "reconstructed",
            "changes"
          ]
        },
        "stale": {
          "description": "True on current reads when the latest snapshot is older than 12 minutes; paired with `notice`.",
          "type": "boolean"
        },
        "totals": {
          "description": "Market listings, first page only: aggregates over the whole filtered result set, not just this page.",
          "allOf": [
            {
              "description": "Long and short aggregates of every open position in one market at one snapshot. Averages cover only positions with a known entry (`*_positions_with_entry`). Shares are decimal ratios of the side or total value held by the ten largest positions.",
              "type": "object",
              "required": [
                "coin",
                "long_avg_entry_price",
                "long_count",
                "long_positions_with_entry",
                "long_size",
                "long_top10_value_share",
                "long_value",
                "quality",
                "short_avg_entry_price",
                "short_count",
                "short_positions_with_entry",
                "short_size",
                "short_top10_value_share",
                "short_value",
                "snapshot_ts",
                "symbol",
                "top10_value_share"
              ],
              "properties": {
                "coin": {
                  "description": "Alias of `symbol`.",
                  "type": "string",
                  "example": "BTC"
                },
                "dex": {
                  "description": "HIP-3 only.",
                  "type": "string",
                  "example": "xyz"
                },
                "long_avg_entry_price": {
                  "description": "Size-weighted average entry of long positions with a known entry.",
                  "type": "string",
                  "nullable": true,
                  "example": "63120.4"
                },
                "long_count": {
                  "type": "integer",
                  "format": "int64",
                  "example": 18234
                },
                "long_positions_with_entry": {
                  "type": "integer",
                  "format": "int64",
                  "example": 18230
                },
                "long_size": {
                  "description": "Total long size in base units.",
                  "type": "string",
                  "example": "8123.45"
                },
                "long_top10_value_share": {
                  "description": "Share of long value held by the ten largest long positions.",
                  "type": "string",
                  "nullable": true,
                  "example": "0.412345"
                },
                "long_value": {
                  "description": "Total long value in USD. Null when any long position has no mark.",
                  "type": "string",
                  "nullable": true,
                  "example": "528000000.5"
                },
                "quality": {
                  "description": "`complete`, `partial`, or `degraded`, from this market's own rows.",
                  "type": "string",
                  "example": "complete"
                },
                "short_avg_entry_price": {
                  "description": "Size-weighted average entry of short positions with a known entry.",
                  "type": "string",
                  "nullable": true,
                  "example": "66210.9"
                },
                "short_count": {
                  "type": "integer",
                  "format": "int64",
                  "example": 15102
                },
                "short_positions_with_entry": {
                  "type": "integer",
                  "format": "int64",
                  "example": 15100
                },
                "short_size": {
                  "description": "Total short size in base units.",
                  "type": "string",
                  "example": "8120.1"
                },
                "short_top10_value_share": {
                  "description": "Share of short value held by the ten largest short positions.",
                  "type": "string",
                  "nullable": true,
                  "example": "0.385"
                },
                "short_value": {
                  "description": "Total short value in USD. Null when any short position has no mark.",
                  "type": "string",
                  "nullable": true,
                  "example": "527800000.25"
                },
                "snapshot_ts": {
                  "description": "Snapshot the aggregates describe.",
                  "type": "string",
                  "format": "date-time",
                  "nullable": true
                },
                "symbol": {
                  "type": "string",
                  "example": "BTC"
                },
                "top10_value_share": {
                  "description": "Share of total value held by the ten largest positions.",
                  "type": "string",
                  "nullable": true,
                  "example": "0.301"
                }
              }
            }
          ]
        }
      }
    },
    "success": {
      "type": "boolean",
      "example": true
    }
  }
}
```

### Status 400

Invalid request

#### application/json

```json theme={"theme":"github-dark"}
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "getRhLighterAccountPositions response 400",
  "description": "Error response",
  "type": "object",
  "properties": {
    "code": {
      "description": "HTTP status code",
      "type": "integer"
    },
    "error": {
      "description": "Error message",
      "type": "string"
    },
    "error_code": {
      "description": "Machine-readable error code. Common values: `invalid_query_params` (a query parameter failed to parse or validate) and `invalid_path_params` (a path parameter failed to parse). Other endpoint-specific codes exist; treat unknown codes as generic errors of the given HTTP status.",
      "type": "string"
    },
    "request_id": {
      "description": "Unique request ID for support",
      "type": "string",
      "format": "uuid"
    }
  }
}
```

##### OpenAPI example

```json theme={"theme":"github-dark"}
{
  "code": 400,
  "error": "Failed to deserialize query string: limit: invalid digit found in string",
  "error_code": "invalid_query_params",
  "request_id": "3f2a9c71-5b0e-4d68-9a4c-7e1d2b6f8a05"
}
```

### Status 401

Authentication required

#### application/json

```json theme={"theme":"github-dark"}
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "getRhLighterAccountPositions response 401",
  "description": "Error response",
  "type": "object",
  "properties": {
    "code": {
      "description": "HTTP status code",
      "type": "integer"
    },
    "error": {
      "description": "Error message",
      "type": "string"
    },
    "error_code": {
      "description": "Machine-readable error code. Common values: `invalid_query_params` (a query parameter failed to parse or validate) and `invalid_path_params` (a path parameter failed to parse). Other endpoint-specific codes exist; treat unknown codes as generic errors of the given HTTP status.",
      "type": "string"
    },
    "request_id": {
      "description": "Unique request ID for support",
      "type": "string",
      "format": "uuid"
    }
  }
}
```

##### OpenAPI example

```json theme={"theme":"github-dark"}
{
  "code": 401,
  "error": "Missing or invalid API key. Provide X-API-Key header."
}
```

### Status 404

Resource not found

#### application/json

```json theme={"theme":"github-dark"}
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "getRhLighterAccountPositions response 404",
  "description": "Error response",
  "type": "object",
  "properties": {
    "code": {
      "description": "HTTP status code",
      "type": "integer"
    },
    "error": {
      "description": "Error message",
      "type": "string"
    },
    "error_code": {
      "description": "Machine-readable error code. Common values: `invalid_query_params` (a query parameter failed to parse or validate) and `invalid_path_params` (a path parameter failed to parse). Other endpoint-specific codes exist; treat unknown codes as generic errors of the given HTTP status.",
      "type": "string"
    },
    "request_id": {
      "description": "Unique request ID for support",
      "type": "string",
      "format": "uuid"
    }
  }
}
```

##### OpenAPI example

```json theme={"theme":"github-dark"}
{
  "code": 404,
  "error": "Resource not found"
}
```

### Status 429

Rate limit exceeded

#### application/json

```json theme={"theme":"github-dark"}
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "getRhLighterAccountPositions response 429",
  "description": "Error response",
  "type": "object",
  "properties": {
    "code": {
      "description": "HTTP status code",
      "type": "integer"
    },
    "error": {
      "description": "Error message",
      "type": "string"
    },
    "error_code": {
      "description": "Machine-readable error code. Common values: `invalid_query_params` (a query parameter failed to parse or validate) and `invalid_path_params` (a path parameter failed to parse). Other endpoint-specific codes exist; treat unknown codes as generic errors of the given HTTP status.",
      "type": "string"
    },
    "request_id": {
      "description": "Unique request ID for support",
      "type": "string",
      "format": "uuid"
    }
  }
}
```

##### OpenAPI example

```json theme={"theme":"github-dark"}
{
  "code": 429,
  "error": "Rate limit exceeded"
}
```

### Status 503

Positions, pagination, or an as-of reconstruction are temporarily unavailable (`error_code` `positions_unavailable`, `pagination_unavailable`, or `reconstruction_unavailable`). Retry shortly.

#### application/json

```json theme={"theme":"github-dark"}
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "getRhLighterAccountPositions response 503",
  "description": "Error response",
  "type": "object",
  "properties": {
    "code": {
      "description": "HTTP status code",
      "type": "integer"
    },
    "error": {
      "description": "Error message",
      "type": "string"
    },
    "error_code": {
      "description": "Machine-readable error code. Common values: `invalid_query_params` (a query parameter failed to parse or validate) and `invalid_path_params` (a path parameter failed to parse). Other endpoint-specific codes exist; treat unknown codes as generic errors of the given HTTP status.",
      "type": "string"
    },
    "request_id": {
      "description": "Unique request ID for support",
      "type": "string",
      "format": "uuid"
    }
  }
}
```

##### OpenAPI example

```json theme={"theme":"github-dark"}
{
  "code": 503,
  "error": "Account positions are not available right now.",
  "error_code": "positions_unavailable"
}
```
