# Which coins are Payday's

> Follow the registry and check mints in bulk.


A Payday coin is a pump.fun coin. Its address ends in `pump` like every other and nothing in the address marks it. The registry is how you tell them apart: every Payday coin on Solana in the order it was registered, each with a number (`seq`) that only grows.

## Follow it

1. Read it once from the start, 1,000 coins a page, until `has_more` is false. Keep the last `next_cursor`.
2. Every few seconds, call it again with that cursor. You get only the coins registered since, and a new cursor. With nothing new the list is empty and the cursor is the same.

```javascript JavaScript
const KEY = process.env.PAYDAY_KEY, BASE = "https://payday.direct/api/v1";
let cursor = null; const seen = new Map();
async function follow() {
  for (;;) {
    const url = BASE + "/registry?limit=1000" + (cursor ? "&cursor=" + cursor : "");
    const r = await fetch(url, { headers: { Authorization: "Bearer " + KEY } });
    if (r.status === 429) { await sleep(1000 * Number(r.headers.get("Retry-After") || 1)); continue; }
    const j = await r.json();
    for (const c of j.data) seen.set(c.mint, c);
    cursor = j.next_cursor;
    if (!j.has_more) break;
  }
}
const sleep = (ms) => new Promise((ok) => setTimeout(ok, ms));
await follow(); setInterval(follow, 3000);
```
```python Python
import os, time, requests
KEY, BASE = os.environ["PAYDAY_KEY"], "https://payday.direct/api/v1"
cursor, seen = None, {}
def follow():
    global cursor
    while True:
        p = {"limit": 1000, **({"cursor": cursor} if cursor else {})}
        r = requests.get(BASE + "/registry", params=p, headers={"Authorization": "Bearer " + KEY})
        if r.status_code == 429:
            time.sleep(int(r.headers.get("Retry-After", 1))); continue
        j = r.json()
        for c in j["data"]: seen[c["mint"]] = c
        cursor = j["next_cursor"]
        if not j["has_more"]: return
while True:
    follow(); time.sleep(3)
```

## Check mints you meet elsewhere

Up to 500 mints in one call, which counts as one request:

```bash
curl -X POST -H "Authorization: Bearer pd_YOUR_KEY" -H "Content-Type: application/json" \
  -d '{"mints":["MINT_ONE","MINT_TWO"]}' https://payday.direct/api/v1/coins/check
```

`payday` has the registry entry of each Payday coin and `not_payday` the rest. For one mint, `GET /registry/{mint}` answers 200 or 404.

## Things to know

- A coin is registered once its launch is confirmed and recorded, usually within a few seconds. If a seconds-old coin reads as not Payday's, ask again shortly before you settle on that.
- `source` is `launched` (launched on Payday) or `routed` (an existing coin whose fees were pointed at Payday later). `mode` says whether the fees go to an account or to holders.
- **Check it without trusting us:** `fee_config` is the coin's pump.fun fee sharing config. Read it on chain; [`GET /fees/{mint}`](/developers/api-reference/fee-recipients/get-fee-recipient) gives the wallet that must be its only shareholder.
- A coin can leave the registry (its account opted out). Leaving is not announced: when `total` differs from your own count, read from the start again. A coin that comes back gets a new, higher `seq`.
- Answers come from memory, so asking about every new pump.fun coin is fine. The registry covers Solana; EVM coins are in `/coins?chain=elysium`.
