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

# Limits

> Concurrent connection and symbol limits by plan for the WebSocket API.

WebSocket access to [Prices](/websocket/prices), [Market Snapshot](/websocket/snapshot), [Indices](/websocket/indices), and [Forex Rates](/websocket/forex) is available on every plan, including Free. None of these carry historical data, and their REST equivalents ([`GET /companies`](/api-reference/companies/list), [`GET /market/snapshot`](/api-reference/market/snapshot), [`GET /indices`](/api-reference/indices/list), [`GET /forex/current`](/api-reference/forex/current)) are free too.

What scales by plan is how many connections you can hold open at once, and, on the prices channel only, how many symbols one connection can request.

| Plan       | Concurrent connections (total, across all channels) | Max symbols (`/v1/ws/prices`) |
| :--------- | --------------------------------------------------: | ----------------------------: |
| Free       |                                                   1 |                            10 |
| Hobby      |                                                   2 |                            30 |
| Starter    |                                                   3 |                            80 |
| Pro        |                                                   5 |                           150 |
| Business   |                                                  20 |                     Unlimited |
| Enterprise |                                           Unlimited |                     Unlimited |

## Connections are counted across all channels combined

The connection limit is per account, not per channel. On Free, with a limit of 1, an open connection to `/v1/ws/snapshot` means opening `/v1/ws/indices` at the same time will fail. You get one connection total, to spend on whichever channel you choose, not one per channel.

If you need several channels open at once, pick a plan whose limit covers that. Pro's limit of 5 comfortably covers all six channels open together, with room to spare.

Exceeding your plan's connection limit fails the handshake with `TOO_MANY_CONNECTIONS`. Close an existing connection, or wait for one to drop, before opening another.

## Symbol limits apply once, at connect time

The `symbols` limit on [Prices](/websocket/prices) is checked once, when you connect. It isn't a rolling count across reconnects or across your account's other connections. Each connection to `/v1/ws/prices` can independently request up to your plan's symbol limit.

## This doesn't touch your REST quota

<Note>
  Opening a WebSocket connection, and every message it pushes to you afterward, doesn't count against your monthly REST call quota described in [Plans](/plans). The two are tracked separately. A connection stays open and keeps receiving updates even if you've fully used up your REST quota elsewhere on your account.
</Note>

<CardGroup cols={2}>
  <Card title="Plans" icon="credit-card" href="/plans">
    Full REST plan comparison, endpoint access, and pricing
  </Card>

  <Card title="Errors" icon="circle-exclamation" href="/websocket/errors">
    What happens when you exceed a limit
  </Card>
</CardGroup>
