# GET /v1/solana/transfer-readiness

Will this Solana transfer succeed? A verdict for SOL or an SPL or Token-2022 token.

## Purpose

Checks one planned transfer of SOL or of an SPL Token or Token-2022 token against finalized on-chain state and returns `ready`, every matched blocker and warning code, and the derived figures: the raw amount, whether the destination token account must be created and its rent, the Token-2022 transfer fee and the net amount. Blockers: insufficient_balance, insufficient_sol_for_fees (5,000 lamports for one signature, priority fees excluded, plus the account rent when the destination token account is missing, plus the amount for SOL), source_below_rent_exempt, destination_below_rent_exempt, source_frozen, destination_frozen, non_transferable, mint_paused. Warnings: destination_off_curve, memo_required. The rent-exempt minimum is read live and never hardcoded. 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. The amount is not part of any cache key, so the verdict is computed per request.

## When to use

Before building or signing a Solana transfer, to learn whether it will fail and what it will cost in rent and fees.

## When not to use

Not a simulation of the exact transaction (no priority fee, no program logic), not a token price or holder lookup, and not a way to read raw accounts.

## Parameters

| Name | In | Required | Description | Constraints | Example |
|---|---|---|---|---|---|
| `source` | query | yes | Sending wallet. | A base58 string that decodes to exactly 32 bytes (a Solana public key); anything else is a 400 | `83astBRguLMdt2h5U1Tpdq5tjFoJ6noeGwaY3mDLVcri` |
| `destination` | query | yes | Receiving wallet (not its token account). | A base58 string that decodes to exactly 32 bytes (a Solana public key); anything else is a 400 | `A1TMhSGzQxMr1TboBKtgixKz1sS6REASMxPo1qsyTSJd` |
| `mint` | query | yes | `SOL` for native SOL, or the mint address of an SPL Token or Token-2022 token. | `SOL` or a base58 string that decodes to exactly 32 bytes (a solana public key); anything else is a 400 | `SOL` |
| `amount` | query | yes | Amount to send in UI units (SOL or tokens, not lamports or raw units). | Decimal string strictly greater than 0; at most 9 decimals for SOL and at most the mint's decimals for a token (a mint read decides) | `0.5` |

## Request example

```sh
curl -s "https://api.criptonlabs.com/v1/solana/transfer-readiness?source=83astBRguLMdt2h5U1Tpdq5tjFoJ6noeGwaY3mDLVcri&destination=A1TMhSGzQxMr1TboBKtgixKz1sS6REASMxPo1qsyTSJd&mint=SOL&amount=0.5"
```

## Response example (200)

```json
{
  "ready": true,
  "blockers": [],
  "source": "83astBRguLMdt2h5U1Tpdq5tjFoJ6noeGwaY3mDLVcri",
  "destination": "A1TMhSGzQxMr1TboBKtgixKz1sS6REASMxPo1qsyTSJd",
  "mint": "SOL",
  "amount": "0.5",
  "amount_raw": "500000000",
  "decimals": 9,
  "token_program": null,
  "warnings": [],
  "requires_ata_creation": false,
  "ata_creation_lamports": null,
  "transfer_fee": null,
  "net_amount": "500000000",
  "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 4 seconds; on upstream failure the last good value is served for up to 30 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_transfer_readiness` returns the same data. See the [MCP quickstart](https://api.criptonlabs.com/docs/guides/mcp-quickstart.md).
