## Public Endpoint

Pimlico provides a public bundler endpoint for developers to test and prototype their applications without requiring an API key.

### Endpoint URL

```
https://public.pimlico.io/v2/{chain_id}/rpc
```

Replace `{chain_id}` with the chain ID of the network you want to use (e.g., `1` for Ethereum mainnet, `137` for Polygon).

### Supported Methods

The public endpoint supports all standard ERC-4337 bundler methods and Pimlico specific methods:

* `eth_sendUserOperation`
* `eth_estimateUserOperationGas`
* `eth_getUserOperationReceipt`
* `eth_getUserOperationByHash`
* `eth_supportedEntryPoints`
* `pimlico_getUserOperationGasPrice`
* `pimlico_getUserOperationStatus`

:::warning[Limited Paymaster Support]
The public endpoint supports paymaster methods only on testnets. Mainnet paymaster support requires an API key.
:::

### Rate Limits

The public endpoint has the following rate limits:

* **20 requests per minute per IP address**

:::tip[Need Higher Limits?]
For production use or higher rate limits, please [create a Pimlico API key](/guides/create-api-key) and use the authenticated endpoints.
:::

### Example Usage

```typescript
import { createSmartAccountClient } from "permissionless";
import { toSafeSmartAccount } from "permissionless/accounts";
import { createPublicClient, http, zeroAddress } from "viem";
import { generatePrivateKey, privateKeyToAccount } from "viem/accounts";
import { createPimlicoClient } from "permissionless/clients/pimlico";
import { base } from "viem/chains";

const publicClient = createPublicClient({
	chain: base,
	transport: http(),
});

const account = await toSafeSmartAccount({
	owners: [privateKeyToAccount(privateKey)],
	client: publicClient,
	version: "1.4.1",
});

const pimlicoClient = createPimlicoClient({
	transport: http(`https://public.pimlico.io/v2/${base.id}/rpc`), // [!code ++]
	chain: base,
});

const smartAccountClient = createSmartAccountClient({
	userOperation: {
		estimateFeesPerGas: async () =>
			(await pimlicoClient.getUserOperationGasPrice()).fast,
	},
	account,
	chain: base,
	bundlerTransport: http(`https://public.pimlico.io/v2/${base.id}/rpc`), // [!code ++]
});

const txHash = await smartAccountClient.sendTransaction({
	calls: [
		{
			to: zeroAddress,
			value: 0n,
			data: "0x",
		},
	],
});

console.log(txHash);
```
