---
title: getVersion
description: >-
  Returns the node's software version string and optional feature set
  identifier.
url: /docs/rpc/http/getversion
type: reference
hideTableOfContents: true
---

Returns the node's software version string and optional feature set identifier.

<Callout type="info" title="Source">
  [`get_version`](https://github.com/anza-xyz/agave/blob/v3.1.8/rpc/src/rpc.rs#L2882)
</Callout>

<APIMethod>

```jsonc !!request curl
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "getVersion"
}
```

```ts !!request title="Kit"
import { createSolanaRpc } from "@solana/kit";

const rpc_url = "https://api.devnet.solana.com";
const rpc = createSolanaRpc(rpc_url);

let version = await rpc.getVersion().send();

console.log(version);
```

```ts !!request title="web3.js"
import { Connection, clusterApiUrl } from "@solana/web3.js";

const connection = new Connection(clusterApiUrl("devnet"), "confirmed");

let version = await connection.getVersion();

console.log(version);
```

```rs !!request title="Rust"
use anyhow::Result;
use solana_client::nonblocking::rpc_client::RpcClient;
use solana_commitment_config::CommitmentConfig;

#[tokio::main]
async fn main() -> Result<()> {
    let client = RpcClient::new_with_commitment(
        String::from("https://api.devnet.solana.com"),
        CommitmentConfig::confirmed(),
    );

    let version = client.get_version().await?;

    println!("{}", version);

    Ok(())
}
```

### !params

### !!result

```jsonc !response
{
  "jsonrpc": "2.0",
  // !hover(1:4) result
  "result": {
    // !hover solana-core
    "solana-core": "3.1.8",
    // !hover feature-set
    "feature-set": 2891131721
  },
  "id": 1
}
```

!type object

Version response object containing:

##### !! solana-core

!type string

Node software version string.

##### !! feature-set

!type u32 | null

First four bytes of the current software's FeatureSet identifier. This may be
`null` if the node does not report a feature set.

</APIMethod>
