# ZetaChain API Quickstart

> How to get started building on ZetaChain using Alchemy

<Tip title="Don't have an API key?" icon="star">
  Build faster with production-ready APIs, smart wallets and rollup infrastructure across 70+ chains. Create your free Alchemy API key and{" "}
  <a href="https://dashboard.alchemy.com/signup">get started today</a>.
</Tip>

ZetaChain is an EVM-compatible Cosmos SDK-based L1 blockchain designed to enable Omnichain Smart Contracts and provide a unified application experience. Applications on ZetaChain can manage, read, and write state to/from any external chain - even non-smart chains such as Bitcoin network. Users can natively access these applications from any connected chain without requiring users to switch networks.

The ZetaChain API enables interaction with the ZetaChain network through a collection of JSON-RPC methods. If you're familiar with Ethereum's JSON-RPC APIs, you'll find working with ZetaChain straightforward.

## Send your first request on Alchemy

Let's use the [`viem`](https://www.npmjs.com/package/viem) package to create a ZetaChain client connected to Alchemy and fetch the latest block number!

<CodeGroup>
  ```text npm
  npm install --save viem
  ```

  ```text yarn
  yarn add viem
  ```
</CodeGroup>

## Create a client connected to Alchemy

<CodeGroup>
```js
import { createPublicClient, http } from "viem"; 
import { zetachain } from "viem/chains";

const client = createPublicClient({
  chain: zetachain,
  transport: http("https://zetachain-mainnet.g.alchemy.com/v2/YOUR_ALCHEMY_API_KEY"),
});
```
</CodeGroup>

Now that you've created a client connected to Alchemy, you can continue with some basics:

## Get the latest block number

<CodeGroup>
```js
const blockNumber = await client.getBlockNumber();
console.log("Current block number:", blockNumber);
```
</CodeGroup>

## Get an address balance

<CodeGroup>
```js 
const balance = await client.getBalance({ address: "0xab5801a7d398351b8be11c439e05c5b3259aec9b" });
console.log("Balance (ZETA):", Number(balance) / 1e18);
```
</CodeGroup>

## Read block data

<CodeGroup>
```js
const block = await client.getBlock({
  blockNumber: blockNumber, // from previous example
});
console.log(block);
```
</CodeGroup>

## Fetch a transaction by hash

<CodeGroup> 
```js 
const tx = await client.getTransaction({ hash: "0xYOUR_TX_HASH" });
console.log(tx);
```
</CodeGroup>

## Fetch a transaction receipt

<CodeGroup>
```js
const receipt = await client.getTransactionReceipt({
  hash: "0xYOUR_TX_HASH"
});
console.log(receipt);
```
</CodeGroup>

# ZetaChain APIs

For the full list of ZetaChain APIs, see the [ZetaChain API Endpoints](/docs/chains#zetachain-apis).