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

# Get Token Dev History

> Merged, chronological feed of a token deployer's on-chain activity — creator fee claims, swaps on the queried token, and transfers to/from the deployer.

<Warning>**Alpha** — This endpoint is in early access. Response shape, field names, and filter semantics may change without notice. Currently Solana-only; EVM launchpads (Clanker v4, Bankr) will be added in a follow-up release.</Warning>

### Query Details

This endpoint returns a polymorphic, chronological feed of a token deployer's on-chain activity. Each row is one of three `type`s:

| `type`     | Meaning                                                                                                                                                                                                                                                                                     |
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `feeClaim` | The deployer drained their accumulated trading fees from a protocol vault. Supported protocols: PumpFun bonding curve, PumpSwap AMM, and Meteora DBC — which is the backbone of **Bags**, **Moonshot**, **Believe**, **Subs.fun**, **Cults.fun**, **Time.fun**, and most Solana launchpads. |
| `swap`     | The deployer executed a swap on a pool that contains the queried token. `side` is `buy` if the deployer ended up with MORE of the queried token, `sell` otherwise.                                                                                                                          |
| `transfer` | A direct transfer of the queried token to (`direction: "in"`) or from (`direction: "out"`) the deployer.                                                                                                                                                                                    |

| Parameter    | Required | Description                                                       |
| ------------ | -------- | ----------------------------------------------------------------- |
| `blockchain` | Yes      | Blockchain identifier (e.g., `solana`, `base`, `ethereum`).       |
| `token`      | Yes      | Token mint / contract address.                                    |
| `type`       | No       | Filter to a single entry type: `feeClaim`, `swap`, or `transfer`. |
| `limit`      | No       | Page size. 1–200, default `50`.                                   |
| `offset`     | No       | Pagination offset, default `0`.                                   |

<Note>
  For PumpFun and PumpSwap, the per-creator vault is shared across **all** of the deployer's coins — a `feeClaim` row under those protocols reflects the same on-chain claim event, but the amount may include fees from OTHER coins by the same creator. Rows from `meteoradbc` carry an exact `tokenAddress` and `poolAddress` and attribute 1:1 to a specific coin.
</Note>

### Step-by-Step Tutorial

