# GET /v1/solana/token/{mint}

Is this Solana token safe to hold or receive? A SAFE, WARN or DANGER verdict.

## Purpose

Decodes an SPL Token or Token-2022 mint (including its extensions) and returns the token program, decimals, exact supply, the authorities, the extension names and a verdict with every matched reason code. DANGER: permanent_delegate, transfer_hook, pausable, default_account_frozen. WARN: mint_authority_set, freeze_authority_set, transfer_fee, mint_close_authority, unknown_extension. SAFE has no reasons. The verdict is the highest level matched. Every figure is read at finalized commitment, so it can lag the tip of the chain by about 13 seconds; `meta.slot` is the context slot of the read. It returns no holders, liquidity, price or metadata.

## When to use

Before accepting or swapping into an unfamiliar token, to see whether its mint can freeze, mint more, move or tax balances.

## When not to use

Not a price, liquidity or holder lookup and not an audit of the token's project; it reads only the mint account.

## Parameters

| Name | In | Required | Description | Constraints | Example |
|---|---|---|---|---|---|
| `mint` | path | yes | Mint address of the token. | A base58 string that decodes to exactly 32 bytes (a Solana public key); anything else is a 400 | `EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v` |

## Request example

```sh
curl -s "https://api.criptonlabs.com/v1/solana/token/EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
```

## Response example (200)

```json
{
  "verdict": "WARN",
  "reasons": [
    "mint_authority_set",
    "freeze_authority_set"
  ],
  "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
  "token_program": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
  "decimals": 6,
  "supply": "9150000000000000",
  "mint_authority": "BJE5MMbqXjVwjAF7oxwPYXnTXDyspzZyt4vwenNw5ruG",
  "freeze_authority": "7dGbd2QZcCKcTndnHcTL8q7SMVXAkp688NTQYwrRCrar",
  "extensions": [],
  "transfer_fee": null,
  "meta": {
    "slot": 456943158,
    "commitment": "finalized",
    "as_of": "2026-10-14T12:00:03.000Z",
    "age_seconds": 0,
    "cache": "miss",
    "stale": false
  }
}
```

## Errors

- 400 [invalid-parameters](https://api.criptonlabs.com/errors/invalid-parameters.md)
- 404 [solana-mint-not-found](https://api.criptonlabs.com/errors/solana-mint-not-found.md)
- 429 [rate-limited](https://api.criptonlabs.com/errors/rate-limited.md)
- 503 [upstream-unavailable](https://api.criptonlabs.com/errors/upstream-unavailable.md)

## Caching

Fresh for 60 seconds; on upstream failure the last good value is served for up to 600 seconds (`meta.stale` is `true`), then the service answers 503. See the [freshness guide](https://api.criptonlabs.com/docs/guides/freshness.md).

## Rate limit

Tier `expensive`. See the [rate-limits guide](https://api.criptonlabs.com/docs/guides/rate-limits.md).

## MCP tool

The MCP tool `solana_token` returns the same data. See the [MCP quickstart](https://api.criptonlabs.com/docs/guides/mcp-quickstart.md).
