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

# PURPS API

> Everything purps.lol can do, as JSON. No key, no signup, nothing custodial.

PURPS is a launchpad where a coin's trading fees work for its holders. Fees are claimed automatically and either buy the coin back and burn it, are airdropped to holders, or fund perpetual futures positions whose profits go to holders.

Everything the site does can be done through this API: read any coin's books, launch a coin on purps.lol, pump.fun or Robinhood Chain, and wire an existing pump.fun coin's fees into a strategy.

## First call

<CodeGroup>
  ```bash curl theme={"system"}
  curl "https://purps.lol/api/v1/coins?sort=newest&limit=3"
  ```

  ```js JavaScript theme={"system"}
  const res = await fetch("https://purps.lol/api/v1/coins?sort=newest&limit=3");
  const { ok, data } = await res.json();
  console.log(data.items.map((c) => `${c.symbol} $${Math.round(c.marketCapUsd)}`));
  ```

  ```python Python theme={"system"}
  import requests

  r = requests.get("https://purps.lol/api/v1/coins", params={"sort": "newest", "limit": 3})
  for coin in r.json()["data"]["items"]:
      print(coin["symbol"], coin["marketCapUsd"])
  ```
</CodeGroup>

Every response is `{ "ok": true, "data": … }` or `{ "ok": false, "error": "…" }`. Base URL: `https://purps.lol/api/v1`.

## How it works

<CardGroup cols={2}>
  <Card title="No keys" icon="key-round" href="/guides/signing">
    A write is authorised by your own wallet's signature. Prepare, sign, submit.
  </Card>

  <Card title="Non-custodial" icon="shield-check" href="/guides/signing">
    We never see a private key. Transactions are built unsigned and signed in your wallet.
  </Card>

  <Card title="Launches finish themselves" icon="rocket" href="/guides/launch-solana">
    Once your launch lands, we see the pool on chain and mark the coin live within seconds.
  </Card>

  <Card title="Frozen shapes" icon="lock">
    Fields may be added to v1. None will be renamed or removed.
  </Card>
</CardGroup>

## What you can do

<CardGroup cols={2}>
  <Card title="Launch on purps.lol" icon="sun" href="/guides/launch-solana">
    A coin on a Meteora curve, paired with SOL or any listed token, with fees to holders, to you, or into a strategy.
  </Card>

  <Card title="Launch on pump.fun" icon="flame" href="/guides/launch-pumpfun">
    pump.fun's own curve, with creator fees wired into a strategy from the first trade.
  </Card>

  <Card title="Launch on Robinhood Chain" icon="feather" href="/guides/launch-robinhood">
    An EVM coin on Pons, Robinhood Chain's launchpad, paired with ETH or a listed token.
  </Card>

  <Card title="Redirect a pump.fun coin" icon="corner-down-right" href="/guides/redirect">
    Point an existing pump.fun coin's fees at a strategy.
  </Card>

  <Card title="Manage a coin" icon="sliders-horizontal" href="/guides/manage">
    Attach a strategy to a coin launched without one.
  </Card>
</CardGroup>

## For agents

An agent that lands on purps.lol reads [llms.txt](https://purps.lol/llms.txt) first: what PURPS is, every endpoint, and the flows. The full machine-readable spec is at [openapi.json](https://purps.lol/api/v1/openapi.json).
