# AIOZ Pin — Gateways

Base URL: https://api.aiozpin.network/api
Authentication: pinning_api_key + pinning_secret_key headers

## Setup

```typescript
const BASE = 'https://api.aiozpin.network/api'
const PIN_HEADERS = {
  'pinning_api_key': process.env.AIOZ_PIN_API_KEY!,
  'pinning_secret_key': process.env.AIOZ_PIN_SECRET_KEY!
}
```

---

## List Public & Premium Gateways

GET https://api.aiozpin.network/api/gateways/

```typescript
async function listGateways(options: {
  offset?: number
  limit?: number
  type?: 'Public' | 'Premium' | 'all'
} = {}) {
  const { offset = 0, limit = 10, type = 'all' } = options
  const params = new URLSearchParams({ offset: String(offset), limit: String(limit), type })
  const res = await fetch(`${BASE}/gateways/?${params}`, { headers: PIN_HEADERS })
  return res.json()
}

const result = await listGateways({ type: 'all' })
// result.data.totals  — total gateway count
// result.data.gateways[].name
// result.data.gateways[].host      — gateway hostname
// result.data.gateways[].type      — 'Public' | 'Premium'
// result.data.gateways[].bandwidth — bandwidth limit
// result.data.gateways[].operation
// result.data.gateways[].active    — boolean
```

Query params:
- offset (default 0), limit (default 10)
- type: 'Public' | 'Premium' | 'all' (default 'all')

---

## Access Content via Gateway

To retrieve content from IPFS using a gateway:

```typescript
function getIpfsUrl(gateway: string, cid: string): string {
  return `https://${gateway}.aiozpin.network/ipfs/${cid}`
}

// Public gateway
const url = getIpfsUrl('public', 'QmYourCIDHere')
// https://public.aiozpin.network/ipfs/QmYourCIDHere

// Premium gateway (requires gateway name from list)
const premiumUrl = getIpfsUrl('premium-gateway-name', 'QmYourCIDHere')
```
