# Program Streams ListTopics

> List every Program Stream topic visible to your credential.

Canonical: https://nolimitnodes.com/docs/api-reference/program-streams/list-topics

`ListTopics` returns the active catalog for your account.

## Request

```protobuf
message ListTopicsRequest {}
```

## Response

```protobuf
message ListTopicsResponse {
  repeated TopicInfo topics = 1;
}

message TopicInfo {
  string name = 1;
  string description = 2;
  string proto_message_type = 3;
}
```

## grpcurl

```bash
grpcurl \
  -H "x-api-key: YOUR_API_KEY" \
  -import-path . \
  -proto program-streams.proto \
  -d '{}' \
  events.nln.clr3.org:443 \
  nln.stream.v1.StreamService/ListTopics
```

## Filter in Python

```python
response = client.ListTopics(
    pb.ListTopicsRequest(),
    metadata=[("x-api-key", "YOUR_API_KEY")],
)

pump_topics = [
    topic
    for topic in response.topics
    if topic.name.startswith("solana.pump_fun.")
]

for topic in pump_topics:
    print(topic.name, topic.proto_message_type)
```

## Cache policy

- Refresh at startup.
- Refresh after `NOT_FOUND` or `PERMISSION_DENIED`.
- Store topic names as configuration, not source constants.
- Compare catalog changes before deployment.

Browse the same inventory in the [Program Streams catalog](https://nolimitnodes.com/products/program-streams).
