Get SPL Token Metadata
Fetch metadata for any SPL token on Solana. Returns name, symbol, decimals, and Token-2022 extension info including safety flags (permanent delegate, transfer hook, transfer fee). Ideal for: token discovery, safety checks, display formatting.
Catalog action Solana Onchain
Fetch metadata for any SPL token on Solana. Returns name, symbol, decimals, and Token-2022 extension info including safety flags (permanent delegate, transfer hook, transfer fee). Ideal for: token discovery, safety checks, display formatting.
At a Glance
| Field | Value |
|---|---|
| Action ID | get-spl-token-metadata |
| Category | Solana Onchain |
| Connector | Not required |
| Requires gas | No |
| Funds movement | None declared |
| Tags | solana, spl, token, metadata, query, read, info |
Payload Schema
| Field | Type | Required | Description |
|---|---|---|---|
tokenMintAddress | string | Yes | The token's contract address on Solana. You can find this on the token's page on Solscan or Jupiter. |
chainId | number | Yes | Solana network (Mainnet or Devnet) |
Result Schema
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Token name (e.g. 'USD Coin') |
symbol | string | Yes | Token symbol (e.g. 'USDC') |
decimals | number | Yes | Token decimal places |
tokenProgram | string | Yes | Token program: 'spl-token' for classic SPL, 'token-2022' for Token Extensions |
tokenMintAddress | string | Yes | Token mint address (base58 encoded) |
chainId | number | Yes | Solana chain ID |
logoUrl | string | null | Yes | Token logo URL, or null if not available |
hasPermanentDelegate | boolean | Yes | Whether the token has a permanent delegate extension (Token-2022 only) |
hasTransferHook | boolean | Yes | Whether the token has a transfer hook extension (Token-2022 only) |
transferHookProgramId | string | null | Yes | Transfer hook program ID if hasTransferHook is true, otherwise null |
hasTransferFee | boolean | Yes | Whether the token has a transfer fee extension (Token-2022 only) |
transferFeeBps | number | null | Yes | Transfer fee in basis points if hasTransferFee is true, otherwise null |
Examples
json{ "type": "get-spl-token-metadata", "payload": { "tokenMintAddress": "0x0000000000000000000000000000000000000000", "chainId": 7565164 }, "children": []}
bashcurl -X POST "https://api.b3os.org/v1/actions/get-spl-token-metadata/test" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "inputs": { "tokenMintAddress": "0x0000000000000000000000000000000000000000", "chainId": 7565164 }}'
Payload fields can use workflow expressions such as {{$trigger.body.amount}}, {{$nodes.fetch.result.price}}, and {{$props.asset}} when the value should come from a trigger, prior node, or reusable workflow prop.
