> For the complete documentation index, see [llms.txt](https://docs.triton.one/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.triton.one/solana/rpc-methods/utility-methods/requestairdrop.md).

# requestAirdrop

Requests a faucet airdrop of lamports to a Pubkey and returns the transaction signature; disabled on Triton's Solana mainnet and shared testnet endpoints.

{% hint style="info" %}
Triton's Solana mainnet endpoints don't serve `requestAirdrop`: they return HTTP `410` with `"The RPC call or parameters have been disabled"`, or `429` if your rate tier caps the method at zero. On devnet, airdrops are rate-limited per IP range; over the limit you get HTTP `429` with a `Retry-After` of one day. If the faucet itself refuses or is unavailable, the call returns a JSON-RPC error in an HTTP `200` response. Triton's shared testnet endpoints return HTTP `410` with `"The RPC faucet is closed on this cluster. Request test SOL at https://faucet.solana.com"`. For more test SOL, use [faucet.solana.com](https://faucet.solana.com).
{% endhint %}

## Request

{% tabs %}
{% tab title="cURL" %}

```bash
curl "https://<your-endpoint>.devnet.rpcpool.com/<your-token>" -s -X POST \
  -H "Content-Type: application/json" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "requestAirdrop",
  "params": [
    "4kg8oh3jdNtn7j2wcS7TrUua31AgbLzDVkBZgTAe44aF",
    1000000000,
    {
      "commitment": "finalized"
    }
  ]
}'
```

{% endtab %}

{% tab title="Kit" %}

```typescript
import { address, createSolanaRpc, lamports } from "@solana/kit";

const rpc_url = "https://<your-endpoint>.devnet.rpcpool.com/<your-token>";
const rpc = createSolanaRpc(rpc_url);

let receiver = address("4kg8oh3jdNtn7j2wcS7TrUua31AgbLzDVkBZgTAe44aF");

let airdropAmt = lamports(1_000_000_000n); // 1 SOL

let signature = await rpc.requestAirdrop(receiver, airdropAmt).send();

console.log(signature);
```

{% endtab %}

{% tab title="web3.js" %}

```typescript
import {
  Connection,
  LAMPORTS_PER_SOL,
  PublicKey
} from "@solana/web3.js";

const connection = new Connection("https://<your-endpoint>.devnet.rpcpool.com/<your-token>", "confirmed");

let receiver = new PublicKey("4kg8oh3jdNtn7j2wcS7TrUua31AgbLzDVkBZgTAe44aF");

let airdropAmt = 1 * LAMPORTS_PER_SOL;

let sig = await connection.requestAirdrop(receiver, airdropAmt);

console.log(sig);
```

{% endtab %}

{% tab title="Rust" %}

```rust
// Cargo.toml: anyhow = "1", solana-client = "~4.4", solana-commitment-config = "3",
// solana-sdk = "5", tokio = { version = "1", features = ["full"] }. solana-client 4.4 takes
// solana-sdk 5.x types. Requires Rust 1.98.1 or newer (solana-client 4.4).
use anyhow::Result;
use solana_client::nonblocking::rpc_client::RpcClient;
use solana_commitment_config::CommitmentConfig;
use solana_sdk::{native_token::LAMPORTS_PER_SOL, pubkey};

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

    let receiver = pubkey!("4kg8oh3jdNtn7j2wcS7TrUua31AgbLzDVkBZgTAe44aF");

    let lamports = 1 * LAMPORTS_PER_SOL;

    let transaction_signature = client.request_airdrop(&receiver, lamports).await?;
    loop {
        if client.confirm_transaction(&transaction_signature).await? {
            break;
        }
        tokio::time::sleep(std::time::Duration::from_millis(500)).await;
    }

    println!("{}", transaction_signature);

    Ok(())
}
```

{% endtab %}
{% endtabs %}

## Parameters

**`pubkey`** · string · required

Pubkey of account to receive lamports, as a base-58 encoded string

**`lamports`** · u64 · required

Amount of lamports to airdrop

**`config`** · object

Configuration object containing the following fields:

**`commitment`** · string · default `finalized`

Values: `processed`, `confirmed`, `finalized`

Solana RPC uses the following commitment levels:

| Value       | Description                                                                                                                                                                        |
| ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `processed` | Return data from the highest slot this node has processed on the fork it currently considers best. This is the newest view, but it can still change if the cluster switches forks. |
| `confirmed` | Return data from the highest slot the cluster has finalized. On Alpenglow, `confirmed` and `finalized` are the same level.                                                         |
| `finalized` | Return data from the highest slot that the cluster has finalized. On Alpenglow there are no vote towers or lockouts: a slot is finalized by certificates of aggregated votes.      |

**`recentBlockhash`** · string

Use this recent blockhash for the faucet transaction instead of the node's current confirmed blockhash

## Response

```json
{
  "jsonrpc": "2.0",
  "result": "4cdd1oX7cfVALfr26tP52BZ6cSzrgnNGtYD7BFhm6FFeZV5sPTnRvg6NRn8yC6DbEikXcrNChBM5vVJnTgKhGhVu",
  "id": 1
}
```

## Result

Transaction Signature of the airdrop, as a base-58 encoded string

***

*Adapted from the* [*Solana `requestAirdrop` reference*](https://solana.com/docs/rpc/http/requestairdrop)*, maintained by the Solana Foundation.*

***

<i class="fa-life-ring">:life-ring:</i> Contact support by clicking the chat icon in your [customer dashboard](https://customers.triton.one)\ <i class="fa-briefcase">:briefcase:</i> Sales questions? [Contact us](https://triton.one/contact)\ <i class="fa-sparkles">:sparkles:</i> AI agent? Read [llms.txt](https://docs.triton.one/llms.txt)\ <i class="fa-rss">:rss:</i> Follow updates: [Blog](https://blog.triton.one) · [X](https://x.com/triton_one) · [YouTube](https://www.youtube.com/@triton_one_ltd) · [Telegram](https://t.me/tritonone) · [GitHub](https://github.com/rpcpool)
