Payday

Payday API

Read every Payday coin, the X accounts they pay, payouts on Peer and Payday token burns from your app, bot or terminal.

Free keyrequired on every call
600 / minand 250,000 a day per key
15 show fresh the data is
Read onlyno key can move money or change anything

Quick start

  1. Make a key below (sign in with X first).
  2. Send it in a header on every call:
curl -H "Authorization: Bearer pd_YOUR_KEY" "https://payday.direct/api/v1/coins?status=graduated&limit=5"

curl -H "X-API-Key: pd_YOUR_KEY" https://payday.direct/api/v1/accounts/elonmusk

Base address https://payday.direct/api/v1. Everything is read only and answers JSON.

Keeping your key safe

Endpoints

EndpointWhat it returns
GET/coinsPayday coins. status curve or graduated, handle, pair sol or stock, since (ISO date), sort new, market_cap, volume or holders.
GET/coins/{mint}One coin, with the account it pays.
GET/accountsAccounts that earn fees. sort earned, paid or coins.
GET/accounts/{handle}One X account: fees earned and paid, next batch, its coins and recent payouts.
GET/payoutsPayout orders on Peer, newest first, with the Peer link. handle, status.
GET/burnsEvery Payday token buy and burn, with transactions.
GET/statsPlatform totals: coins, volume, fees, paid out, burned, DEX reserves.
GET/fees/{mint}Who receives a token's creator fees, with the on-chain facts to check it yourself: the pump.fun fee-sharing config and the Payday payout wallet that must be its only shareholder.
POST/fees/batchThe same for up to 100 mints: body {"mints": [...]}. Each mint counts as one request.

Paging

Lists take limit (up to 200, default 50). When there is more, the response has next_cursor: pass it back as cursor.

Numbers

Dollar amounts are strings with two decimals ("12.34") and SOL amounts are strings, so nothing loses precision. Times are ISO 8601 in UTC. Tickers keep their case.

Privacy

X handles are public. Coins paying Cash App or Venmo show the rail only, never the username. Accounts that opted out of Payday are left out entirely.

Example answer

The shape of one coin from /api/v1/coins?limit=1 (example values):

{
  "data": [{
    "mint": "uHMWNFjUNxbPy1q43WrdbzygmJwdeh6AiQm1NKdxPAY",
    "symbol": "PAYDAY",
    "name": "Payday",
    "created_at": "2026-11-09T18:02:11.000Z",
    "status": "graduated",
    "curve_progress_bps": 10000,
    "quote": { "mint": "So11111111111111111111111111111111111111112", "symbol": "SOL" },
    "market": { "market_cap_usd": "258000.00", "volume_24h_usd": "117255.90", "liquidity_usd": "41200.00",
                "holders": 1830, "price_change_24h_pct": 541.8, "last_trade_at": "2026-11-11T13:02:40.000Z" },
    "recipient": { "rail": "xmoney", "handle": "examplehandle" },
    "dex": null,
    "links": { "page": "https://payday.direct/explore#coin/uHMW…", "pump": "https://pump.fun/coin/uHMW…" }
  }],
  "next_cursor": "MQ",
  "total": 69,
  "meta": { "updated_at": "2026-11-11T13:03:20.991Z", "api_version": "v1" }
}

Errors and limits

{ "error": { "code": "rate_limited", "message": "Limit is 600 requests a minute for this key." } }
StatusCodeMeaning
400bad_status, bad_sort, bad_cursor, bad_sinceA parameter is not one the endpoint takes. The message says what is allowed.
400key_in_urlA key was put in the URL. Send it in a header, and revoke it if the link was shared.
401missing_key, invalid_keyNo key, or the key is wrong or revoked.
404not_foundNo such coin, account or endpoint.
429rate_limited, daily_quota, too_many_bad_keysOver a limit. Wait the seconds in Retry-After.
5xxinternal, unavailableOur side. Retry with a short backoff.

Every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset, plus an ETag: send it back as If-None-Match and an unchanged answer comes back as an empty 304.

Your API keys

Checking whether you are signed in…

Keys are free. A key is shown once when you create it.

Versioning

v1 only gains fields; nothing in it is renamed or removed. Anything that would break a client ships as v2, announced 90 days ahead. Questions or a higher limit: [email protected].