> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rhinestone.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# JSON-RPC providers

By default, the SDK uses public providers to make EVM read calls.

Many public providers are heavily throttled and are not suitable for high traffic.

For production use, we recommend setting up a custom JSON-RPC provider with your own API key.

<Tabs>
  <Tab title="Alchemy">
    To use [Alchemy](https://www.alchemy.com), provide an API key during SDK initialization:

    ```ts {2-5} theme={null}
    const rhinestone = new RhinestoneSDK({
      provider: {
        type: 'alchemy',
        apiKey: alchemyApiKey,
      }
    })
    const rhinestoneAccount = await rhinestone.createAccount({
      owners: {
        type: 'ecdsa',
        accounts: [signer],
      },
    })
    ```
  </Tab>

  <Tab title="Custom URLs">
    To use custom JSON-RPC URLs, provide a mapping of chain IDs to RPC URLs:

    ```ts {2-9} theme={null}
    const rhinestone = new RhinestoneSDK({
      provider: {
        type: 'custom',
        urls: {
          1: 'https://my-rpc.example.com/eth',
          8453: 'https://my-rpc.example.com/base',
          42161: 'https://my-rpc.example.com/arb',
        },
      },
    })
    const rhinestoneAccount = await rhinestone.createAccount({
      owners: {
        type: 'ecdsa',
        accounts: [signer],
      },
    })
    ```
  </Tab>
</Tabs>

[Reach out](https://github.com/rhinestonewtf/sdk/issues) if you need support for other JSON-RPC providers!
