# Authentication

> Reads need no key. A key raises your rate limit, meters usage, and unlocks the Ask agent API.

Source: https://getchord.xyz/docs/concepts/authentication/

Chord's API is open to read. Authentication exists to give you a limit of your own and to meter what you use.

## The key

Create a key on [getchord.xyz/developer](https://getchord.xyz/developer) after a Google sign-in, or in Ask (sign in at [getchord.xyz/ask](https://getchord.xyz/ask), Settings, API Key). Both pages issue the same kind of key, valid for the data API and for Ask. It is shown once. Send it on every request as a header:

```bash
curl -H "X-API-Key: YOUR_KEY" https://api.getchord.xyz/v1/arc/trending
```

A missing or unknown key is **not rejected** on read endpoints: the request simply gets the anonymous per-IP limit. Only two things require a key:

- `POST /v1/ask` — the [Ask agent API](/docs/agents/ask-api/) (a Google session bearer also works; that is what the browser uses).
- `?only=` on `/v1/quote` — a single-venue debug lever that bypasses the routing safety gates.

Check what a key can do with `GET /v1/me`:

```json
{ "email": "you@example.com", "tier": "build", "limits": { "rpm": 100, "monthly": 16000, "priceUsd": 99, "label": "Build" }, "usage": { "today": 812, "month": 9210 } }
```

## Keys in browsers

CORS is open, so a browser can send `X-API-Key` directly. A key in a public bundle is a key anyone can copy; if the limit matters to you, call the API from your server or a small proxy and keep the key there. Reads that need no limit can go straight from the browser without a key.

## Sessions

The Chord app signs users in with Google and mints a short bearer (`nts_…`) for its own surfaces: the developer page, the Ask chat, reports and LP alerts. Agents and integrations do not use sessions; use a key.

## Plans

| Plan | Requests a minute | Calls in any 30 days | Price |
| --- | --- | --- | --- |
| Free | 60 | 300 | $0 |
| Build | 100 | 16,000 | $99 a month |
| Grow | 150 | 144,000 | $696 a month |
| Enterprise | custom | custom | talk to us |

Every key starts on Free. A plan covers all keys on an account together: their calls are counted as one, over the trailing 30 days, and a call past the package answers `429 QUOTA_EXCEEDED` until the window has room again. No endpoint is paywalled; plans change how much you can call.

Build and Grow are bought in the app, under Settings, API Key: one transfer of USDC (on Arc, Base, Monad, Avalanche, BNB Chain, Arbitrum or Ethereum) or of USDG (on Robinhood Chain) from your Chord wallet or from any other wallet. A plan runs 30 days, or a year at 20% less, and does not renew by itself. See the [pricing page](https://getchord.xyz/pricing).
