---
title: "Get a Solana token safety card for a pump.fun or any SPL mint"
method: GET
path: "/v1/mint/{mint}"
tags: ["paid"]
---

# Get a Solana token safety card for a pump.fun or any SPL mint

`GET /v1/mint/{mint}`

## Request

- Base URL: `https://api.loopholetape.com`
- URL: `https://api.loopholetape.com/v1/mint/{mint}`
- Auth: none required

Use to check one Solana token in full: every measured field and calibrated odds for a pump.fun memecoin, a thin card for an older mint or any other SPL mint; for a quick pre-trade check use the $0.005 compact check (GET /v1/check/mint). Risk card for ONE pump.fun mint, always HTTP 200 for a valid base58 mint. coverage=full when the mint is in our live window: holders (count, top-5 share, HHI, create-slot bundle / insider / creator shares), rug/close flags with first-seen times, curve truth (graduation = curve witnessed >= 84 SOL), demand (unique buyers, buys/sells 60 s, net SOL), the creator's record at launch (no look-ahead), warm-launch (observed creator-funding links) label, exit signals, calibrated P(rug within 5 min) for young mints and P(true graduation). coverage=thin otherwise: our resolved launch record if any + current bonding-curve state and mint / freeze authority from RPC + creator prior. Any Solana SPL mint, not only pump.fun, gets the thin card: mint / freeze authority and the Token-2022 extensions that let someone seize, block or tax holders' tokens (permanent delegate, transfer hook, transfer fee). Every card carries status, risk_label, confidence, a why[] list and market base rates. Nulls carry a reason; nothing is guessed. Every card also carries market (USD price, market cap = price x total supply as pump.fun and DexScreener show it, the curve's SOL liquidity in SOL and USD, the SOL/USD used and its time) and authorities (mint, freeze and metadata mutability: the pump.fun program rule on live mints, read on-chain on thin cards). A full card also carries the cohorts block: the supply held by the dev, bundlers and snipers with their wallets and SOL in and out of the curve, and top-1 and top-10 share (/v1/labels, cohorts), with the holders' reputation across tokens: the share held by known dumpers, repeat bundlers and wallets new to our tape (/v1/labels, reputation).

## Path parameters

- `mint` string, required

## Response `200`

Paid response (header PAYMENT-RESPONSE carries the settlement)

- Envelope
  - `ok` boolean, required
  - `schema_version` '2.0', required
  - `generated_at` string, date-time, required
  - `t` number, required: unix seconds at generation
  - `coverage` 'full' | 'thin', required: the mint is inside our live window (created while our captur / thin = the mint is not in the live window (older than ~2 h of silen
  - `data` object, required
  - `meta` object, required
    - `source` string
    - `version` string
    - `feed_lag_s` number, nullable: seconds between the newest event in our tape and now (the age of the newest event we ingested; it does not say whether the capture runs behind the chain, see chain_lag_s)
    - `is_stale` boolean: the ingest age (feed_lag_s) exceeds the route's freshness limit (5 s for compact risk checks, 30 s otherwise); a paid or keyed pump.fun request is also refused above 5 s of estimated chain lag when the gate enforces (see chain_lag_s, tape_behind), which this flag does not show
    - `chain_lag_s` number, nullable: estimated seconds the newest slot in our pump.fun tape is behind the Solana RPC's processed tip (slots_behind x the measured slot time, to 0.1 s); null when the tip is unknown; absent on Robinhood Chain answers
    - `slots_behind` integer, nullable: estimated slots between the newest slot in our pump.fun tape and the Solana RPC's processed tip (a tip read every 30 s, carried forward by the wall time since at the slot rate our own reads measure); 0 when the tape is at or ahead of the estimate; null when the tip is unknown
    - `tape_behind` boolean, nullable: true when the estimated chain_lag_s is above 5 s, false within 5 s, null when there is no tip to compare; on pump.fun answers only
    - `last_slot` integer, nullable
    - `price_usd` number, nullable
    - `next` object: related resources worth calling next (paths relative to base_url)
    - `disclaimer` string

## Other responses

- `402`: Payment required (x402 v2): header PAYMENT-REQUIRED = base64 of the body
- `404`: not found or invalid: mint is not base58 SPL mint address (32-44 chars); pump.fun mints usually end in 'pump' ({ok:false, error, hint})
- `422`: Validation Error

---

[API](https://skmtc.dev/loopholetape/apis/loophole-tape.md) · [All operations](https://skmtc.dev/loopholetape/apis/loophole-tape/llms.txt) · [OpenAPI document](https://skmtc.dev/loopholetape/apis/loophole-tape/revisions/eea099d70151?raw)
