
Upbit
- 1.2k installs
- 18 repo stars
- Updated July 27, 2026
- starchild-ai-agent/official-skills
CLI access to the Upbit crypto exchange API: query market data, place/cancel orders, check balances, and manage deposits/withdrawals across KR/SG/ID/TH.
About
upbit provides CLI access to the Upbit cryptocurrency exchange API, letting a developer query market data, place and cancel orders, check balances, and manage deposits and withdrawals across the KR, SG, ID, and TH environments. It includes IP allowlisting, credential handling, and safety confirmations on write operations. A solo builder reaches for it to automate spot trading or build a trading bot or dashboard against Upbit.
- Upbit market data and order management
- Multi-region (KR/SG/ID/TH)
- Balance and deposit/withdrawal ops
- Safety confirmations on write operations
Upbit by the numbers
- 1,161 all-time installs (skills.sh)
- +61 installs in the week ending Jul 28, 2026 (Skillselion tracking)
- Ranked #119 of 1,136 Finance & Trading skills by installs in the Skillselion catalog
- Security screen: HIGH risk (skills.sh audit)
- Data as of Jul 28, 2026 (Skillselion catalog sync)
npx skills add https://github.com/starchild-ai-agent/official-skills --skill upbitAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1.2k |
|---|---|
| repo stars | ★ 18 |
| Security audit | 2 / 3 scanners passed |
| Last updated | July 27, 2026 |
| Repository | starchild-ai-agent/official-skills ↗ |
What it does
CLI access to the Upbit crypto exchange API: query market data, place/cancel orders, check balances, and manage deposits/withdrawals across KR/SG/ID/TH.
Who is it for?
Automating trading against the Upbit exchange
Skip if: Non-Upbit exchanges
What you get
- market data queries
- order placement
Files
Upbit Skill
Use the upbit CLI binary for all Upbit REST API interactions.
⚠️ Onboarding — when credentials are missing
When UPBIT_ACCESS_KEY / UPBIT_SECRET_KEY are not set, or an authenticated command returns 401:
In a single turn, do ALL of the following in this exact order:
1. Call bash("curl -s https://api.ipify.org") to get the outbound IP. 2. Write the setup instructions below in your reply text (substitute <ip> with the real IP from step 1):
---
Step 1 — Allowlist this IP on Upbit
Upbit only accepts API calls from IP addresses you explicitly allow. Add this IP:
<ip>Step 2 — Create an API key
1. Log in to upbit.com → profile → API 관리 (API Management) 2. Click API 키 발급 (Issue API Key) 3. When prompted for an IP, paste <ip> 4. Enable scopes:
- 자산조회 (View assets) — always required
- 주문조회 (View orders) — required
- 주문생성 (Place orders) — required to trade
- 출금 (Withdraw) — only if you want withdrawal support
5. Complete 2FA + email verification, then copy your Access Key and Secret Key
Step 3 — Enter your keys
Enter your Access Key and Secret Key in the secure input card below.
---
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:
upbit --versionAuthentication
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>Private (require auth): accounts, api-keys, orders, withdraws, deposits, travel-rule, wallet-status 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-uuid
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
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"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:
upbit withdraws list-coin-addresses --currency "USDT"Withdrawal — Secondary Address
Some assets require a secondary address (Destination Tag, Memo, etc.) in addition to the main address. Always check the registered address via withdraws list-coin-addresses to see if secondary_address is present before sending.
Withdrawal — Address Not Registered (withdraw_address_not_registered)
When withdraws create-withdrawal returns a 400 error with name: withdraw_address_not_registered, the address has not been registered in the Upbit Open API withdrawal allowlist.
To register a withdrawal address, visit the allowlist management page for your environment:
| Environment | URL |
|---|---|
| KR | https://www.upbit.com/mypage/open_api_management/withdraw_access_register |
| SG | https://sg.upbit.com/mypage/open_api_management/withdraw_access_register |
| ID | https://id.upbit.com/mypage/open_api_management/withdraw_access_register |
| TH | https://th.upbit.com/mypage/open_api_management/withdraw_access_register |
After registering, run withdraws list-coin-addresses to confirm the address appears before retrying.
Deposit / Withdraw States
| State | Meaning |
|---|---|
PROCESSING | In progress |
ACCEPTED | Completed |
CANCELLED | Cancelled |
REJECTED | Rejected |
TRAVEL_RULE_SUSPECTED | Awaiting Travel Rule verification |
REFUNDING | Refund in progress |
REFUNDED | Refund completed |
When a deposit is in TRAVEL_RULE_SUSPECTED state, use travel-rule commands to verify.
Wallet Status
wallet-status list returns per-asset network status:
wallet_state | Meaning |
|---|---|
working | Both deposits and withdrawals available |
withdraw_only | Deposits suspended |
deposit_only | Withdrawals suspended |
paused | Both suspended |
unsupported | Not supported |
Candle Units & Limits
- Minute candles: supported units are
1, 3, 5, 10, 15, 30, 60, 240only - Second candles: data retention is 3 months maximum (older queries return empty array)
count: default 1, max 200 per request
Trade Pagination
count: max 500 per requestcursor: passsequential_idfrom last result to page forwarddays_ago: integer 1–7 (UTC-based day offset)
Ticker Key Fields
| Field | Description |
|---|---|
trade_price | Current (last) price |
acc_trade_price_24h | 24-hour accumulated trade value |
acc_trade_volume_24h | 24-hour accumulated trade volume |
change | RISE, EVEN, or FALL vs. previous day close |
signed_change_price | Signed absolute change (negative if falling) |
highest_52_week_price / lowest_52_week_price | 52-week range |
Price Direction Enum (change, ask_bid)
change value | Meaning |
|---|---|
RISE | Price higher than previous close |
EVEN | Same as previous close |
FALL | Price lower than previous close |
ask_bid value | Meaning |
|---|---|
ASK | Trade initiated by a sell order |
BID | Trade initiated by a buy order |
Units & Formats
| Value | Unit | Format |
|---|---|---|
volume | Base asset quantity | Decimal string (e.g., "0.01") |
price (limit) | Per-unit price in quote currency | Decimal string (e.g., "140000000") |
price (market buy) | Total quote amount to spend | Decimal string (e.g., "10000") |
| Fee fields | Quote currency amount | Decimal string |
timestamp | Milliseconds since epoch | Integer |
created_at / done_at | ISO 8601 with KST offset | String (e.g., 2024-01-01T09:00:00+09:00) |
trade_date | UTC date | String yyyyMMdd |
trade_time | UTC time | String HHmmss (24-hour) |
| Fee rates | Decimal (0.05% = "0.0005") | Decimal string |
Day boundaries (opening_price, acc_trade_price, etc.) are based on UTC 00:00, not KST.
Command Reference
When you need detailed flag information for a resource, read the corresponding reference file.
| Resource | Subcommands | Reference |
|---|---|---|
orders | create, test-create, retrieve, list-open, list-closed, list-by-uuids, cancel, cancel-and-new, cancel-by-uuids, cancel-open, retrieve-chance | `references/orders.md` |
tickers | list-by-quote-currencies, list-by-trading-pairs | `references/tickers.md` |
candles | list-minutes, list-days, list-weeks, list-months, list-years, list-seconds | `references/candles.md` |
orderbooks | list, list-instruments | `references/orderbooks.md` |
trades | list | `references/trades.md` |
trading-pairs | list | `references/trading-pairs.md` |
withdraws | retrieve, list, cancel-withdrawal, create-withdrawal, create-krw-withdrawal, list-coin-addresses, retrieve-chance | `references/withdraws.md` |
deposits | retrieve, list, create-coin-address, deposit-krw, list-coin-addresses, retrieve-chance, retrieve-coin-address | `references/deposits.md` |
travel-rule | list-vasps, verify-deposit-by-txid, verify-deposit-by-uuid | `references/travel-rule.md` |
accounts / api-keys / wallet-status | list | `references/account.md` |
| Output & Filtering | --format, --transform, GJSON, debug, auto-paging | `references/output.md` |
| Korean ↔ English Glossary | Term translations, field name Korean ↔ English mapping | `references/glossary.md` |
| CLI Setup & Credentials | Installation, environment selection, API key setup, config set | `references/setup.md` |
For flags not listed in reference files, run: upbit <resource> <command> --help
Environment
upbit accounts list # kr (default)
upbit accounts list --environment sg # sg | id | th
upbit accounts list --base-url <url> # custom base URLApache License Version 2.0, January 2004 http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
(a) You must give any other recipients of the Work or Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.
Copyright 2026 Upbit
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Accounts
Get Account Balances
Auth required
upbit accounts list---
Api Keys
List API Keys
Auth required
upbit api-keys list---
Wallet Status
Get Deposit/Withdrawal Service Status
Auth required
upbit wallet-status list---
Candles
List Second Candles
| Name | Required | Description |
|---|---|---|
market | ✓ | Trading pair code to query. |
to | End time of the query range. | |
count | Number of candles to retrieve. |
upbit candles list-seconds \
--market "KRW-BTC"---
List Minute Candles
| Name | Required | Description |
|---|---|---|
unit | ✓ | Candle unit in minutes. — 1, 3, 5, 10, 15, 30, 60, 240 |
market | ✓ | Trading pair code to query. |
to | End time of the query range. | |
count | Number of candles to retrieve. |
upbit candles list-minutes \
--unit 15 \
--market "KRW-BTC"---
List Day Candles
| Name | Required | Description |
|---|---|---|
market | ✓ | Trading pair code to query. |
to | End time of the query range. | |
count | Number of candles to retrieve. | |
converting_price_unit | Currency to convert the closing price into. |
upbit candles list-days \
--market "KRW-BTC"---
List Week Candles
| Name | Required | Description |
|---|---|---|
market | ✓ | Trading pair code to query. |
to | End time of the query range. | |
count | Number of candles to retrieve. Up to 200, default: 1. |
upbit candles list-weeks \
--market "KRW-BTC"---
List Month Candles
| Name | Required | Description |
|---|---|---|
market | ✓ | Trading pair code to query. |
to | End time of the query range. If not specified, the most recent candles are returned. | |
count | Number of candles to retrieve. Up to 200, default: 1. |
upbit candles list-months \
--market "KRW-BTC"---
List Year Candles
| Name | Required | Description |
|---|---|---|
market | ✓ | Trading pair code to query. |
to | End time of the query range. ISO 8601 format. | |
count | Number of candles to retrieve. Up to 200, default: 1. |
upbit candles list-years \
--market "KRW-BTC"---
Deposits
Get Available Deposit Information
Auth required
| Name | Required | Description |
|---|---|---|
currency | ✓ | Currency code to query deposit availability for. |
net_type | ✓ | Blockchain network identifier for digital asset deposit. |
upbit deposits retrieve-chance \
--currency "BTC" \
--net-type "BTC"---
Create Deposit Address
Auth required
| Name | Required | Description |
|---|---|---|
currency | ✓ | Currency code for which to create a deposit address. |
net_type | ✓ | Network type. |
upbit deposits create-coin-address \
--currency "BTC" \
--net-type "BTC"---
Get Deposit Address
Auth required
| Name | Required | Description |
|---|---|---|
currency | ✓ | Currency code to query. |
net_type | ✓ | Blockchain network identifier. |
upbit deposits retrieve-coin-address \
--currency "BTC" \
--net-type "BTC"---
List Deposit Addresses
Auth required
upbit deposits list-coin-addresses---
Deposit KRW
Auth required
| Name | Required | Description |
|---|---|---|
amount | ✓ | KRW amount to deposit. |
two_factor_type | ✓ | Two-factor authentication method for KRW transactions. — kakao: Kakao authentication, naver: Naver authentication, hana: Hana certificate authentication |
upbit deposits deposit-krw \
--amount "10000" \
--two-factor-type "naver"---
List Deposits
Auth required
| Name | Required | Description |
|---|---|---|
currency | Currency code filter. | |
state | Deposit state filter. — PROCESSING: Processing, ACCEPTED: Completed, CANCELLED: Cancelled, REJECTED: Rejected, TRAVEL_RULE_SUSPECTED: Pending Travel Rule verification, REFUNDING: Refund in progress, REFUNDED: Refunded | |
uuids | List of UUIDs to query. | |
txids | List of transaction IDs to query. | |
limit | Number of results per request (default: 100, max: 100). | |
page | Page number for pagination. Default is 1. | |
order_by | Sort order. "desc" (newest first) or "asc" (oldest first). Default is "desc". | |
from | Cursor for pagination. | |
to | Cursor for pagination. |
upbit deposits list \
--currency "KRW"---
Get Deposit
Auth required
| Name | Required | Description |
|---|---|---|
currency | Currency code filter. | |
uuid | UUID of the deposit to query. | |
txid | Transaction ID of the deposit to query. |
upbit deposits retrieve \
--uuid "94332e99-3a87-4a35-ad98-28b0c969f830"---
Upbit Terminology Glossary / 업비트 용어 사전
Use the terms below according to the user's language. 사용자 언어에 맞게 아래 용어를 사용하라.
---
Core Trading Terms / 핵심 거래 용어
| English | 한국어 |
|---|---|
| Market / Trading pair | 페어 / 거래쌍 |
| Market pair format | {QUOTE}-{BASE} 형식 (예: KRW-BTC) — 타 거래소의 BTC/KRW 와 순서 반대 |
| Ticker / Current price | 현재가 |
| Orderbook | 호가 |
| Orderbook instruments | 호가 정책 |
| Candle (OHLCV) | 캔들 |
| Recent trades | 체결 내역 |
| Account balance | 잔고 |
| Order | 주문 |
| Trade | 체결 |
| Open / Unfilled | 미체결 |
---
Order / 주문 관련
| English | 한국어 | 비고 |
|---|---|---|
| Buy / Bid | 매수 | side=bid |
| Sell / Ask | 매도 | side=ask |
| Limit order | 지정가 | ord_type=limit |
| Market buy (by amount) | 시장가 매수 | ord_type=price, 금액 기준 |
| Market sell (by volume) | 시장가 매도 | ord_type=market, 수량 기준 |
| Best price order | 최유리 지정가 | ord_type=best |
| Order unit price | 주문 단가 | price 필드 |
| Order volume | 주문 수량 | volume 필드 |
| Time in force | 체결 조건 | time_in_force |
| IOC (Immediate or Cancel) | 즉시 체결 또는 취소 | time_in_force=ioc |
| FOK (Fill or Kill) | 전량 체결 또는 취소 | time_in_force=fok |
| Post only | 메이커 전용 | time_in_force=post_only |
| SMP (Self-Match Prevention) | 자전거래 방지 | smp_type |
| Watch order / Stop order | 예약 주문 | state=watch |
| Wait (pending) | 체결 대기 | state=wait |
| Done | 체결 완료 | state=done |
| Cancelled | 주문 취소 | state=cancel |
| Order availability / Chance | 주문 가능 정보 | 수수료율, 최소 주문 금액 등 |
| Fee | 수수료 | bid_fee (매수), ask_fee (매도) |
| Reserved fee | 예약 수수료 | reserved_fee |
| Paid fee | 지불 수수료 | paid_fee |
| Remaining fee | 잔여 수수료 | remaining_fee |
| Batch cancel | 일괄 취소 | orders cancel-open |
---
Deposits / 입금 관련
| English | 한국어 | 비고 |
|---|---|---|
| Deposit | 입금 | |
| Deposit address | 입금 주소 | |
| Network / Net type | 네트워크 | net_type 필드 |
| Two-factor authentication | 2차 인증 | two_factor_type |
| Kakao authentication | 카카오 인증 | two_factor_type=kakao |
| Naver authentication | 네이버 인증 | two_factor_type=naver |
| Hana certificate authentication | 하나 인증 | two_factor_type=hana |
| Secondary address | 보조 주소 | Destination Tag / Memo |
| Processing | 처리 중 | PROCESSING |
| Accepted / Completed | 완료 | ACCEPTED |
| Cancelled | 취소됨 | CANCELLED |
| Rejected | 반려됨 | REJECTED |
| Travel Rule suspected | 트래블룰 심사 중 | TRAVEL_RULE_SUSPECTED |
| Refunding | 반환 중 | REFUNDING |
| Refunded | 반환 완료 | REFUNDED |
---
Travel Rule / 트래블룰
| English | 한국어 | 비고 |
|---|---|---|
| Travel Rule verification | 계정주 확인 | |
| VASP list | 거래소 목록 | Virtual Asset Service Provider |
| Verify by deposit TxID | 입금 TxID 검증 | |
| Verify by deposit UUID | 입금 UUID 검증 |
---
Market Data / 시세
| English | 한국어 | 비고 |
|---|---|---|
| Trade price | 현재가 | trade_price |
| Previous closing price | 전일 종가 | prev_closing_price |
| Price direction | 등락 방향 | change: RISE / EVEN / FALL |
| Price change | 등락폭 | change_price |
| Change rate | 등락률 | change_rate |
| 52-week high/low | 52주 최고/최저 | highest_52_week_price |
| Accumulated trade value | 누적 거래대금 | acc_trade_price_24h |
| Accumulated trade volume | 누적 거래량 | acc_trade_volume_24h |
| Trade initiator | 체결 주체 | ask_bid: ASK(매도자) / BID(매수자) |
---
Account / 잔고
| English | 한국어 | 비고 |
|---|---|---|
| Balance | 보유 잔고 | balance (주문 미반영) |
| Locked balance | 잠금 잔고 | locked (주문/출금 잠김) |
| Total holdings | 총 보유량 | balance + locked |
| Average buy price | 매수 평균가 | avg_buy_price |
| Quote currency / Unit currency | 결제 화폐 | unit_currency |
---
Wallet Status / 입출금 서비스 상태
| English | 한국어 |
|---|---|
| Working | 정상 |
| Deposit only | 입금만 가능 |
| Withdraw only | 출금만 가능 |
| Paused | 점검 중 |
| Unsupported | 미지원 |
Orderbooks
Get Orderbook
| Name | Required | Description |
|---|---|---|
markets | ✓ | List of trading pairs to query. |
level | Orderbook aggregation level. Only supported for KRW markets. | |
count | Number of orderbook entries to retrieve. |
upbit orderbooks list \
--markets "KRW-BTC,KRW-ETH"---
List Orderbook Instruments
| Name | Required | Description |
|---|---|---|
markets | ✓ | List of trading pairs to query. |
upbit orderbooks list-instruments \
--markets "KRW-BTC,KRW-ETH"---
Orders
Get Available Order Info
Auth required
| Name | Required | Description |
|---|---|---|
market | ✓ | Trading pair to query. |
upbit orders retrieve-chance \
--market "KRW-BTC"---
Create Order
Auth required
| Name | Required | Description |
|---|---|---|
market | ✓ | Target trading pair for the order. |
side | ✓ | Order direction (ask=sell, bid=buy). |
volume | Order volume. | |
price | Order price or total amount. | |
ord_type | ✓ | Order type. — limit: Limit order, price: Market buy order (by total price), market: Market sell order (by volume), best: Best available price order |
identifier | Client-assigned order identifier. | |
time_in_force | Time in force condition. — fok: Fill or Kill, ioc: Immediate or Cancel, post_only: Post only (maker only) | |
smp_type | Self-Match Prevention (SMP) mode. — cancel_maker: Cancel maker order, cancel_taker: Cancel taker order, reduce: Reduce order quantity |
upbit orders create \
--market "KRW-BTC" \
--side "bid" \
--volume "1" \
--price "14000000" \
--ord-type "limit"---
Test Order Creation
Auth required
| Name | Required | Description |
|---|---|---|
market | ✓ | Target trading pair for the order. |
side | ✓ | Order direction (ask=sell, bid=buy). |
volume | Order volume. | |
price | Order price or total amount. | |
ord_type | ✓ | Order type. — limit: Limit order, price: Market buy order (by total price), market: Market sell order (by volume), best: Best available price order |
identifier | Client-assigned order identifier. | |
time_in_force | Time in force condition. — fok: Fill or Kill, ioc: Immediate or Cancel, post_only: Post only (maker only) | |
smp_type | Self-Match Prevention (SMP) mode. — cancel_maker: Cancel maker order, cancel_taker: Cancel taker order, reduce: Reduce order quantity |
upbit orders test-create \
--market "KRW-BTC" \
--side "bid" \
--volume "1" \
--price "14000000" \
--ord-type "limit"---
List Closed Orders
Auth required
| Name | Required | Description |
|---|---|---|
market | Trading pair to filter by. | |
state | Order state filter. Market buy orders can result in either cancel or done. | |
states | Order state filter (array form). "done" or "cancel". Default returns all states. | |
start_time | Start time of the query range. Max range is 7 days. | |
end_time | End time of the query range. Max range is 7 days. | |
limit | Number of results per request (default: 100, max: 1,000). | |
order_by | Sort order. "desc" (newest first) or "asc" (oldest first). Default is "desc". |
upbit orders list-closed \
--market "KRW-BTC" \
--state "done" \
--state "cancel"---
Cancel and New Order
Auth required
| Name | Required | Description |
|---|---|---|
prev_order_uuid | UUID of the order to cancel. | |
prev_order_identifier | Client-assigned identifier of the order to cancel. | |
new_ord_type | ✓ | Order type for the new order. — limit: Limit order, price: Market buy order (by total price), market: Market sell order (by volume), best: Best available price order |
new_volume | Volume for the new order. | |
new_price | Price or total amount for the new order. | |
new_identifier | Client-assigned identifier for the new order. | |
new_time_in_force | Time in force condition for the new order. — fok: Fill or Kill, ioc: Immediate or Cancel, post_only: Post only (maker only) | |
new_smp_type | SMP mode for the new order. — cancel_maker: Cancel maker order, cancel_taker: Cancel taker order, reduce: Reduce order quantity |
upbit orders cancel-and-new \
--prev-order-uuid "ad217e24-ed02-469c-9b30-c08dbbda6908" \
--new-ord-type "limit" \
--new-price "100000000"---
Get Order
Auth required
| Name | Required | Description |
|---|---|---|
uuid | UUID of the order to query. | |
identifier | Client-assigned identifier of the order to query. |
upbit orders retrieve \
--uuid "9ca023a5-851b-4fec-9f0a-48cd83c2eaae"---
Cancel Order
Auth required
| Name | Required | Description |
|---|---|---|
uuid | UUID of the order to cancel. | |
identifier | Client-assigned identifier of the order to cancel. |
upbit orders cancel \
--uuid "cdd92199-2897-4e14-9448-f923320408ad"---
List Orders by IDs
Auth required
| Name | Required | Description |
|---|---|---|
market | Trading pair to filter by. | |
uuids | List of UUIDs of orders to query. Maximum 100 orders. | |
identifiers | List of client-assigned identifiers of orders to query. Maximum 100 orders. | |
order_by | Sort order. "desc" (newest first) or "asc" (oldest first). Default is "desc". |
upbit orders list-by-uuids \
--uuid "5d303952-8be9-41e6-915b-121a90026248" \
--uuid "3944c2c1-bd8c-441a-aa25-2370d08217a9" \
--uuid "5b95451b-971e-4e76-8f61-5ff441f078d5" \
--uuid "3b67e543-8ad3-48d0-8451-0dad315cae73"---
Cancel Orders by IDs
Auth required
| Name | Required | Description |
|---|---|---|
uuids | List of UUIDs of orders to cancel. Maximum 20 orders. | |
identifiers | List of client-assigned identifiers of orders to cancel. Maximum 20 orders. |
upbit orders cancel-by-uuids \
--uuid "bbbb8e07-1689-4769-af3e-a117016623f8" \
--uuid "4312ba49-5f1a-4a01-9f3b-2d2bce17267e" \
--uuid "bdb49a54-de36-4eb4-a963-9c8d4337a9da"---
List Open Orders
Auth required
| Name | Required | Description |
|---|---|---|
market | Trading pair to filter by. | |
state | Order state filter. "wait" (pending) or "watch" (reservation). Default is "wait". | |
states | Order state filter (array form). "wait" or "watch". Default is ["wait"]. | |
page | Page number for pagination. Default is 1. | |
limit | Number of results per request (default: 100, max: 100). | |
order_by | Sort order. "desc" (newest first) or "asc" (oldest first). Default is "desc". |
upbit orders list-open \
--market "KRW-BTC" \
--state "wait" \
--state "watch"---
Batch Cancel Orders
Auth required
| Name | Required | Description |
|---|---|---|
quote_currencies | Quote currency filter (KRW, BTC, USDT). Cancels all open orders in markets with the specified quote currency. | |
cancel_side | Side filter. "all" (both), "ask" (sell only), "bid" (buy only). | |
count | Maximum number of orders to cancel. Max 300, default 20. | |
order_by | Sort order for determining which orders to cancel. "desc" (newest first) or "asc" (oldest first). Default is "desc". | |
pairs | Trading pair filter. Cancels open orders only for the specified pairs. Up to 20 pairs, comma-separated. | |
excluded_pairs | Trading pair exclusion filter. Cancels all open orders except those for the specified pairs. Up to 20 pairs, comma-separated. |
upbit orders cancel-open \
--quote-currencies "KRW,BTC" \
--cancel-side "all" \
--excluded-pairs "KRW-ETH,BTC-XRP"---
Output & Filtering Reference
--format
<!-- TODO -->
--transform (GJSON)
<!-- TODO -->
--format-error / --transform-error
<!-- TODO -->
--debug
<!-- TODO -->
Auto-paging
<!-- TODO -->
--environment
<!-- TODO -->
Upbit CLI Setup
Guide the user through installing the Upbit CLI and configuring API credentials.
Step 0 — Select Environment
Detect the user's language:
- Korean: assume
krenvironment. Do not ask — proceed directly with KR defaults. Omit--environmentflag from all commands (KR is the CLI default). - Other language: ask which environment they are using before proceeding:
"Which environment are you using?"
- kr — Korea (https://www.upbit.com)- sg — Singapore (https://sg.upbit.com)- id — Indonesia (https://id.upbit.com)- th — Thailand (https://th.upbit.com)Store the selected environment and use it throughout all subsequent steps — in API key management URLs, verification commands, and examples.
Environment reference table:
| Value | Base URL | API Key Management |
|---|---|---|
kr | https://www.upbit.com | https://www.upbit.com/mypage/open_api_management |
sg | https://sg.upbit.com | https://sg.upbit.com/mypage/open_api_management |
id | https://id.upbit.com | https://id.upbit.com/mypage/open_api_management |
th | https://th.upbit.com | https://th.upbit.com/mypage/open_api_management |
---
Step 1 — Prerequisites
Check Node.js availability:
node --versionRequires Node.js 18 or later. If not installed, direct the user to https://nodejs.org.
---
Step 2 — Install upbit CLI
npm install -g @upbit-official/upbit-cliAfter installation, verify:
upbit --versionIf upbit is not found after installation, the user may need to update their PATH. Common fixes:
- macOS/Linux (npm global bin not in PATH):
export PATH="$(npm bin -g):$PATH"Add to ~/.zshrc or ~/.bashrc to persist.
- Windows: Restart the terminal or check
npm config get prefixand add the\binsubdirectory to the system PATH.
---
Step 3 — Check Current IP Address
Upbit API keys can be restricted to specific IP addresses. Before the user creates their API key, retrieve and display their current public IP:
curl -s https://api.ipify.orgShow the result to the user and advise them to add this IP when configuring allowed IPs on the API management page.
If the user is on a dynamic IP or plans to use the CLI from multiple machines, they may want to add multiple IPs or leave the IP restriction empty (less secure).
---
Step 4 — Get API Keys
Direct the user to the API key management page for their selected environment (from Step 0).
Required permissions for full CLI functionality:
| Permission | Required for |
|---|---|
| 자산 조회 (Asset inquiry) | accounts list, api-keys list |
| 주문 조회 (Order inquiry) | orders list-open, orders list-closed |
| 주문하기 (Place orders) | orders create, orders cancel |
| 입금 주소 발급 (Deposit address) | deposits create-coin-address |
Public endpoints (tickers, orderbooks, candles, etc.) do not require API keys.
---
Step 5 — Configure Credentials
upbit config set requires an interactive terminal (TTY) — it cannot be run by Claude or via the ! prefix in Claude Code. The user must run it directly in a separate terminal.
Instruct the user to: 1. Open a new terminal window 2. Run:
upbit config set3. Enter the Access Key and Secret Key when prompted 4. Return here when done
Credentials are saved to ~/.upbit/config and automatically used for all subsequent CLI commands.
---
Step 6 — Verify Setup
After upbit config set completes, verify credentials are saved correctly:
upbit config showExpected output:
access_key: xxxx****xxxx (source: file)
secret_key: xxxx****xxxx (source: file)
config_file: ~/.upbit/configThen test with a live API call:
- KR:
upbit accounts list - Other:
upbit accounts list --environment <selected-environment>
A successful response returns the user's asset balances. An authentication error means the keys were entered incorrectly — run upbit config set again.
---
Credential Priority
The CLI resolves credentials in this order (highest priority first):
1. CLI flags: --access-key, --secret-key 2. Environment variables: UPBIT_ACCESS_KEY, UPBIT_SECRET_KEY 3. Config file: ~/.upbit/config (set via upbit config set)
To check the active credential source:
upbit config showTo check the config file path:
upbit config path---
Troubleshooting
| Symptom | Fix |
|---|---|
upbit: command not found | npm install -g @upbit-official/upbit-cli and check PATH |
401 Unauthorized | Re-run upbit config set with correct keys |
403 Forbidden | API key lacks required permissions — update on the API management page |
No credentials configured | Run upbit config set to save credentials |
| Keys set but not picked up | Check upbit config show — env vars override config file |
Tickers
List Tickers by Pairs
| Name | Required | Description |
|---|---|---|
markets | ✓ | List of trading pairs to query. |
upbit tickers list-by-trading-pairs \
--markets "KRW-BTC,KRW-ETH"---
List Tickers by Market
| Name | Required | Description |
|---|---|---|
quote_currencies | ✓ | List of quote currencies to query. |
upbit tickers list-by-quote-currencies \
--quote-currencies "KRW,BTC,USDT"---
Trades
Recent Trades History
| Name | Required | Description |
|---|---|---|
market | ✓ | Trading pair code to query. |
to | End time within the query date range (UTC). | |
count | Number of trade records to retrieve. | |
cursor | Cursor for pagination. | |
days_ago | Day offset between the query date and the request date. |
upbit trades list \
--market "KRW-BTC"---
Trading Pairs
Market Pair Format
Upbit uses {QUOTE}-{BASE} order — quote currency first, base asset second.
| Market | Quote | Base | Other exchanges equivalent |
|---|---|---|---|
KRW-BTC | KRW | BTC | BTC/KRW |
KRW-ETH | KRW | ETH | ETH/KRW |
BTC-ETH | BTC | ETH | ETH/BTC |
USDT-XRP | USDT | XRP | XRP/USDT |
Quote currencies: KRW, BTC, USDT. Always uppercase, hyphen-delimited.
List Trading Pairs
| Name | Required | Description |
|---|---|---|
is_details | Whether to include detailed information in the query. |
upbit trading-pairs list---
Travel Rule
List Travel Rule Supporting VASPs
Auth required
upbit travel-rule list-vasps---
Verify Travel Rule by Deposit UUID
Auth required
| Name | Required | Description |
|---|---|---|
deposit_uuid | ✓ | Unique identifier (UUID) for the deposit to verify. |
vasp_uuid | ✓ | Unique identifier (UUID) of the counterparty exchange from which the asset was withdrawn. |
upbit travel-rule verify-deposit-by-uuid \
--deposit-uuid "5b871d34-fe38-4025-8f5c-9b22028f85d3" \
--vasp-uuid "8d4fe968-82b2-42e5-822f-3840a245f802"---
Verify Travel Rule by Deposit TxID
Auth required
| Name | Required | Description |
|---|---|---|
vasp_uuid | ✓ | Unique identifier (UUID) of the counterparty exchange from which the asset was withdrawn. |
txid | ✓ | Transaction ID of the deposit to be verified. |
currency | ✓ | Currency code to be queried. |
net_type | ✓ | Blockchain network identifier for deposit/withdrawal of digital assets. |
upbit travel-rule verify-deposit-by-txid \
--vasp-uuid "8d4fe968-82b2-42e5-822f-3840a245f802" \
--txid "5b871d34-fe38-4025-8f5c-9b22028f85d3" \
--currency "ETH" \
--net-type "ETH"---
Related skills
FAQ
Is Upbit safe to install?
skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.