# Quickstart

Make a key, read your store, list orders and get your first webhook, in about five minutes.

## 1. Make a key

In the Nepzio admin, open **Settings → Developers** (owners and admins see it) and choose **Create key**. Name it after what will use it, tick **See products and variants** and **See orders**, and save.

The key is shown **once**. Copy it into your server's settings, for example an environment variable:

```bash
export NEPZIO_API_KEY="nz_live_sk_..."
```

Keys work only from a server. A request from a browser is refused, because anyone could read a key in a web page.

## 2. Check the key works

`GET /v1/store` needs no permission and answers with the store the key belongs to.

```bash
curl https://api.nepzio.com/v1/store \
  -H "Authorization: Bearer $NEPZIO_API_KEY"
```

```json
{
  "id": "01a093ee-872c-73a3-9edd-e1f8f228e967",
  "object": "store",
  "name": "Himal Traders",
  "slug": "himal-traders",
  "status": "published",
  "url": "https://himal-traders.nepzio.com",
  "country": "NP",
  "currency": "NPR",
  "timezone": "Asia/Kathmandu",
  "created_at": "2026-09-02T04:15:00Z"
}
```

## 3. List orders

```bash
curl "https://api.nepzio.com/v1/orders?limit=10" \
  -H "Authorization: Bearer $NEPZIO_API_KEY"
```

The same in Node.js, PHP and Python:

```javascript
// Node.js 18+
const response = await fetch('https://api.nepzio.com/v1/orders?limit=10', {
  headers: { Authorization: `Bearer ${process.env.NEPZIO_API_KEY}` },
});
const page = await response.json();
for (const order of page.data) {
  console.log(order.number, order.total.amount / 100, order.status);
}
```

```php
<?php
$ch = curl_init('https://api.nepzio.com/v1/orders?limit=10');
curl_setopt_array($ch, [
    CURLOPT_HTTPHEADER => ['Authorization: Bearer '.getenv('NEPZIO_API_KEY')],
    CURLOPT_RETURNTRANSFER => true,
]);
$page = json_decode(curl_exec($ch), true);
foreach ($page['data'] as $order) {
    echo $order['number'], ' ', $order['total']['amount'] / 100, ' ', $order['status'], "\n";
}
```

```python
import os, requests

page = requests.get(
    "https://api.nepzio.com/v1/orders",
    params={"limit": 10},
    headers={"Authorization": f"Bearer {os.environ['NEPZIO_API_KEY']}"},
).json()
for order in page["data"]:
    print(order["number"], order["total"]["amount"] / 100, order["status"])
```

Amounts are in paisa: Rs. 1,500 is `{"amount": 150000, "currency": "NPR"}`. See [Data formats](/data-formats).

When `has_more` is true, pass `next_cursor` as `cursor` to get the next page. See [Pagination and syncing](/pagination).

## 4. Get a webhook

1. Run something that accepts a POST on a public HTTPS address. To try it from your own computer, use a tunnelling service.
2. In **Settings → Developers → Webhooks**, choose **Add endpoint**, enter the address and tick `order.created`.
3. Choose **Test** on the endpoint. A `webhook.test` event arrives within seconds, and the delivery log shows what your server answered.

Before trusting a webhook, [verify its signature](/webhooks#verifying-a-webhook).

## Next

- [Authentication](/authentication): every permission a key can have.
- [Keep stock in sync](/sync-stock) and [send orders to another system](/sync-orders).
- [API reference](/reference).