* Guide: [How to track a token developer's activity](/guides/how-to-track-token-dev-history)

***

### Response Overview

Each `data[i]` is discriminated on the `type` field. Common fields across all variants:

* **type**: `"feeClaim" | "swap" | "transfer"` — the discriminator.
* **blockchain**: Friendly blockchain name (e.g. `"solana"`).
* **date**: Event timestamp in milliseconds.
* **transactionHash**: On-chain transaction hash / signature.

**`feeClaim` additional fields**

* **protocol**: `"pumpfun" | "pumpswap" | "meteoradbc"`.
* **blockHeight**: Block / slot number, or `null`.
* **instructionIndex**: Stable index of the claim instruction within the transaction.
* **creatorAddress**: Address that received the claimed fees (= the deployer).
* **quoteAddress**: Mint of the asset the claim is denominated in (wSOL, USDC, …).
* **tokenAddress**: Source coin mint for protocols with per-pool vaults (Meteora DBC). `null` for per-creator vaults (PumpFun, PumpSwap).
* **poolAddress**: Source pool address if available; `null` for per-creator vaults.
* **amountRaw**: Amount claimed in base units of `quoteAddress`.
* **amountUSD**: USD value (0 until enrichment lands).

**`swap` additional fields**

* **side**: `"buy"` (deployer received the queried token) or `"sell"`.
* **poolAddress**: The pool the swap went through.
* **baseTokenAddress** / **quoteTokenAddress**: token0 / token1 of the pool. Not re-oriented to the queried token — compare addresses to know which side is which.
* **baseTokenAmount** / **baseTokenAmountRaw** / **quoteTokenAmount** / **quoteTokenAmountRaw**: amounts on each leg.
* **amountUSD**: USD value of the swap.
* **swapSenderAddress**: On-chain swap sender. Often a router (Jupiter, TG bots) when the deployer trades through an aggregator.

**`transfer` additional fields**

* **direction**: `"in"` (deployer received) or `"out"` (deployer sent).
* **counterpartyAddress**: The other side of the transfer.
* **tokenAddress**: Mint of the transferred token (= the queried token).
* **amountRaw** / **amountUSD**: transferred amount.

**Top-level response**

* **data**: array of polymorphic entries as described above.
* **deployer**: the queried token's recorded deployer address, or `null` if unknown.
* **pagination**: `{ offset, limit, count, hasMore }`.

### Usage Examples

**Full feed for a Solana meme coin (GET):**

```bash theme={null}
curl -X GET "https://api.mobula.io/api/2/token/dev-history?blockchain=solana&token=Fv8HhSVUquGC8WHqmMJLp7QEZMN4cZqcZjeYUPqvbrrr&limit=50"
```

**Fee claims only:**

```bash theme={null}
curl -X GET "https://api.mobula.io/api/2/token/dev-history?blockchain=solana&token=Fv8HhSVUquGC8WHqmMJLp7QEZMN4cZqcZjeYUPqvbrrr&type=feeClaim"
```

**Paginate further:**

```bash theme={null}
curl -X GET "https://api.mobula.io/api/2/token/dev-history?blockchain=solana&token=Fv8HhSVUquGC8WHqmMJLp7QEZMN4cZqcZjeYUPqvbrrr&limit=50&offset=50"
```

#### Sample Response

```json theme={null}
{
  "data": [
    {
      "type": "feeClaim",
      "blockchain": "solana",
      "date": 1745251935000,
      "transactionHash": "5Uxxpff8iDTHM3Nu9D653aP6T2yzVbW8PfwsWBxi9ApwBAo7dbYm7ATLKBXbycAFP1yQQ1RYCByVqzzzaGNdVD6q",
      "blockHeight": 358123456,
      "instructionIndex": 2,
      "protocol": "meteoradbc",
      "creatorAddress": "82VbBzGtb8v5wFx1TM6iaMmLyRSLy8WeqA123orjHGzL",
      "quoteAddress": "So11111111111111111111111111111111111111112",
      "tokenAddress": "Fv8HhSVUquGC8WHqmMJLp7QEZMN4cZqcZjeYUPqvbrrr",
      "poolAddress": "DrKy5sCkpNSWFuUKcPn5STN7g9ghcH9GYcrMqwJxUG4W",
      "amountRaw": "10157228",
      "amountUSD": 0
    },
    {
      "type": "swap",
      "blockchain": "solana",
      "date": 1745251800000,
      "transactionHash": "4n3xM...",
      "side": "buy",
      "poolAddress": "DrKy5sCkpNSWFuUKcPn5STN7g9ghcH9GYcrMqwJxUG4W",
      "baseTokenAddress": "Fv8HhSVUquGC8WHqmMJLp7QEZMN4cZqcZjeYUPqvbrrr",
      "quoteTokenAddress": "So11111111111111111111111111111111111111112",
      "baseTokenAmount": 1234567.89,
      "baseTokenAmountRaw": "1234567890000",
      "quoteTokenAmount": 1.5,
      "quoteTokenAmountRaw": "1500000000",
      "amountUSD": 250.4,
      "swapSenderAddress": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4"
    },
    {
      "type": "transfer",
      "blockchain": "solana",
      "date": 1745251500000,
      "transactionHash": "2kPm...",
      "direction": "out",
      "counterpartyAddress": "5q54X...",
      "tokenAddress": "Fv8HhSVUquGC8WHqmMJLp7QEZMN4cZqcZjeYUPqvbrrr",
      "amountRaw": "500000000",
      "amountUSD": 42.5
    }
  ],
  "deployer": "82VbBzGtb8v5wFx1TM6iaMmLyRSLy8WeqA123orjHGzL",
  "pagination": {
    "offset": 0,
    "limit": 50,
    "count": 3,
    "hasMore": false
  }
}
```

### Error Responses

**404 — Token not found:**

```json theme={null}
{ "statusCode": 404, "message": "Token not found" }
```

**400 — Missing parameters:**

```json theme={null}
{ "statusCode": 400, "message": "Blockchain is required" }
```

```json theme={null}
{ "statusCode": 400, "message": "Token address is required" }
```

### Use Cases

* **Rug & dump detection**: see if the deployer has been selling or transferring the token out.
* **Trust scoring**: quantify fee extraction (claim frequency & amount) across all supported launchpads — Bags, Moonshot, Believe, PumpFun, etc.
* **Dev reputation**: track a creator's full activity on their coin across time in one feed.
* **Pre-trade due diligence**: check for recent unusual deployer activity before entering a position.


## OpenAPI

````yaml get /2/token/dev-history
openapi: 3.0.0
info:
  version: 1.0.0
  title: Mobula API
  description: >-
    Documentation of the Mobula API


    **Demo API**: The default server (demo-api.mobula.io) is a demo API with
    rate limits.

    For production use, please use api.mobula.io with an API key from
    https://admin.mobula.io
servers:
  - url: https://demo-api.mobula.io/api/
    description: Demo API (rate limited, for testing only)
  - url: https://api.mobula.io/api/
    description: Production API (requires API key)
security: []
tags:
  - name: V2 - Token
    description: Token details, price, security, ATH, and holder data
  - name: V2 - Market Data
    description: Market details, OHLCV history, and lighthouse metrics
  - name: V2 - Trades
    description: Token trades, enriched trades, and trade filters
  - name: V2 - Wallet
    description: Wallet positions, activity, trades, analysis, and labels
  - name: V2 - Assets
    description: Cross-chain asset details and price history
  - name: V2 - Swap
    description: Swap quoting and execution
  - name: V2 - Perps
    description: Perpetual futures quoting, execution, and positions
  - name: V2 - Bridge
    description: Cross-chain bridge quoting and intent status (Alpha Preview)
  - name: V2 - DeFi
    description: Bonding pools and pulse data
  - name: V2 - Search
    description: Universal fast search
  - name: V2 - Usage
    description: Per-key API and WebSocket usage history
  - name: V2 - Blockchains
    description: System metadata and chain listings
  - name: V2 - Prediction Markets
    description: >-
      Polymarket markets/events, wallet positions, and the full execution stack
      (auth, order build/submit/cancel, approvals, pUSD wrap/unwrap, deploy,
      deposit/withdraw, redeem). Alpha — see /api/2/pm/*.
  - name: V1 - Market Data
    description: Market prices, history, sparklines, pairs, and multi-data
  - name: V1 - Wallet
    description: Wallet portfolio, transactions, history, and NFTs
  - name: V1 - Token
    description: First buyers
  - name: V1 - Trades
    description: Market trades by pair
  - name: V1 - Metadata
    description: Token metadata, categories, trendings, and news
  - name: V1 - Assets
    description: List all assets
  - name: V1 - Search
    description: Search for assets, tokens, and pairs
  - name: V1 - DeFi
    description: Bonding pool pulse data
  - name: V1 - Blockchains
    description: Blockchain listings, pairs, and stats
  - name: V1 - Webhooks
    description: Webhook management
  - name: V1 - Feed
    description: Custom feed creation
paths:
  /2/token/dev-history:
    get:
      tags:
        - V2 - Tokens
      summary: Get a token deployer's on-chain activity feed
      description: >-
        Merged, chronological feed of the token deployer's activity: creator fee
        claims (PumpFun / PumpSwap / Meteora DBC — which covers Bags, Moonshot,
        Believe, and other DBC-based launchpads), swaps the deployer executed on
        the queried token, and direct transfers of the token to or from the
        deployer. Rows are polymorphic — use the `type` discriminator.
      parameters:
        - schema:
            type: string
            description: Blockchain chain ID (e.g., "solana:solana")
          required: false
          description: Blockchain chain ID (e.g., "solana:solana")
          name: chainId
          in: query
        - schema:
            type: string
            description: Token mint address
          required: false
          description: Token mint address
          name: address
          in: query
        - schema:
            type: number
            nullable: true
            minimum: 0
            description: 'Offset for pagination (default: 0)'
          required: false
          description: 'Offset for pagination (default: 0)'
          name: offset
          in: query
        - schema:
            type: number
            minimum: 1
            maximum: 200
            description: 'Page size, max 200 (default: 50)'
          required: true
          description: 'Page size, max 200 (default: 50)'
          name: limit
          in: query
        - schema:
            type: string
            enum:
              - feeClaim
              - swap
              - transfer
            description: 'Filter to a single entry type: feeClaim, swap, or transfer'
          required: false
          description: 'Filter to a single entry type: feeClaim, swap, or transfer'
          name: type
          in: query
        - schema:
            type: string
            enum:
              - pumpfun
              - pumpswap
              - meteoradbc
              - clanker
          required: false
          name: protocol
          in: query
      responses:
        '200':
          description: Merged dev history response
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      anyOf:
                        - type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - feeClaim
                            blockchain:
                              type: string
                              description: Friendly blockchain name, e.g. "solana".
                            date:
                              type: number
                              description: Event timestamp (ms since epoch).
                            transactionHash:
                              type: string
                              description: On-chain transaction signature / hash.
                            blockHeight:
                              type: number
                              nullable: true
                              description: Block height / slot, null if unknown.
                            instructionIndex:
                              type: number
                              description: >-
                                Stable index of the claim instruction within the
                                tx.
                            protocol:
                              type: string
                              enum:
                                - pumpfun
                                - pumpswap
                                - meteoradbc
                                - clanker
                              description: 'Source protocol: pumpfun, pumpswap, meteoradbc.'
                            creatorAddress:
                              type: string
                              description: >-
                                Address that received the claimed fees (the
                                deployer).
                            quoteAddress:
                              type: string
                              description: >-
                                Mint address the claim is denominated in (wSOL,
                                USDC, …).
                            tokenAddress:
                              type: string
                              nullable: true
                              description: >-
                                Source coin mint if the protocol has per-pool
                                vaults (meteoradbc). Null for per-creator
                                vaults.
                            poolAddress:
                              type: string
                              nullable: true
                              description: >-
                                Source pool address if available; null for
                                per-creator vaults.
                            amountRaw:
                              type: string
                              description: Amount claimed in base units of `quoteAddress`.
                            amountUSD:
                              type: number
                              description: >-
                                USD value at claim time (0 until enrichment
                                lands).
                          required:
                            - type
                            - blockchain
                            - date
                            - transactionHash
                            - blockHeight
                            - instructionIndex
                            - protocol
                            - creatorAddress
                            - quoteAddress
                            - tokenAddress
                            - poolAddress
                            - amountRaw
                            - amountUSD
                        - type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - swap
                            blockchain:
                              type: string
                              description: Friendly blockchain name.
                            date:
                              type: number
                              description: Swap timestamp (ms since epoch).
                            transactionHash:
                              type: string
                            side:
                              type: string
                              enum:
                                - buy
                                - sell
                              description: >-
                                From the deployer's perspective on the queried
                                token — "buy" means they ended up with more.
                            poolAddress:
                              type: string
                            baseTokenAddress:
                              type: string
                              description: >-
                                token0 of the pool (not re-oriented to the
                                queried token).
                            quoteTokenAddress:
                              type: string
                              description: token1 of the pool.
                            baseTokenAmount:
                              type: number
                            baseTokenAmountRaw:
                              type: string
                            quoteTokenAmount:
                              type: number
                            quoteTokenAmountRaw:
                              type: string
                            amountUSD:
                              type: number
                            swapSenderAddress:
                              type: string
                              nullable: true
                              description: >-
                                On-chain swap sender. Often the router (Jupiter
                                / TG bot) rather than the deployer.
                          required:
                            - type
                            - blockchain
                            - date
                            - transactionHash
                            - side
                            - poolAddress
                            - baseTokenAddress
                            - quoteTokenAddress
                            - baseTokenAmount
                            - baseTokenAmountRaw
                            - quoteTokenAmount
                            - quoteTokenAmountRaw
                            - amountUSD
                            - swapSenderAddress
                        - type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - transfer
                            blockchain:
                              type: string
                            date:
                              type: number
                            transactionHash:
                              type: string
                            direction:
                              type: string
                              enum:
                                - in
                                - out
                              description: '"in" = deployer received, "out" = deployer sent.'
                            counterpartyAddress:
                              type: string
                              description: The other side of the transfer.
                            tokenAddress:
                              type: string
                              description: >-
                                Mint of the transferred token (= the queried
                                token).
                            amountRaw:
                              type: string
                            amountUSD:
                              type: number
                          required:
                            - type
                            - blockchain
                            - date
                            - transactionHash
                            - direction
                            - counterpartyAddress
                            - tokenAddress
                            - amountRaw
                            - amountUSD
                  deployer:
                    type: string
                    nullable: true
                    description: Queried token's recorded deployer address, if any.
                  pagination:
                    type: object
                    properties:
                      offset:
                        type: number
                      limit:
                        type: number
                      count:
                        type: number
                      hasMore:
                        type: boolean
                    required:
                      - offset
                      - limit
                      - count
                      - hasMore
                required:
                  - data
                  - deployer
                  - pagination

````