# RPC Quickstart

> Send your first authenticated Solana JSON-RPC request.

Canonical: https://nolimitnodes.com/docs/quickstarts/rpc

Use JSON-RPC for account reads, block data, transaction submission, and cluster status.

## Before you start

You need a NoLimitNodes project with an active node.

  ### Create a project

Sign in to the [dashboard](https://app.nolimitnodes.com/dashboard). Create a project and add a Solana node.

  ### Copy the key

Open the node page. Copy its API key and store the value in `NLN_API_KEY`.

  ### Send a request

Call the RPC endpoint with the key in the `x-api-key` header.

```bash

curl https://rpc.nln.clr3.org \
  -H "Content-Type: application/json" \
  -H "x-api-key: $NLN_API_KEY" \
  -d '{"jsonrpc":"2.0","id":"quickstart","method":"getHealth"}'
```

A healthy node returns:

```json
{
  "jsonrpc": "2.0",
  "result": "ok",
  "id": "quickstart"
}
```

## Read the current slot

```javascript
const response = await fetch("https://rpc.nln.clr3.org", {
  method: "POST",
  headers: {
    "content-type": "application/json",
    "x-api-key": process.env.NLN_API_KEY,
  },
  body: JSON.stringify({
    jsonrpc: "2.0",
    id: "slot",
    method: "getSlot",
    params: [{ commitment: "confirmed" }],
  }),
})

const body = await response.json()
if (!response.ok || body.error) {
  throw new Error(body.error?.message ?? `HTTP ${response.status}`)
}

console.log(body.result)
```

## Production checklist

- Set a request timeout.
- Retry `429`, `500`, and `503` responses with backoff.
- Do not retry invalid parameters.
- Keep your key on the server.
- Log the JSON-RPC request ID with each error.

  ### [RPC overview](/docs/api-reference/solana-rpc/overview)

Review endpoints, request fields, and commitment levels.

  ### [Batching and retries](/docs/guides/rpc-batching-retries)

Reduce request volume and handle temporary failures.
