# gRPC Unary Methods

> Simple request/response gRPC methods for blockhash, block height, slot, and version queries.

Canonical: https://nolimitnodes.com/docs/api-reference/grpc/unary

## Unary Methods

These are simple request/response gRPC methods (not streaming).

***

## SubscribeReplayInfo

Returns information about the earliest slot available for replay subscriptions.

**Parameters:** None (empty request message)

### `first_available`, uint64

The first slot available for replay (optional - may be absent if replay is not supported).

```typescript TypeScript
const response = await client.subscribeReplayInfo();
console.log("First available slot:", response.firstAvailable);
```

```python Python
response = stub.SubscribeReplayInfo(geyser_pb2.SubscribeReplayInfoRequest())
print(f"First available: {response.first_available}")
```

***

## Ping

Health check that echoes back a count value.

### `count`, int32, required

A counter value to echo back.

### `count`, int32

The echoed counter value.

```typescript TypeScript
const response = await client.ping(1);
console.log("Pong:", response);
```

```python Python
response = stub.Ping(geyser_pb2.PingRequest(count=1))
print(f"Pong: {response.count}")
```

***

## GetLatestBlockhash

Returns the latest blockhash and last valid block height.

### `commitment`, CommitmentLevel

Commitment level: `PROCESSED`, `CONFIRMED`, or `FINALIZED`.

### `slot`, uint64

Slot of the blockhash.

### `blockhash`, string

Latest blockhash.

### `last_valid_block_height`, uint64

Last block height at which the blockhash is valid.

```typescript TypeScript
const response = await client.getLatestBlockhash(CommitmentLevel.CONFIRMED);
console.log(`Blockhash: ${response.blockhash}`);
console.log(`Valid until block: ${response.lastValidBlockHeight}`);
```

```python Python
response = stub.GetLatestBlockhash(
    geyser_pb2.GetLatestBlockhashRequest(commitment=geyser_pb2.CONFIRMED)
)
print(f"Blockhash: {response.blockhash}")
print(f"Valid until: {response.last_valid_block_height}")
```

***

## GetBlockHeight

Returns the current block height.

### `commitment`, CommitmentLevel

Commitment level.

### `block_height`, uint64

Current block height.

```typescript TypeScript
const response = await client.getBlockHeight(CommitmentLevel.CONFIRMED);
console.log(`Block height: ${response.blockHeight}`);
```

```python Python
response = stub.GetBlockHeight(
    geyser_pb2.GetBlockHeightRequest(commitment=geyser_pb2.CONFIRMED)
)
print(f"Block height: {response.block_height}")
```

***

## GetSlot

Returns the current slot.

### `commitment`, CommitmentLevel

Commitment level.

### `slot`, uint64

Current slot number.

```typescript TypeScript
const response = await client.getSlot(CommitmentLevel.CONFIRMED);
console.log(`Current slot: ${response.slot}`);
```

```python Python
response = stub.GetSlot(
    geyser_pb2.GetSlotRequest(commitment=geyser_pb2.CONFIRMED)
)
print(f"Current slot: {response.slot}")
```

***

## IsBlockhashValid

Checks whether a given blockhash is still valid.

### `blockhash`, string, required

The blockhash to validate.

### `commitment`, CommitmentLevel

Commitment level.

### `slot`, uint64

Slot at which validity was checked.

### `valid`, bool

`true` if the blockhash is still valid.

```typescript TypeScript
const response = await client.isBlockhashValid("YOUR_BLOCKHASH");
console.log(`Valid: ${response.valid}, Slot: ${response.slot}`);
```

```python Python
response = stub.IsBlockhashValid(
    geyser_pb2.IsBlockhashValidRequest(
        blockhash="YOUR_BLOCKHASH",
        commitment=geyser_pb2.CONFIRMED
    )
)
print(f"Valid: {response.valid}, Slot: {response.slot}")
```

***

## GetVersion

Returns the Yellowstone gRPC server version.

**Parameters:** None

### `version`, string

Server version string.

```typescript TypeScript
const response = await client.getVersion();
console.log(`Version: ${response.version}`);
```

```python Python
response = stub.GetVersion(geyser_pb2.GetVersionRequest())
print(f"Version: {response.version}")
```
