# Symbol by ID

> Returns the full details of a single symbol for the authenticated account's group. Supports HTTP ETag revalidation; the response includes a strong `ETag` header derived from the symbol's last update time, and clients (browsers) sending `If-None-Match` will receive `304 Not Modified` when the cached representation is still fresh.

Source: /trader/api/configuration/get-symbol-by-id

## `GET /accounts/{account_id}/symbols/{symbol_id}`

**Symbol by ID**

Returns the full details of a single symbol for the authenticated account's group. Supports HTTP ETag revalidation; the response includes a strong `ETag` header derived from the symbol's last update time, and clients (browsers) sending `If-None-Match` will receive `304 Not Modified` when the cached representation is still fresh.

Tags: `Configuration`

#### Path parameters

- `account_id` (string) (required) — Account ID to fetch the symbol for
- `symbol_id` (string) (required) — Symbol identifier


### Responses

#### `200` — Successfully retrieved symbol

**Content-Type:** `application/json`

- `id` (string) (required) — Symbol identifier
- `name` (string) (required) — Symbol display name
- `group_id` (string) — Account group identifier that this symbol belongs to
- `group_name` (string) — Human-readable name of the symbol group this symbol belongs to
- `description` (string) — Symbol description
- `asset_class` (string) (required)
  - enum: `ASSET_CLASS_UNSPECIFIED`, `ASSET_CLASS_FOREX_CFD`, `ASSET_CLASS_CFD`, `ASSET_CLASS_STOCK_CFD`, `ASSET_CLASS_ETF_CFD`, `ASSET_CLASS_INDEX_CFD`, `ASSET_CLASS_CRYPTO_CFD`, `ASSET_CLASS_COMMODITY_CFD`
- `instrument_type` (string)
  - enum: `INSTRUMENT_TYPE_UNSPECIFIED`, `INSTRUMENT_TYPE_CFD`, `INSTRUMENT_TYPE_SPOT`, `INSTRUMENT_TYPE_PERPETUAL`, `INSTRUMENT_TYPE_FUTURE`
- `status` (string) (required)
  - enum: `TRADE_STATUS_UNSPECIFIED`, `TRADE_STATUS_FULL`, `TRADE_STATUS_CLOSE_ONLY`, `TRADE_STATUS_DISABLED`, `TRADE_STATUS_LONG_ONLY`
- `digits` (integer) (required) — Number of decimal places for price display
- `contract_size` (integer) (required) — Contract size in base currency units
- `tick_size` (number) (required) — Minimum price movement
- `base_asset` (string) — Base asset symbol
- `quote_asset` (string) — Quote asset symbol
- `lot_name` (string) — Name for the lot unit
- `timezone` (string) — Trading timezone
- `volume_min` (number) (required) — Minimum trade volume
- `volume_max` (number) (required) — Maximum trade volume
- `volume_step` (number) (required) — Volume step increment
- `stop_loss_min_distance` (integer) (required) — Minimum stop loss distance in points
- `take_profit_min_distance` (integer) (required) — Minimum take profit distance in points
- `limit_min_distance` (integer) — Minimum limit order distance in points
- `stop_min_distance` (integer) — Minimum stop order distance in points
- `margin_rate` (number) — Margin rate (1 / first-tier leverage)
- `leverage_tiers` (array) — Tiered leverage schedule; first tier applies at lowest exposure
  - items:
    - `leverage` (integer) (required) — Leverage multiplier for this tier
    - `exposure_level_usd` (number) (required) — Upper bound exposure in USD for this tier (0 = unlimited)
- `commission_rate` (number) — Commission rate
- `commission_mode` (string)
  - enum: `COMMISSION_MODE_UNSPECIFIED`, `COMMISSION_MODE_USD_PER_MILLION`, `COMMISSION_MODE_USD_PER_LOT`, `COMMISSION_MODE_PERCENT`
- `min_commission` (number) — Minimum commission amount
- `trade_sessions` (array) — Trading session times
  - items:
    - `from` (integer) (required) — Session start time (seconds since midnight)
    - `to` (integer) (required) — Session end time (seconds since midnight)
- `quote_sessions` (array) — Quote session times
  - items:
- `bid` (number) (required) — Current bid price
- `ask` (number) (required) — Current ask price
- `change` (number) — Price change percentage
- `timestamp` (integer) (required) — Market data timestamp (Unix seconds)

#### `304` — Not Modified — the client's cached representation (per `If-None-Match`) is still current. No body is returned.

#### `400` — Bad request (missing or invalid path parameters)

**Content-Type:** `application/json`

- `error` (object) (required)
  - `type` (string) (required) — Error type code
  - `message` (string) (required) — Human-readable error message
  - `field` (string) — Field name if error is field-specific

#### `401` — Unauthorized (invalid or missing JWT token)

**Content-Type:** `application/json`



#### `403` — Forbidden (account access denied)

**Content-Type:** `application/json`



#### `404` — Symbol not found in the account's group

**Content-Type:** `application/json`



#### `500` — Internal server error

**Content-Type:** `application/json`



#### `503` — Service not ready (cache not initialized)

**Content-Type:** `application/json`



