# Perennial API
> Live Perennial on-chain data via Blockscout. Perennial is a DeFi derivatives Ethereum L2 built on Arbitrum Orbit; gas and balances are in ETH. Network stats, gas prices, latest blocks, a block by height or hash, address detail with ETH balance, a transaction by hash, ERC-20 token metadata and a universal search across addresses, tokens, blocks and transactions. Real data, no key.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/perennial-api/..."
```

## Pricing
- **Free** (Free) — 1,600 calls/Mo, 1 req/s
- **Basic** ($15/Mo) — 73,000 calls/Mo, 10 req/s
- **Pro** ($46/Mo) — 500,000 calls/Mo, 20 req/s
- **Mega** ($144/Mo) — 2,700,000 calls/Mo, 50 req/s

## Endpoints

### Network

#### `GET /v1/gas` — Current gas prices

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/perennial-api/v1/gas"
```

#### `GET /v1/stats` — Network statistics

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/perennial-api/v1/stats"
```

### Blocks

#### `GET /v1/block` — A block by height or hash

**Parameters:**
- `height` (query, optional, string) — Block height Example: `42109699`
- `hash` (query, optional, string) — Block hash

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/perennial-api/v1/block?height=42109699"
```

#### `GET /v1/blocks` — Latest blocks

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/perennial-api/v1/blocks"
```

### Accounts

#### `GET /v1/address` — Address detail with ETH balance

**Parameters:**
- `address` (query, required, string) — Address hash Example: `0x39CD9EF9E511ec008247aD5DA01245D84a9521be`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/perennial-api/v1/address?address=0x39CD9EF9E511ec008247aD5DA01245D84a9521be"
```

### Transactions

#### `GET /v1/transaction` — A transaction by hash

**Parameters:**
- `hash` (query, required, string) — Transaction hash Example: `0xb613de64451e5f6272e48312410053e58d652600227214bbb03b05fe945c29fc`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/perennial-api/v1/transaction?hash=0xb613de64451e5f6272e48312410053e58d652600227214bbb03b05fe945c29fc"
```

### Tokens

#### `GET /v1/token` — ERC-20 token metadata

**Parameters:**
- `address` (query, required, string) — Token contract address Example: `0x39CD9EF9E511ec008247aD5DA01245D84a9521be`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/perennial-api/v1/token?address=0x39CD9EF9E511ec008247aD5DA01245D84a9521be"
```

### Search

#### `GET /v1/search` — Universal on-chain search

**Parameters:**
- `q` (query, required, string) — Address, token, block or tx Example: `USD`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/perennial-api/v1/search?q=USD"
```

### Meta

#### `GET /v1/meta` — Service metadata

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/perennial-api/v1/meta"
```


---
Marketplace page: https://www.oanor.com/api/perennial-api
OpenAPI spec: https://www.oanor.com/api/perennial-api/openapi.json
