> ## Documentation Index
> Fetch the complete documentation index at: https://docs.arrays.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Nanopayment

> Pay-per-call API access in USDC or BNB Chain stablecoins. No subscription, no API key, no signup.

## What it is

Nanopayment is one of two ways to pay for Arrays data — the other is a [subscription](/pricing). Instead of a plan and an API key, your code or AI agent calls our API and **pays per request in stablecoins** using the [x402 HTTP standard](https://x402.org) (v2). Two settlement rails are live:

* **Base** — USDC via [Circle Gateway](https://www.circle.com/gateway) (Nanopayments)
* **BNB Chain** — USDC, USDT, USD1, or United Stables via EIP-3009 or Permit2

It works across both integration methods: call it directly from the [REST API](/api-reference/introduction), or let an agent using [Skills](/skills/overview) pay as it goes.

No subscription. No API key. No procurement.

<Info>
  Read the launch blog: [Arrays Financial Data launches on Nanopayments, powered by Circle Gateway](https://arrays.org/blog/arrays-financial-data-launches-on-nanopayments-powered-by-circle-gateway).
</Info>

## Base URL

Nanopayment runs on a dedicated host:

```
https://x402-data-tools.prd.arrays.org
```

Same paths, same responses as the API-key host — but on this host a plain `GET` to any priced endpoint returns `402 Payment Required` instead of `401`, which is what standard x402 clients expect.

<Note>
  The API-key host `data-tools.prd.arrays.org` also speaks x402 if you add the request header `Accept-Payment: x402`. Without that header it returns `401` — stock x402 SDKs send a bare `GET`, so point them at the x402 host above.
</Note>

## How it works

<Steps>
  <Step title="Your client calls an Arrays endpoint on the x402 host">
    Plain `GET`, no auth header needed.
  </Step>

  <Step title="The server returns HTTP 402 Payment Required">
    The `PAYMENT-REQUIRED` response header carries a base64 x402 v2 payload: `{ x402Version: 2, accepts: [...], resource }`. Each `accepts` entry is one payment option (network, asset, amount, `payTo`). The same JSON is echoed in the body.
  </Step>

  <Step title="Your wallet signs an authorization">
    EIP-3009 `TransferWithAuthorization` (Base via Circle Gateway, or BNB Chain) or a Permit2 signature (BNB Chain). Off-chain signature — no gas, no transaction broadcast.
  </Step>

  <Step title="Client retries with the signature">
    Send the signed payload in the `PAYMENT-SIGNATURE` header. Arrays settles with the facilitator and returns the data; the settlement result is in the `PAYMENT-RESPONSE` header.
  </Step>
</Steps>

Verify the 402 challenge without a wallet:

```bash theme={null}
curl -i "https://x402-data-tools.prd.arrays.org/api/v1/crypto/funding-rate?symbol=BTCUSDT"
```

## Supported chains & assets

| Network | Asset | Rail | Signature |
| - | - | - | - |
| Base (`eip155:8453`) | USDC | Circle Gateway (Nanopayments) | EIP-3009 against the Gateway Wallet domain |
| BNB Chain (`eip155:56`) | USDC, USDT, USD1, United Stables | Direct | EIP-3009 or Permit2 (`permit2-exact`) |

Amounts in the 402 are in the asset's smallest unit: 6 decimals on Base USDC (`8000` = \$0.008), 18 decimals on BNB Chain (`8000000000000000` = \$0.008). Read them from the response — don't hard-code prices.

Deposits for the Base rail go through Circle Gateway, which pools USDC from 11 EVM chains into one balance.

## Pricing (today)

<Note>
  Nanopayment currently covers **15 crypto endpoints**. Stocks, ETF, macro, and options are planned for the next two quarters.
</Note>

<Tabs>
  <Tab title="Basic tier · $0.008 / call">
    | Endpoint | Route |
    | - | - |
    | Token info | `GET /api/v1/crypto/detail` |
    | Spot OHLCV | `GET /api/v1/crypto/kline` |
    | Futures OHLCV | `GET /api/v1/crypto/futures/ohlcv` |
    | Funding rate | `GET /api/v1/crypto/funding-rate` |
    | Open interest | `GET /api/v1/crypto/open-interest` |
    | Long-short ratio | `GET /api/v1/crypto/long-short-ratio` |
    | Taker buy/sell volume | `GET /api/v1/crypto/taker-buy-sell-volume` |
    | Token unlock events | `GET /api/v1/crypto/unlock-events` |
    | Token supply | `GET /api/v1/crypto/supply` |
    | Market cap | `GET /api/v1/crypto/market-cap` |
    | Fear & Greed index | `GET /api/v1/crypto/fear-greed-index` |
    | Company crypto holdings | `GET /api/v1/crypto/holdings` |
  </Tab>

  <Tab title="Advanced tier · $0.03 / call">
    | Endpoint | Route |
    | - | - |
    | Market metrics | `GET /api/v1/crypto/market-metrics` |
    | Crypto screener (snapshot) | `GET /api/v1/crypto/screener/metrics` |
    | Crypto screener (time range) | `GET /api/v1/crypto/screener/metrics/timerange` |
  </Tab>
</Tabs>

Any other route called with x402 headers returns `404 X402_NOT_SUPPORTED`. On the x402 host, these 15 routes always return `402` — an `X-API-Key` header is ignored there; use the API-key host for subscription access.

## When to use it

<CardGroup cols={2}>
  <Card title="✅ Perfect for">
    * Autonomous AI agents that pay for their own data
    * Burst / low-volume usage where a subscription is overkill
    * On-chain native projects already holding USDC or BNB Chain stablecoins
    * Prototyping without account creation
  </Card>

  <Card title="❌ Not ideal for">
    * Stock / ETF / macro queries (not yet supported)
    * High-volume usage where Pro subscription is cheaper
    * Teams that need a dashboard, usage analytics, or SLAs
  </Card>
</CardGroup>

## Next step

<Card title="Build your first paid call" icon="rocket" href="/nanopayment/quickstart">
  TypeScript end-to-end example in under 30 lines.
</Card>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.