- Skill ID
- upbit-official/upbit-agent-skills/upbit
- Publisher
- upbit-official
- Repository
- upbit-agent-skills
- Installs
- 0
- Files
- 15
- License
- Apache-2.0
- Synced
- Sep 23, 2026
Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.
upbit-official/upbit-agent-skills/upbitInstalls these files- LICENSE.md
- SKILL.md
- references/account.md
- references/candles.md
- references/deposits.md
- references/glossary.md
- references/orderbooks.md
- references/orders.md
- references/pockets.md
- references/setup.md
- references/tickers.md
- references/trades.md
- references/trading-pairs.md
- references/travel-rule.md
- references/withdraws.md
What this skill tells the agent
Upbit Skill
Use the upbit CLI binary for all Upbit REST API interactions.
Language Behavior
Detect the user's language and respond accordingly:
- Korean user: respond in Korean, use Korean terminology from
references/glossary.md(e.g., 주문, 매수, 잔고, 체결, 호가) - English user: respond in English, use English terminology from the same glossary
- Mixed/ambiguous: follow the language of the most recent message
When explaining API fields or command output, always translate field names into the user's language using the glossary. For example, if the user asks in Korean, explain bid as "매수", ask as "매도", balance as "보유 잔고".
Load references/glossary.md when translating terminology or explaining response fields.
Setup
If upbit is not installed or credentials are not configured, load references/setup.md and follow the steps there.
Check if upbit is available and meets the minimum version:
upbit --versionRequires v1.0.0+. If older, upgrade before continuing:
npm install -g @upbit-official/upbit-cli@latestRequired Request Header
Always append `--header 'X-Upbit-Initiator: upbit-cli-skill/{metadata.version}'` as the last argument to every upbit command that calls the API. This applies to all API-calling invocations — both public (tickers, orderbooks, trades, candles, trading-pairs) and private (accounts, orders, withdraws, deposits, travel-rule, api-keys, wallet-status, pockets) endpoints.
upbit <resource> <command> [flags] --header 'X-Upbit-Initiator: upbit-cli-skill/{metadata.version}'`{metadata.version}` is a placeholder — never send it literally. Before running any command, substitute {metadata.version} with this skill's version from the metadata.version field in the front matter above.
Excluded (these do not make API requests, so omit the header): upbit --version, upbit config set, upbit config show, upbit config path, and installation/shell snippets (npm install, node --version, curl, export ...).
Authentication
Private endpoints require credentials. Configure via the CLI (recommended):
upbit config setCredentials are saved to ~/.upbit/config and automatically used for all CLI commands.
Alternatively, set via environment variables:
export UPBIT_ACCESS_KEY=<your-access-key>
export UPBIT_SECRET_KEY=<your-secret-key>Or pass inline per command:
upbit <resource> <command> --access-key <key> --secret-key <secret> --header 'X-Upbit-Initiator: upbit-cli-skill/{metadata.version}'Private (require auth): accounts, api-keys, orders, withdraws, deposits, travel-rule, wallet-status, pockets Public (no auth): tickers, orderbooks, trades, candles, trading-pairs
Safety Rule — Write Operations
Before executing any write operation, show the full command and ask the user to type CONFIRM.
Write operations:
orders create,orders cancel,orders cancel-and-new,orders cancel-by-uuids,orders cancel-openwithdraws create-withdrawal,withdraws create-krw-withdrawal,withdraws cancel-withdrawaldeposits deposit-krw,deposits create-coin-addresstravel-rule verify-deposit-by-txid,travel-rule verify-deposit-by-uuidpockets transfer,pockets universal-transfer
orders test-create is a dry-run — no CONFIRM needed.
Upbit Domain Concepts
Market Pair Format
- Field name:
market - Format:
{QUOTE}-{BASE}— quote currency first, base asset second - Delimiter: hyphen (
-), not slash (/) - Always uppercase
- Quote currencies:
KRW,BTC,USDT - Not
{BASE}-{QUOTE}or{BASE}/{QUOTE}— Upbit reverses the conventional order used by most exchanges
| Market | Meaning |
|---|---|
KRW-BTC | BTC priced in KRW; Upbit uses KRW-BTC, not BTC/KRW or BTC-KRW |
KRW-ETH | ETH priced in KRW |
KRW-XRP | XRP priced in KRW |
BTC-ETH | ETH priced in BTC |
USDT-XRP | XRP priced in USDT |
Account Balance Fields
Each entry from accounts list:
| Field | Description |
|---|---|
currency | Asset code (e.g., KRW, BTC, ETH) |
balance | Available balance (not in any open order) |
locked | Balance currently locked in open orders or withdrawals |
avg_buy_price | Average purchase price (decimal string) |
unit_currency | Currency avg_buy_price is denominated in (e.g., KRW, BTC) |
Total holdings = balance + locked
Pockets
Korea (KR) only — pockets are available exclusively on Upbit Korea. They are not supported on the global service.
A pocket lets a user split assets within a single Upbit account for separate purposes. Each pocket is identified by a uuid.
- Main pocket: created automatically with the account. Handles the account's default trading including external deposits/withdrawals, and can hold master authority over every pocket in the account.
- Sub-pocket: created by the user for a specific purpose. Operates independently within its API key's permission scope, but external deposits/withdrawals are blocked. To move a sub-pocket's assets out, use its own key with
pockets transfer.
Every pockets command requires one of two permissions, and each is only available on one pocket type — so a single API key can never call both groups:
| Commands | Permission | Callable from |
|---|---|---|
list, retrieve-balance, list-api-keys, universal-transfer, list-universal-transfers | 포켓관리 (pocket management) | Main pocket key only |
transfer, list-transfers | 자산이전 (asset transfer) | Sub-pocket key only |
Note that retrieve-balance reads a sub-pocket's balance but is still called with the main pocket key. See `references/pockets.md` for full command syntax and parameters, and https://docs.upbit.com/kr/reference/pocket-overview for the official overview.
Order Types (ord_type)
ord_type | Description | Required | Must NOT set |
|---|---|---|---|
limit | Limit order at specified price | price, volume | — |
price | Market buy — spend a fixed quote amount | price | volume |
market | Market sell — sell a fixed base amount | volume | price |
best | Best available price (see rules below) | see below | see below |
`best` order rules:
time_in_forcemust beiocorfok(NOTpost_only)- If
side=bid(buy): requiresprice, must omitvolume - If
side=ask(sell): requiresvolume, must omitprice
`post_only` + `smp_type` conflict: these two are mutually exclusive — do not set both.
Side Values
side | Meaning |
|---|---|
bid | Buy |
ask | Sell |
Order States
| State | Meaning |
|---|---|
wait | Pending execution |
watch | Pending reservation (stop order) |
done | Fully executed |
cancel | Cancelled |
Order Fee Fields
| Field | Description |
|---|---|
reserved_fee | Total fee reserved when order was placed |
paid_fee | Fee already charged (for partial fills) |
remaining_fee | reserved_fee - paid_fee |
locked | Amount locked for this order (quote currency for buys, base asset for sells) |
First-Time Order Placement
Before placing an order on an unfamiliar market, run orders retrieve-chance to confirm:
- Minimum order amount (
bid.min_total,ask.min_total) - Supported order types (
bid_types,ask_types) - Fee rates (
bid_fee,ask_fee,maker_bid_fee,maker_ask_fee)
upbit orders retrieve-chance --market "KRW-BTC" --header 'X-Upbit-Initiator: upbit-cli-skill/{metadata.version}'Withdrawal — Multi-Chain Assets
For assets available on multiple networks (e.g., USDT), net_type is required to specify the blockchain. Use withdraws list-coin-addresses to see supported networks and addresses before withdrawing:
Use this skill in a project
Open any RiverX project, search the Skills panel for upbit-official/upbit-agent-skills/upbit, and install it in one click.
