> ## 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.

# programSubscribe on Solana

> programSubscribe subscribes to changes to all accounts owned by a program on Solana, via GoldRush JSON-RPC.

> [card] 0.01 credits per call

`programSubscribe` on **Solana**: Subscribes to changes to all accounts owned by a program.

## Endpoint

```
wss://rpc.goldrushdata.com/v1/solana-mainnet
```

`programSubscribe` is a **WebSocket** subscription method.

Authenticate with `Authorization: Bearer <GOLDRUSH_API_KEY>`. See [authentication](https://goldrush.dev/docs/goldrush-json-rpc/authentication.md).

## Parameters

| Name | Type | Required | Description | Example |
| - | - | - | - | - |
| `programId` | `string` | yes | Base-58 encoded program pubkey to watch. | `"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"` |
| `config` | `object` | no | `{commitment?, encoding?, filters?}`. | `{"encoding":"jsonParsed","filters":[{"dataSize":165}]}` |

## Returns

`number`: Subscription id (used with `programUnsubscribe`). Notifications arrive as `programNotification` messages.

```json theme={null}
24040
```

## Examples

```bash wscat theme={null}
# Connect (header auth works from Node/CLI clients):
wscat -c "wss://rpc.goldrushdata.com/v1/solana-mainnet" \
  -H "Authorization: Bearer $GOLDRUSH_API_KEY"

# Once connected, send:
{"jsonrpc":"2.0","id":1,"method":"programSubscribe","params":["TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", {"encoding":"jsonParsed","filters":[{"dataSize":165}]}]}
```

```typescript @solana/kit theme={null}
import { createSolanaRpcSubscriptions } from "@solana/kit";

// Authenticate with the Authorization: Bearer header on the WS handshake.
// See /goldrush-json-rpc/authentication.
const rpcSubscriptions = createSolanaRpcSubscriptions("wss://rpc.goldrushdata.com/v1/solana-mainnet");

const abortController = new AbortController();
const notifications = await rpcSubscriptions
  .programSubscribe("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", {"encoding":"jsonParsed","filters":[{"dataSize":165}]})
  .subscribe({ abortSignal: abortController.signal });

for await (const notification of notifications) {
  console.log(notification);
}
```

## Errors

Standard JSON-RPC errors: `-32600` invalid request, `-32601` method not found, `-32602` invalid params.

## Related Subscriptions methods on Solana

* [`accountSubscribe` on Solana](https://goldrush.dev/docs/api-reference/json-rpc/solana/accountsubscribe)
* [`accountUnsubscribe` on Solana](https://goldrush.dev/docs/api-reference/json-rpc/solana/accountunsubscribe)
* [`logsSubscribe` on Solana](https://goldrush.dev/docs/api-reference/json-rpc/solana/logssubscribe)
* [`logsUnsubscribe` on Solana](https://goldrush.dev/docs/api-reference/json-rpc/solana/logsunsubscribe)
* [`programUnsubscribe` on Solana](https://goldrush.dev/docs/api-reference/json-rpc/solana/programunsubscribe)


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