Korbit Withdrawal (Crypto) API
The Withdrawal (Crypto) API from Korbit — 3 operation(s) for withdrawal (crypto).
The Withdrawal (Crypto) API from Korbit — 3 operation(s) for withdrawal (crypto).
openapi: 3.1.0
info:
title: Korbit Open API v2 Asset Withdrawal (Crypto) API
version: 2.0.0
description: 'REST API for the Korbit cryptocurrency exchange (Korea''s first virtual-asset exchange). Covers market data (quotation), trading, balances, crypto deposits and withdrawals, and KRW deposit/withdrawal push notifications.
All responses use the envelope `{"success": true, "data": ...}`; errors use `{"success": false, "error": {"message": "<CODE>"}}`.
Private endpoints require the `X-KAPI-KEY` header plus `timestamp` and `signature` parameters. Signatures are HMAC-SHA256 (hex) or ED25519 (Base64, URL-encoded) over the exact encoded request string. See the timestamp-window rules: `recvWindow` defaults to 5000 ms, maximum 60000 ms, and the future bound is a fixed +1000 ms.
This document was generated by the API Evangelist enrichment pipeline from Korbit''s own published agent documentation bundle (https://docs.korbit.co.kr/llms-full.txt). Korbit does not publish an OpenAPI document; this is a faithful transcription of the published reference, not an official artifact.'
contact:
name: Korbit Developers
url: https://developers.korbit.co.kr
x-generated-by: API Evangelist enrichment pipeline
x-source: https://docs.korbit.co.kr/llms-full.txt
servers:
- url: https://api.korbit.co.kr
description: Production
- url: http://127.0.0.1:9999
description: Local sandbox (korbit-sandbox.mjs) — mock, not the production server
tags:
- name: Withdrawal (Crypto)
paths:
/v2/coin/withdrawableAddresses:
get:
operationId: getCoinWithdrawableAddresses
summary: Get Address
description: Retrieve the list of addresses registered for API withdrawals.
tags:
- Withdrawal (Crypto)
parameters:
- name: accountSeq
in: query
description: Account sequence number. Deposit/withdrawal APIs only operate on the main account, so only `1` is accepted. Defaults to 1.
schema:
type: number
examples:
- 1
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
examples:
- true
data:
type: array
items:
type: object
properties:
network:
type: string
description: symbol of the blockchain network.
examples:
- ETH
currency:
type: string
description: symbol of the asset. Omitted for withdraw addesses registered for any currency on the network.
examples:
- btc
address:
type: string
description: address.
examples:
- 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
secondaryAddress:
type: string
description: secondary address (destination tag, memo, etc. if none, then null.)
required:
- network
- address
required:
- success
example:
success: true
data:
- network: BTC
currency: btc
address: 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
- network: ETH
address: '0x05a56e2d52c817161883f50c441c3228cfe54d9f'
'400':
description: Bad request — see the error envelope and error codes.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Missing or invalid API key / signature.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: API key lacks the required permission or the IP is not allowlisted.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Rate limit exceeded. Honor `Retry-After` / the `Ratelimit` reset window.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- KorbitApiKey: []
x-korbit-permission: readWithdrawals
/v2/coin/withdrawableAmount:
get:
operationId: getCoinWithdrawableAmount
summary: Get Withdrawable Amount
description: Get the available cryptocurrency withdrawal amount.
tags:
- Withdrawal (Crypto)
parameters:
- name: accountSeq
in: query
description: Account sequence number. Deposit/withdrawal APIs only operate on the main account, so only `1` is accepted. Defaults to 1.
schema:
type: number
examples:
- 1
- name: currency
in: query
description: Symbol of the cryptocurrency to query. If not provided, all assets will be queried.
schema:
type: string
examples:
- btc
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
examples:
- true
data:
type: array
items:
type: object
properties:
currency:
type: string
description: symbol of the asset.
examples:
- btc
withdrawableAmount:
type: string
description: withdrawable amount.
examples:
- '1.52'
withdrawalInUseAmount:
type: string
description: amount in withdrawal.
examples:
- '0.005'
required:
- currency
- withdrawableAmount
- withdrawalInUseAmount
required:
- success
example:
success: true
data:
- currency: btc
withdrawableAmount: '1.52'
withdrawalInUseAmount: '0.005'
- currency: eth
withdrawableAmount: '10.52'
withdrawalInUseAmount: '2.5'
'400':
description: Bad request — see the error envelope and error codes.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Missing or invalid API key / signature.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: API key lacks the required permission or the IP is not allowlisted.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Rate limit exceeded. Honor `Retry-After` / the `Ratelimit` reset window.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- KorbitApiKey: []
x-korbit-permission: readWithdrawals
/v2/coin/withdrawal:
post:
operationId: createCoinWithdrawal
summary: Request Withdrawal
description: Request for cryptocurrency withdrawal. You need to register your withdrawal addresses for use with API in order to use this feature.
tags:
- Withdrawal (Crypto)
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
type: object
properties:
accountSeq:
type: number
description: Account sequence number. Deposit/withdrawal APIs only operate on the main account, so only `1` is accepted. Defaults to 1.
examples:
- 1
currency:
type: string
description: symbol of the asset.
examples:
- btc
network:
type: string
description: symbol of the blockchain network. List of networks can be queried using the `/v2/currencies` API. Uses the default network if omitted. Please always specify the network to prevent possible errors, as the default network can be changed.
examples:
- BTC
amount:
type: string
description: amount of cryptocurrency to withdraw (not including fees).
examples:
- '0.02521236'
address:
type: string
description: Recipient address. Withdrawals can only be made to addresses registered for API withdrawals.
examples:
- 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
secondaryAddress:
type: string
description: secondary address (destination tag, memo, etc. if none, omit or set to an empty string.)
required:
- currency
- amount
- address
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
examples:
- true
data:
type: object
properties:
status:
type: string
enum:
- pending
- actionRequired
- reviewing
- processing
- done
- canceled
- failed
description: Withdrawal status `pending` — Withdrawal request received. / `actionRequired` — Pending email confirmation (withdrawal can be canceled). To proceed with the withdrawal, you must verify the confirmation email. / `reviewing` — Pending withdrawal reviewing (withdrawal can be canceled). Withdrawal may be delayed according to Korbit's policy. / `processing` — Withdrawal processing. / `done` — Withdrawal done. / `canceled` — Withdrawal canceled. / `failed` — Withdrawal failed. (Insufficient balance or other error)
coinWithdrawalId:
type: number
description: withdrawal ID.
examples:
- 1234
required:
- status
- coinWithdrawalId
required:
- success
example:
success: true
data:
status: pending
coinWithdrawalId: 1234
'400':
description: Bad request — see the error envelope and error codes.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Missing or invalid API key / signature.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: API key lacks the required permission or the IP is not allowlisted.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Rate limit exceeded. Honor `Retry-After` / the `Ratelimit` reset window.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- KorbitApiKey: []
x-korbit-permission: writeWithdrawals
x-korbit-error-codes:
- code: INVALID_CURRENCY
message: Invalid currency
- code: WITHDRAWAL_SUSPENDED
message: Withdrawal suspended
- code: UNREGISTERED_WITHDRAWAL_ADDRESS
message: The address hasn't been registered as an OpenAPI withdrawal address.
- code: FORBIDDEN_WITHDRAWAL_ADDRESS
message: Withdrawals to the address is forbidden due to policy.
- code: WITHDRAWAL_ALREADY_IN_PROGRESS
message: A withdrawal is already in progress. Please try again after the current transaction is completed.
- code: INVALID_USER_STATUS
message: Your account is restricted. Please check your status or contact customer service.
- code: NO_BALANCE
message: 'Your balance is insufficient. Note: If your balance is insufficient, a `NO_BALANCE` error may occur, or the withdrawal request may succeed but appear as `failed` when checking the withdrawal status.'
- code: DAILY_LIMIT_EXCEEDED
message: You have exceeded the daily withdrawal limit.
delete:
operationId: deleteCoinWithdrawal
summary: Cancel Withdrawal
description: 'Cancel a cryptocurrency withdrawal.
Withdrawals can only be canceled if the status is one of the following:
- `actionRequired`
- `reviewing`'
tags:
- Withdrawal (Crypto)
parameters:
- name: accountSeq
in: query
description: Account sequence number. Deposit/withdrawal APIs only operate on the main account, so only `1` is accepted. Defaults to 1.
schema:
type: number
examples:
- 1
- name: coinWithdrawalId
in: query
required: true
description: withdrawal ID (responsed by `POST /v2/coin/withdrawal`).
schema:
type: number
examples:
- 1234
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
examples:
- true
required:
- success
example:
success: true
'400':
description: Bad request — see the error envelope and error codes.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Missing or invalid API key / signature.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: API key lacks the required permission or the IP is not allowlisted.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Rate limit exceeded. Honor `Retry-After` / the `Ratelimit` reset window.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- KorbitApiKey: []
x-korbit-permission: writeWithdrawals
x-korbit-error-codes:
- code: WITHDRAWAL_ALREADY_FINISHED
message: The withdrawal has already been finished
- code: CANNOT_CANCEL_WITHDRAWAL
message: The withdrawal cannot be canceled (likely because it's being processed)
- code: NOT_FOUND
message: The withdrawal cannot be found
get:
operationId: getCoinWithdrawal
summary: Get Withdrawal Status
description: Get the status of the requested withdrawal.
tags:
- Withdrawal (Crypto)
parameters:
- name: accountSeq
in: query
description: Account sequence number. Deposit/withdrawal APIs only operate on the main account, so only `1` is accepted. Defaults to 1.
schema:
type: number
examples:
- 1
- name: currency
in: query
required: true
description: symbol of the asset.
schema:
type: string
examples:
- btc
- name: coinWithdrawalId
in: query
required: true
description: withdrawal ID.
schema:
type: number
examples:
- 1234
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
examples:
- true
data:
type: object
properties:
id:
type: number
description: withdrawal ID.
examples:
- 1234
quantity:
type: string
description: withdrawn coin quantity excluding fees.
examples:
- '1.234'
fee:
type: string
description: withdrawal fee.
examples:
- '0.0001'
currency:
type: string
description: symbol of the asset.
examples:
- btc
status:
type: string
enum:
- pending
- actionRequired
- reviewing
- processing
- done
- canceled
- failed
description: Withdrawal status `pending` — Withdrawal request received. / `actionRequired` — Pending email confirmation (withdrawal can be canceled). To proceed with the withdrawal, you must verify the confirmation email. / `reviewing` — Pending withdrawal reviewing (withdrawal can be canceled). Withdrawal may be delayed according to Korbit's policy. / `processing` — Withdrawal processing. / `done` — Withdrawal done. / `canceled` — Withdrawal canceled. / `failed` — Withdrawal failed. (Insufficient balance or other error)
network:
type: string
description: symbol of the blockchain network.
examples:
- ETH
address:
type: string
description: withdrawal address.
examples:
- 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
secondaryAddress:
type: string
description: secondary address (destination tag, memo, etc. if none, then null.)
transactionHash:
type: string
description: transaction hash on the blockchain. If not yet sent to the blockchain, `null` is returned.
examples:
- '0x000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f'
createdAt:
type: number
description: withdrawal request timestamp (ms).
examples:
- 1700000000000
required:
- id
- quantity
- fee
- currency
- status
- network
- address
- createdAt
required:
- success
example:
success: true
data:
id: 1234
quantity: '1.234'
fee: '0.0001'
currency: btc
status: done
network: BTC
address: 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
secondaryAddress: null
transactionHash: '0x000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f'
createdAt: 1700000000000
'400':
description: Bad request — see the error envelope and error codes.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Missing or invalid API key / signature.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: API key lacks the required permission or the IP is not allowlisted.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Rate limit exceeded. Honor `Retry-After` / the `Ratelimit` reset window.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- KorbitApiKey: []
x-korbit-permission: readWithdrawals
components:
schemas:
ErrorResponse:
type: object
description: Korbit error envelope. `error.message` carries the symbolic error code.
properties:
success:
type: boolean
examples:
- false
error:
type: object
properties:
message:
type: string
description: Symbolic error code, e.g. `NO_BALANCE`.
examples:
- NO_BALANCE
required:
- success
securitySchemes:
KorbitApiKey:
type: apiKey
in: header
name: X-KAPI-KEY
description: API key issued in the Korbit Developers portal (https://developers.korbit.co.kr). Keys carry permissions (readOrders, writeOrders, readBalances, readDeposits, writeDeposits, readWithdrawals, writeWithdrawals), may be pinned to an IP allowlist, and are valid for one year. Every signed request additionally carries `timestamp` and `signature` parameters (HMAC-SHA256 hex or ED25519 base64).