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

# programSubscribe

> Подпишитесь на программу, чтобы получать уведомления при изменении количества лампортов или данных аккаунта, принадлежащего указанной программе.

## Эндпоинты

WebSocket доступны в mainnet и devnet по следующим URL:

* **Mainnet** `wss://mainnet.helius-rpc.com/?api-key=<api-key>`
* **Devnet** `wss://devnet.helius-rpc.com/?api-key=<api-key>`

<Note>Для WebSocket установлен 10-минутный таймер неактивности. Настоятельно рекомендуется реализовать проверки работоспособности и отправлять ping-запросы каждую минуту, чтобы поддерживать соединение WebSocket активным.</Note>

## Авторизация

<ParamField query="api-key" type="string" required>
  Ваш ключ API Helius. Его можно бесплатно получить в [панели управления](https://dashboard.helius.dev/api-keys).
</ParamField>

## Тело запроса

<ParamField body="params" type="array" required>
  <Expandable title="properties" defaultOpen>
    <ParamField body="programId" type="string" required>
      Публичный ключ `program_id` в виде строки, закодированной в base-58.
    </ParamField>

    <ParamField body="config" type="object">
      Объект конфигурации, содержащий следующие поля:

      <ParamField body="commitment" type="string">
        Уровень подтверждения для подписки. Возможные значения: `finalized`, `confirmed` или `processed`.
      </ParamField>

      <ParamField body="filters" type="array">
        Массив применяемых объектов фильтров.
      </ParamField>

      <ParamField body="encoding" type="string">
        Формат кодирования данных аккаунта. Возможные значения: `base58`, `base64`, `base64+zstd` или `jsonParsed`.

        * `base58` работает медленно
        * Кодирование `jsonParsed` пытается использовать парсеры состояний для конкретных программ, чтобы возвращать более понятные и подробные данные о состоянии аккаунта
        * Если запрошено `jsonParsed`, но парсер не найден, поле возвращается к двоичному кодированию. Это можно определить, когда поле данных имеет тип string.
      </ParamField>

      <ParamField body="notifyOn" type="string" deprecated>
        **Устарело — не выполняет никаких действий начиная с Agave 4.2.** Установка `notifyOn` не дает никакого эффекта. В дальнейшем поле будет удалено.
      </ParamField>
    </ParamField>
  </Expandable>
</ParamField>

## Ответ

<ResponseField name="result" type="integer">
  Идентификатор подписки (необходим для отмены подписки)
</ResponseField>

## Формат уведомления

Формат уведомления — **один** объект аккаунта программы, аналогичный объекту в методе RPC HTTP `getProgramAccounts`.

<RequestExample>
  ```json Request theme={"system"}
  {
    "jsonrpc": "2.0",
    "id": 1,
    "method": "programSubscribe",
    "params": [
      "11111111111111111111111111111111",
      {
        "encoding": "base64",
        "filters": [{ "dataSize": 80 }]
      }
    ]
  }
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={"system"}
  {
    "jsonrpc": "2.0",
    "result": 24040,
    "id": 1
  }
  ```

  ```json Notification (base58) theme={"system"}
  {
    "jsonrpc": "2.0",
    "method": "programNotification",
    "params": {
      "result": {
        "context": {
          "slot": 5208469
        },
        "value": {
          "pubkey": "H4vnBqifaSACnKa7acsxstsY1iV1bvJNxsCY7enrd1hq",
          "account": {
            "data": [
              "11116bv5nS2h3y12kD1yUKeMZvGcKLSjQgX6BeV7u1FrjeJcKfsHPXHRDEHrBesJhZyqnnq9qJeUuF7WHxiuLuL5twc38w2TXNLxnDbjmuR",
              "base58"
            ],
            "executable": false,
            "lamports": 33594,
            "owner": "11111111111111111111111111111111",
            "rentEpoch": 636,
            "space": 80
          }
        }
      },
      "subscription": 24040
    }
  }
  ```

  ```json Notification (jsonParsed) theme={"system"}
  {
    "jsonrpc": "2.0",
    "method": "programNotification",
    "params": {
      "result": {
        "context": {
          "slot": 5208469
        },
        "value": {
          "pubkey": "H4vnBqifaSACnKa7acsxstsY1iV1bvJNxsCY7enrd1hq",
          "account": {
            "data": {
              "program": "nonce",
              "parsed": {
                "type": "initialized",
                "info": {
                  "authority": "Bbqg1M4YVVfbhEzwA9SpC9FhsaG83YMTYoR4a8oTDLX",
                  "blockhash": "LUaQTmM7WbMRiATdMMHaRGakPtCkc2GHtH57STKXs6k",
                  "feeCalculator": {
                    "lamportsPerSignature": 5000
                  }
                }
              }
            },
            "executable": false,
            "lamports": 33594,
            "owner": "11111111111111111111111111111111",
            "rentEpoch": 636,
            "space": 80
          }
        }
      },
      "subscription": 24040
    }
  }
  ```
</ResponseExample>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.