# 주문 [← REST API 가이드](../rest_api.md) ## 개별 주문 조회 {#get-_v2_orders} ``` GET /v2/orders ``` 주문 ID(orderId) 또는 사용자 지정 주문 ID(clientOrderId)를 이용해 개별 주문 정보를 조회합니다. 단, `expired`, `canceled` 상태의 주문은 종결 후 약 3일이 지난 후에는 조회할 수 없습니다. **필요 권한:** `readOrders` ### 스키마 ```ts // URL 쿼리 파라미터 type RequestQuery = { /** 대상 거래쌍의 심볼. Example: "btc_krw" */ symbol: string; /** 어카운트 시퀀스 번호. 기본값은 1 (메인 어카운트). Example: 1 */ accountSeq?: number; /** 주문 시 생성된 `orderId` 값. `orderId`와 `clientOrderId` 중 하나를 반드시 입력해야 합니다. Example: 1234 */ orderId?: number; /** 주문 시 입력한 `clientOrderId` 값. `orderId`와 `clientOrderId` 중 하나를 반드시 입력해야 합니다. Example: "20141231-155959-abcdef" */ clientOrderId?: string; }; // JSON 응답 (`{ success: true, data }` 형태로 래핑되며, 아래는 `data` 필드의 구조) type Response = { /** 주문 ID. Example: 1234 */ orderId: number; /** 사용자 지정 주문 ID. Example: "20141231-155959-abcdef" */ clientOrderId?: string; /** 거래쌍의 심볼. Example: "btc_krw" */ symbol: string; /** 주문 유형 구분 */ orderType: | "limit" // 지정가 주문 | "market" // 시장가 주문 | "best" // BBO 주문 (Best-Bid-Offer, 최우선/최유리) ; /** 매수, 매도 구분 */ side: | "buy" // 매수 | "sell" // 매도 ; /** * 주문 취소 조건 * * Time in Force 값을 입력하지 않았다면 다음 기본값이 설정됩니다. * - 지정가 주문: `gtc` * - 시장가 주문: `ioc` (시장가 주문에서는 `ioc`만 사용할 수 있습니다.) * BBO 주문에서는 Time in Force 값을 반드시 직접 입력해야 합니다. */ timeInForce?: | "gtc" // 일반적인 지정가 주문. 전량 체결되거나 취소될 때까지 유효한 주문입니다. (Good-Till-Canceled) | "ioc" // 주문호가 또는 더 좋은 가격으로 즉시 체결시킵니다. 체결되지 않은 잔량은 취소됩니다. (Immediate-Or-Cancel) | "fok" // 주문호가 또는 더 좋은 가격으로 즉시 전량 체결시킵니다. 전량 체결이 불가하다면 주문이 취소됩니다. (Fill-Or-Kill) | "po" // 주문 입력 시 바로 체결되는 상황이라면 주문이 취소됩니다. 즉, 메이커(Maker) 주문만 발생합니다. (Post-Only) ; /** * 지정가, BBO 주문의 주문 가격(호가). * 시장가 주문은 주문 가격이 표시되지 않으며, BBO 주문은 주문 확정 이후 표시됩니다. * Example: "5000" */ price?: string; /** 주문 수량 (기준자산). 지정가, BBO 및 시장가 매도 주문에서만 표시되며, BBO 매수 주문에서는 주문 확정 이후 표시됩니다. Example: "10" */ qty?: string; /** 주문 대금 (상대자산). 시장가 매수 및 BBO 매수 주문에서만 표시됩니다. Example: "50000" */ amt?: string; /** 체결 수량 (기준자산). Example: "10" */ filledQty: string; /** 체결 금액 (상대자산). Example: "50000" */ filledAmt: string; /** 평균 체결 단가. Example: "5000" */ avgPrice?: string; /** 주문 접수 시각 (timestamp). Example: 1700000000000 */ createdAt: number; /** 마지막 체결 시각 (timestamp). Example: 1700000000000 */ lastFilledAt?: number; /** 조건부 주문 발동 시각 (timestamp). Example: 1700000000000 */ triggeredAt?: number; /** 주문 상태 */ status: | "pending" // 주문 접수 대기 중. 잔고가 부족하거나 `timeInForce` 조건에 해당할 경우, 주문이 실패해 `expired` 상태로 될 수 있습니다. | "open" // 전량 미체결 | "filled" // 체결 완료 후 주문 종료. 미체결 잔량이 오더북에 남지 않고 반환되는 주문(예: `ioc` 주문, 가격 보호(`pp`) 범위로 잔량이 잘린 주문)은 주문 수량보다 적게 체결된 경우에도 `filled`로 종료됩니다. 실제 체결 수량은 `filledQty`/`filledAmt`로 확인하세요. | "canceled" // 전량 취소 | "partiallyFilled" // 부분 체결 | "partiallyFilledCanceled" // 부분 체결 후 잔량 취소 | "expired" // 주문 접수 실패 (잔고 부족 또는 timeInForce 조건 해당 시) ; }; ``` ### 예시 #### 요청 ```sh curl -H X-KAPI-KEY=API키 'https://api.korbit.co.kr/v2/orders?clientOrderId=20141231-155959-abcdef&symbol=btc_krw×tamp=시각&signature=서명' ``` #### 응답 ```json { "success": true, "data": { "orderId": 1234, "clientOrderId": "20141231-155959-abcdef", "symbol": "btc_krw", "orderType": "limit", "side": "buy", "timeInForce": "gtc", "avgPrice": "5000", "price": "5000", "qty": "10", "filledQty": "1", "filledAmt": "5000", "createdAt": 1700000000000, "lastFilledAt": 1700000000000, "status": "partiallyFilled" } } ``` ## 미체결 주문 조회 {#get-_v2_openOrders} ``` GET /v2/openOrders ``` 단일 거래쌍의 미체결 주문 목록을 조회합니다. `open`, `partiallyFilled` 상태인 주문만 조회됩니다. **필요 권한:** `readOrders` ### 스키마 ```ts // URL 쿼리 파라미터 type RequestQuery = { /** 대상 거래쌍의 심볼. Example: "btc_krw" */ symbol: string; /** 어카운트 시퀀스 번호. 기본값은 1 (메인 어카운트). Example: 1 */ accountSeq?: number; /** 최대 조회 건수 (범위: 1 - 1000, 기본값 500). Example: 100 */ limit?: number; }; // JSON 응답 (`{ success: true, data }` 형태로 래핑되며, 아래는 `data` 필드의 구조) type Response = Array<{ /** 주문 ID. Example: 1234 */ orderId: number; /** 사용자 지정 주문 ID. Example: "20141231-155959-abcdef" */ clientOrderId?: string; /** 주문 유형 구분 */ orderType: | "limit" // 지정가 주문 | "market" // 시장가 주문 | "best" // BBO 주문 (Best-Bid-Offer, 최우선/최유리) ; /** 매수, 매도 구분 */ side: | "buy" // 매수 | "sell" // 매도 ; /** * 지정가, BBO 주문의 주문 가격(호가). * 시장가 주문은 주문 가격이 표시되지 않으며, BBO 주문은 주문 확정 이후 표시됩니다. * Example: "5000" */ price?: string; /** 주문 수량 (기준자산). 지정가, BBO 및 시장가 매도 주문에서만 표시되며, BBO 매수 주문에서는 주문 확정 이후 표시됩니다. Example: "10" */ qty?: string; /** 주문 대금 (상대자산). 시장가 매수 및 BBO 매수 주문에서만 표시됩니다. Example: "50000" */ amt?: string; /** 체결 수량 (기준자산). Example: "10" */ filledQty: string; /** 체결 금액 (상대자산). Example: "50000" */ filledAmt: string; /** 평균 체결 단가. Example: "5000" */ avgPrice?: string; /** 주문 접수 시각 (timestamp). Example: 1700000000000 */ createdAt: number; /** 마지막 체결 시각 (timestamp). Example: 1700000000000 */ lastFilledAt?: number; /** 주문 상태 */ status: | "pending" // 주문 접수 대기 중. 잔고가 부족하거나 `timeInForce` 조건에 해당할 경우, 주문이 실패해 `expired` 상태로 될 수 있습니다. | "open" // 전량 미체결 | "filled" // 체결 완료 후 주문 종료. 미체결 잔량이 오더북에 남지 않고 반환되는 주문(예: `ioc` 주문, 가격 보호(`pp`) 범위로 잔량이 잘린 주문)은 주문 수량보다 적게 체결된 경우에도 `filled`로 종료됩니다. 실제 체결 수량은 `filledQty`/`filledAmt`로 확인하세요. | "canceled" // 전량 취소 | "partiallyFilled" // 부분 체결 | "partiallyFilledCanceled" // 부분 체결 후 잔량 취소 | "expired" // 주문 접수 실패 (잔고 부족 또는 timeInForce 조건 해당 시) ; }>; ``` ### 예시 #### 요청 ```sh curl -H X-KAPI-KEY=API키 'https://api.korbit.co.kr/v2/openOrders?limit=100&symbol=btc_krw×tamp=시각&signature=서명' ``` #### 응답 ```json { "success": true, "data": [ { "orderId": 1234, "orderType": "limit", "side": "buy", "avgPrice": "5000", "price": "5000", "qty": "10", "filledQty": "1", "filledAmt": "5000", "createdAt": 1700000000000, "lastFilledAt": 1700000000000, "status": "partiallyFilled" }, { "orderId": 1235, "orderType": "limit", "side": "sell", "price": "5000", "qty": "10", "filledQty": "0", "filledAmt": "0", "createdAt": 1700000000000, "status": "open" } ] } ``` ## 최근 주문 내역 조회 {#get-_v2_allOrders} ``` GET /v2/allOrders ``` 단일 거래쌍의 최근 주문 목록을 조회합니다. 주문 생성 시각 기준으로 최근 36시간의 주문 내역만 조회 가능합니다. 이 API는 주문 이력 확인을 위한 것으로 제공되는 데이터에 수 초 가량의 지연이 발생할 수 있습니다. 지연 없는 현재 상태의 데이터가 필요할 경우 `개별 주문 조회` 또는 `미체결 주문 조회` API를 사용해주세요. **필요 권한:** `readOrders` ### 스키마 ```ts // URL 쿼리 파라미터 type RequestQuery = { /** 대상 거래쌍의 심볼. Example: "btc_krw" */ symbol: string; /** 어카운트 시퀀스 번호. 기본값은 1 (메인 어카운트). Example: 1 */ accountSeq?: number; /** 조회 시작 시각(timestamp). 이 시각과 정확히 일치하는 데이터도 포함됩니다(이상, >=). 현재 시간으로부터 36시간 전 자료까지만 조회 가능합니다. (기본값: 36시간 전) */ startTime?: number; /** 조회 종료 시각(timestamp). 이 시각과 정확히 일치하는 데이터는 제외됩니다(미만, <). (기본값: 현재). 결과는 최신순이며 limit 건으로 제한됩니다. 더 많이 조회하려면 startTime/endTime으로 구간을 좁히세요. */ endTime?: number; /** 최대 조회 건수 (범위: 1 - 1000, 기본값 500). Example: 100 */ limit?: number; }; // JSON 응답 (`{ success: true, data }` 형태로 래핑되며, 아래는 `data` 필드의 구조) type Response = Array<{ /** 주문 ID. Example: 1234 */ orderId: number; /** 사용자 지정 주문 ID. Example: "20141231-155959-abcdef" */ clientOrderId?: string; /** 거래쌍의 심볼. Example: "btc_krw" */ symbol: string; /** 주문 유형 구분 */ orderType: | "limit" // 지정가 주문 | "market" // 시장가 주문 | "best" // BBO 주문 (Best-Bid-Offer, 최우선/최유리) ; /** 매수, 매도 구분 */ side: | "buy" // 매수 | "sell" // 매도 ; /** * 주문 취소 조건 * * Time in Force 값을 입력하지 않았다면 다음 기본값이 설정됩니다. * - 지정가 주문: `gtc` * - 시장가 주문: `ioc` (시장가 주문에서는 `ioc`만 사용할 수 있습니다.) * BBO 주문에서는 Time in Force 값을 반드시 직접 입력해야 합니다. */ timeInForce?: | "gtc" // 일반적인 지정가 주문. 전량 체결되거나 취소될 때까지 유효한 주문입니다. (Good-Till-Canceled) | "ioc" // 주문호가 또는 더 좋은 가격으로 즉시 체결시킵니다. 체결되지 않은 잔량은 취소됩니다. (Immediate-Or-Cancel) | "fok" // 주문호가 또는 더 좋은 가격으로 즉시 전량 체결시킵니다. 전량 체결이 불가하다면 주문이 취소됩니다. (Fill-Or-Kill) | "po" // 주문 입력 시 바로 체결되는 상황이라면 주문이 취소됩니다. 즉, 메이커(Maker) 주문만 발생합니다. (Post-Only) ; /** * 지정가, BBO 주문의 주문 가격(호가). * 시장가 주문은 주문 가격이 표시되지 않으며, BBO 주문은 주문 확정 이후 표시됩니다. * Example: "5000" */ price?: string; /** 주문 수량 (기준자산). 지정가, BBO 및 시장가 매도 주문에서만 표시되며, BBO 매수 주문에서는 주문 확정 이후 표시됩니다. Example: "10" */ qty?: string; /** 주문 대금 (상대자산). 시장가 매수 및 BBO 매수 주문에서만 표시됩니다. Example: "50000" */ amt?: string; /** 체결 수량 (기준자산). Example: "10" */ filledQty: string; /** 체결 금액 (상대자산). Example: "50000" */ filledAmt: string; /** 평균 체결 단가. Example: "5000" */ avgPrice?: string; /** 주문 접수 시각 (timestamp). Example: 1700000000000 */ createdAt: number; /** 마지막 체결 시각 (timestamp). Example: 1700000000000 */ lastFilledAt?: number; /** 조건부 주문 발동 시각 (timestamp). Example: 1700000000000 */ triggeredAt?: number; /** 주문 상태 */ status: | "pending" // 주문 접수 대기 중. 잔고가 부족하거나 `timeInForce` 조건에 해당할 경우, 주문이 실패해 `expired` 상태로 될 수 있습니다. | "open" // 전량 미체결 | "filled" // 체결 완료 후 주문 종료. 미체결 잔량이 오더북에 남지 않고 반환되는 주문(예: `ioc` 주문, 가격 보호(`pp`) 범위로 잔량이 잘린 주문)은 주문 수량보다 적게 체결된 경우에도 `filled`로 종료됩니다. 실제 체결 수량은 `filledQty`/`filledAmt`로 확인하세요. | "canceled" // 전량 취소 | "partiallyFilled" // 부분 체결 | "partiallyFilledCanceled" // 부분 체결 후 잔량 취소 | "expired" // 주문 접수 실패 (잔고 부족 또는 timeInForce 조건 해당 시) ; }>; ``` ### 예시 #### 요청 ```sh curl -H X-KAPI-KEY=API키 'https://api.korbit.co.kr/v2/allOrders?limit=100&symbol=btc_krw×tamp=시각&signature=서명' ``` #### 응답 ```json { "success": true, "data": [ { "orderId": 1234, "clientOrderId": "20141231-155959-abcdef", "symbol": "btc_krw", "orderType": "limit", "side": "buy", "timeInForce": "gtc", "avgPrice": "5000", "price": "5000", "qty": "10", "filledQty": "1", "filledAmt": "5000", "createdAt": 1700000000000, "lastFilledAt": 1700000000000, "status": "partiallyFilled" }, { "orderId": 1235, "clientOrderId": "20141231-155959-abcdeg", "symbol": "btc_krw", "orderType": "limit", "side": "sell", "timeInForce": "gtc", "price": "5000", "qty": "10", "filledQty": "0", "filledAmt": "0", "createdAt": 1700000000000, "lastFilledAt": 1700000000000, "status": "open" } ] } ``` ## 최근 체결 내역 조회 {#get-_v2_myTrades} ``` GET /v2/myTrades ``` 단일 거래쌍의 최근 체결 목록을 조회합니다. 최근 36시간의 체결 내역만 조회 가능합니다. 이 API는 체결 이력 확인을 위한 API로 제공되는 데이터에 수 초 가량의 지연이 발생할 수 있습니다. **필요 권한:** `readOrders` ### 스키마 ```ts // URL 쿼리 파라미터 type RequestQuery = { /** 대상 거래쌍의 심볼. Example: "btc_krw" */ symbol: string; /** 어카운트 시퀀스 번호. 기본값은 1 (메인 어카운트). Example: 1 */ accountSeq?: number; /** 조회 시작 시각(timestamp). 이 시각과 정확히 일치하는 데이터도 포함됩니다(이상, >=). 현재 시간으로부터 36시간 전 자료까지만 조회 가능합니다. (기본값: 36시간 전) */ startTime?: number; /** 조회 종료 시각(timestamp). 이 시각과 정확히 일치하는 데이터는 제외됩니다(미만, <). (기본값: 현재). 결과는 최신순이며 limit 건으로 제한됩니다. 더 많이 조회하려면 startTime/endTime으로 구간을 좁히세요. */ endTime?: number; /** 최대 조회 건수 (범위: 1 - 1000, 기본값 500). Example: 100 */ limit?: number; }; // JSON 응답 (`{ success: true, data }` 형태로 래핑되며, 아래는 `data` 필드의 구조) type Response = Array<{ /** 거래쌍의 심볼. Example: "btc_krw" */ symbol: string; /** 거래 체결 ID (각 거래쌍마다 생성된 개별 거래 체결 건의 ID). 거래쌍별로 단조 증가하지만 연속성은 보장되지 않습니다. Example: 1234 */ tradeId: number; /** 원주문 ID. Example: 1234 */ orderId: number; /** 매수, 매도 구분 */ side: | "buy" // 매수 | "sell" // 매도 ; /** 체결 단가. Example: "5000" */ price: string; /** 체결 수량 (기준자산). Example: "10" */ qty: string; /** 체결 금액 (상대자산). Example: "50000" */ amt: string; /** 주문 체결 시각(timestamp). Example: 1700000000000 */ tradedAt: number; /** 테이커(Taker) 체결 여부(Taker=true, Maker=false). Example: true */ isTaker: boolean; /** 수수료 지불 자산. Example: "krw" */ feeCurrency?: string; /** 수수료 수량. Example: "50" */ feeQty?: string; }>; ``` ### 예시 #### 요청 ```sh curl -H X-KAPI-KEY=API키 'https://api.korbit.co.kr/v2/myTrades?limit=100&symbol=btc_krw×tamp=시각&signature=서명' ``` #### 응답 ```json { "success": true, "data": [ { "symbol": "btc_krw", "tradeId": 52, "orderId": 382312, "side": "buy", "price": "5000", "qty": "10", "amt": "50000", "tradedAt": 1700000000000, "isTaker": true, "feeCurrency": "krw", "feeQty": "50" } ] } ``` ## 주문하기 {#post-_v2_orders} ``` POST /v2/orders ``` 신규 주문을 생성합니다. **필요 권한:** `writeOrders` ### 스키마 ```ts // POST 본문 — `Content-Type: application/x-www-form-urlencoded` type RequestBody = { /** 대상 거래쌍의 심볼. Example: "btc_krw" */ symbol: string; /** 어카운트 시퀀스 번호. 기본값은 1 (메인 어카운트). Example: 1 */ accountSeq?: number; /** 매수, 매도 구분 */ side: | "buy" // 매수 | "sell" // 매도 ; /** * 지정가 주문의 주문 가격. * 시장가, BBO 주문의 경우 생략합니다. * Example: "250000" */ price?: string; /** * 주문 수량(기준자산). * 지정가 주문과 시장가 매도 및 BBO 매도 주문인 경우 사용하며, 시장가 매수 및 BBO 매수 주문의 경우 생략합니다. * Example: "10" */ qty?: string; /** * 주문 대금(상대자산). * 시장가 매수 및 BBO 매수 주문인 경우 사용하며, 지정가 주문과 시장가 매도 및 BBO 매도 주문의 경우 생략합니다. * Example: "250000" */ amt?: string; /** 주문 유형 구분 */ orderType: | "limit" // 지정가 주문 | "market" // 시장가 주문 | "best" // BBO 주문 (Best-Bid-Offer, 최유리/최우선 주문). BBO 주문은 `timeInForce` 및 `bestNth` 값을 반드시 입력해야 합니다. ; /** * 주문 유형이 `best`인 경우 주문 가격을 선택합니다. (그 외 주문 유형에서는 생략합니다.) * - `timeInForce`가 `gtc`, `ioc`, `fok`인 경우, 반대 방향 N호가(최유리)를 의미하며 1~5 사이의 값을 입력합니다. * - `timeInForce`가 `po`인 경우, 자기 방향 N호가(최우선)를 의미하며 1~5 사이의 값을 입력합니다. * Example: 1 */ bestNth?: number; /** * 주문 취소 조건 * * Time in Force 값을 입력하지 않았다면 다음 기본값이 설정됩니다. * - 지정가 주문: `gtc` * - 시장가 주문: `ioc` (시장가 주문에서는 `ioc`만 사용할 수 있습니다.) * BBO 주문에서는 Time in Force 값을 반드시 직접 입력해야 합니다. */ timeInForce?: | "gtc" // 일반적인 지정가 주문. 전량 체결되거나 취소될 때까지 유효한 주문입니다. (Good-Till-Canceled) | "ioc" // 주문호가 또는 더 좋은 가격으로 즉시 체결시킵니다. 체결되지 않은 잔량은 취소됩니다. (Immediate-Or-Cancel) | "fok" // 주문호가 또는 더 좋은 가격으로 즉시 전량 체결시킵니다. 전량 체결이 불가하다면 주문이 취소됩니다. (Fill-Or-Kill) | "po" // 주문 입력 시 바로 체결되는 상황이라면 주문이 취소됩니다. 즉, 메이커(Maker) 주문만 발생합니다. (Post-Only) ; /** * 사용자 지정 주문 ID. 동일한 clientOrderId로 여러 번 요청해도 한 번만 처리되며, `GET /v2/orders` API에서 clientOrderId로 주문을 검색할 수 있습니다. * 숫자와 영문 대소문자 및 -, _, . 등으로 이루어진 문자열을 최대 36자까지 설정할 수 있습니다. 정규표현식: `[0-9a-zA-Z.:_-]{1,36}` * 단, `expired`, `canceled` 상태의 주문은 종결 후 약 3일이 지난 후에는 `clientOrderId`로 검색할 수 없거나 그 `clientOrderId`를 다시 사용할 수 있습니다. * Example: "20141231-155959-abcdef" */ clientOrderId?: string; /** * 가격 보호 사용 여부. `true`를 입력하면 가격 보호 기능을 사용해, 이 주문은 Taker 체결 시 가격 보호 범위 안에서만 체결되게 합니다. * `ppPercent` 값으로 가격 보호 범위를 설정할 수 있습니다. */ pp?: string; /** * 가격 보호 범위. 1 이상 100 이하의 정수를 입력합니다. 가격 보호 범위가 5라면, 이 주문은 Taker 체결 시 중간가(매도 1호가와 매수 1호가의 중간) 대비 5% 내에서만 체결되고 체결되지 않은 수량은 취소됩니다. * 가격 보호를 사용하지만 ppPercent를 입력하지 않았다면 거래소 기본값(5)을 사용합니다. */ ppPercent?: string; }; // JSON 응답 (`{ success: true, data }` 형태로 래핑되며, 아래는 `data` 필드의 구조) type Response = { /** 주문 ID. Example: 1234 */ orderId: number; }; ``` ### 오류 코드 - `DUPLICATE_CLIENT_ORDER_ID` — 중복된 clientOrderId입니다. - `INVALID_CURRENCY_PAIR` — 잘못된 거래쌍입니다. - `INVALID_USER_STATUS` — 거래가 제한된 계정입니다. 코빗 웹사이트 또는 고객센터를 통해 상태를 확인하세요. - `BAD_REQUEST` — 잘못된 입력입니다. - `NO_BALANCE` — 잔고가 부족합니다. - `ONLY_SELL_LIMIT_ORDERS_ALLOWED` — 거래지원 직후에는 지정가 매도 주문만 가능합니다. - `ORDER_VALUE_TOO_LARGE` — 주문 최대 금액 초과입니다. 주문금액 한도는 마켓별로 정해지며 해당 거래쌍의 상대자산 단위입니다. `GET /v2/currencyPairs`의 `maxOrderValue`, `quoteCurrency`를 참고하세요. 수량*가격(또는 `amt`)을 한도 이하로 변경해 주세요. - `ORDER_VALUE_TOO_SMALL` — 주문 최소 금액 미달입니다. 주문금액 한도는 마켓별로 정해지며 해당 거래쌍의 상대자산 단위입니다. `GET /v2/currencyPairs`의 `minOrderValue`, `quoteCurrency`를 참고하세요. 수량*가격(또는 `amt`)을 한도 이상으로 변경해 주세요. - `PRICE_OVER_UPPER_BOUND` — 거래지원 직후에는 특정한 가격 초과의 호가를 입력할 수 없습니다. - `PRICE_UNDER_LOWER_BOUND` — 거래지원 직후에는 특정한 가격 미만의 호가를 입력할 수 없습니다. - `PRICE_TICK_SIZE_INVALID` — 지정가 입력 단위가 올바르지 않습니다. - `TOO_MANY_OPEN_ORDERS` — 미체결 주문 개수 제한을 초과했습니다. ### 예시 #### 요청 ```sh curl -X POST -H X-KAPI-KEY=API키 'https://api.korbit.co.kr/v2/orders' -H Content-Type: application/x-www-form-urlencoded --data-raw orderType=limit&price=250000&qty=10&side=buy&symbol=btc_krw&timeInForce=gtc×tamp=시각&signature=서명 ``` #### 응답 ```json { "success": true, "data": { "orderId": 1234 } } ``` ## 주문 취소하기 {#delete-_v2_orders} ``` DELETE /v2/orders ``` 주문 취소 요청을 전송합니다. API 요청이 성공한 경우 주문 취소 요청이 성공적으로 접수되었음을 뜻합니다. 오류 코드가 `ORDER_ALREADY_CANCELED`, `ORDER_ALREADY_FILLED`, `ORDER_ALREADY_EXPIRED` 중 하나인 경우, 지정한 주문이 이미 종결되었음을 뜻합니다. **필요 권한:** `writeOrders` ### 스키마 ```ts // URL 쿼리 파라미터 type RequestQuery = { /** 대상 거래쌍의 심볼. Example: "btc_krw" */ symbol: string; /** 어카운트 시퀀스 번호. 기본값은 1 (메인 어카운트). Example: 1 */ accountSeq?: number; /** 주문하기 API에서 생성된 `orderId` 값. `orderId`와 `clientOrderId` 중 하나를 반드시 입력해야 합니다. Example: 1234 */ orderId?: number; /** 주문하기 API 요청 시 입력한 `clientOrderId` 값. `orderId`와 `clientOrderId` 중 하나를 반드시 입력해야 합니다. Example: "20141231-155959-abcdef" */ clientOrderId?: string; }; ``` ### 오류 코드 - `ORDER_NOT_FOUND` — 지정한 주문 ID가 존재하지 않습니다. - `ORDER_ALREADY_CANCELED` — 지정한 주문이 이미 취소되었습니다. - `ORDER_ALREADY_FILLED` — 지정한 주문이 이미 전량 체결되었습니다. - `ORDER_ALREADY_EXPIRED` — 지정한 주문은 실패 처리된 주문입니다. - `TRY_AGAIN` — 주문 접수 처리중입니다. 잠시 후 다시 시도해 주세요. ### 예시 #### 요청 ```sh curl -X DELETE -H X-KAPI-KEY=API키 'https://api.korbit.co.kr/v2/orders?orderId=1234&symbol=btc_krw×tamp=시각&signature=서명' ``` #### 응답 ```json { "success": true } ```