# Gdex Token Import

> Import user-defined custom tokens so they appear in token details, balances, and portfolio across the platform

- Skill: `gemachdao/gdex-token-import` (Agent Skill)
- Install (CLI): `npx skillmds@latest add gemachdao/gdex-token-import`
- Raw SKILL.md: https://api.skillmd.com/api/skills/gemachdao/gdex-token-import/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: GemachDAO (https://skillmd.com/u/gemachdao)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/gemachdao/gdex-token-import

---


# GDEX: Token Import

Register a user-defined custom token so it is recognised by the backend's
token-details, balances, and portfolio endpoints. Useful for long-tail tokens
that are not yet indexed.

## When to Use

- A user wants to see a brand-new (or otherwise un-indexed) token in their
  portfolio or token-search results
- Pre-registering a token before launch so trading UI can resolve metadata

## Prerequisites

- `@gdexsdk/gdex-skill` installed
- Authenticated via shared API key or wallet sign-in — see
  **gdex-authentication**
- The token's on-chain address (contract address on EVM, mint address on
  Solana, object id on Sui)

## Backend Endpoints

| Method | Path | Purpose |
|--------|------|---------|
| `POST` | `/v1/import_token` | Register a user-imported custom token |

## SDK Usage

```typescript
import { GdexSkill, buildImportTokenComputedData } from '@gdexsdk/gdex-skill';

const skill = new GdexSkill();
skill.loginWithApiKey(process.env.GDEX_API_KEY!);

// Structured shape — SDK builds computedData internally
await skill.importToken({
  tokenAddress: '0xCustomToken',
  chainId: 8453,
  managed: {
    apiKey: process.env.GDEX_API_KEY!,
    walletAddress: '0xWallet',
    sessionPrivateKey: '0x…',
    userId: '0xWallet',
  },
});

// Or raw shape — caller pre-built computedData
await skill.importToken({
  computedData: buildImportTokenComputedData({
    apiKey: process.env.GDEX_API_KEY!,
    walletAddress: '0xWallet',
    sessionPrivateKey: '0x…',
    userId: '0xWallet',
    tokenAddress: '0xCustomToken',
    chainId: '8453',
  }),
  chainId: 8453,
});
```

## Notes

- `import_token` uses managed-custody **encrypted `computedData`**:
  ABI `['import_token', [tokenAddress, chainId, nonce]]`,
  sig message `import_token-${userId}-${data}`.
- The backend deduplicates imports per `(userId, chain, tokenAddress)`.
- After import, queries such as `getTokenDetails`, `getBalances`, and
  `getPortfolio` will start returning data for the token (subject to
  indexer latency).

