NAV Navbar
java javascript php python ruby
  • 소개
  • 인증
  • 인증이 필요한 API
  • 인증이 필요하지 않은 API
  • Errors
  • 소개

    Welcome to the GOPAX API!

    REST API를 통해 GOPAX의 일부 기능을 이용하실 수 있도록 아래 문서를 공유합니다.

    REST API 주소

    고팍스의 REST API는 계정/주문 관리 및 공개 마켓 데이터에 대한 엔드포인트를 제공합니다.

    https://api.gopax.co.kr

    API 호출 횟수 제한

    인증

    Private API에 인증하기 위해, REST 요청에 항상 다음의 HTTP 헤더가 포함되어야 합니다.

    1. API-KEY: 발급받은 API 키
    2. SIGNATURE: 메시지 서명 값 (* SIGNATURE 생성 과정)
    3. NONCE: 중복되지 않고 계속 증가하는 값 (통상적으로 timestamp)

    SIGNATURE 생성 과정

    인증이 필요한 API는 아래 코드를 이용해주세요.

    String generateSignature(String secret, String method, String requestPath,
      String body) throws NoSuchAlgorithmException, InvalidKeyException {
      String algorithm = "HmacSHA512";
    
      long nonce = System.currentTimeMillis() / 1000;
      String endPoint = requestPath.split("\\?")[0];
    
      String what = nonce + method + endPoint + (body == null ? "" : body);
    
      Mac sha512Hmac = Mac.getInstance(algorithm);
      sha512Hmac.init(new SecretKeySpec(Base64.decode(secret), algorithm));
    
      return Base64.encodeAsString(sha512Hmac.doFinal(what.getBytes()));
    }
    
    require 'json'
    require 'openssl'
    require 'Base64'
    
    def generateSignature(secret, nonce, method, path, body=nil)
      _body = body ? body.to_json : ''
      requestPath = path.split('?').first
      what        = nonce.to_s + method + requestPath + _body;
      _secret     = Base64.decode64(secret);
      return Base64.strict_encode64(OpenSSL::HMAC.digest('SHA512', _secret, what))
    end
    
    import time, base64, hmac, hashlib
    
    nonce = str(time.time())
    method = 'GET'
    request_path = '/balances'
    
    what = nonce + method + request_path # + request_body
    key = base64.b64decode(secret)
    signature = hmac.new(key, what, hashlib.sha512)
    return base64.b64encode(signature.digest())
    
    function generateSignature($secret, $nonce, $method, $path, $body = null)
    {
      $_body = $body ? json_encode($body) : '';
      $tokenizedPath = explode('?', $path);
      $requestPath   = $tokenizedPath[0];
      $what          = $nonce . $method . $requestPath . $_body;
      $secret        = base64_decode($secret);
      return base64_encode(hash_hmac('sha512', $what, $secret, true));
    }
    
    const crypto = require('crypto');
    
    const generateSignature = (secret, nonce, method, path, body = null) => {
      const requestPath = path.split('?')[0];
      const _body = body ? JSON.stringify(body) : '';
    
      const what = `${nonce}${method}${requestPath}${_body}`;
      const key = Buffer(secret, 'base64');
      const hmac = crypto.createHmac('sha512', key);
      return hmac.update(what).digest('base64');
    };
    
    1. 다음의 내용을 순서대로 문자열로 연결합니다.
      1. 헤더의 NONCE 값
      2. HTTP Method(대문자로): 'GET', 'POST', 'DELETE' 등
      3. API 엔드포인트 경로 (예: '/orders', '/trading-pairs/ETH-KRW/book')
      4. JSON 형식의 요청 변수 본문 (없을 경우 아무 문자열도 연결하지 마십시오)
    2. 발급 받은 Secret Key를 base64로 디코딩합니다.
    3. 2.의 값을 Secret key를 사용하여 sha512 HMAC 으로 서명합니다.
    4. 3.의 값을 base64로 인코딩합니다.

    HTTP 헤더 예제

    API-KEY: 128f0123-2a5d-48f5-8f19-e937f38f0a99
    SIGNATURE: gn2poOBVCAd5GLqXFAZGK9Pk4VD7+OaNtDIkFjejwIBjBm1X/DYPZVAP1rex6XqwH8vHt36ap26lTN85HVJz2g==
    NONCE: 1520994527165
    Content-Type: application/json

    인증이 필요한 API

    잔액 조회하기

    결과:

    [
      {
        "asset": "KRW",
        "avail": 9101080.53,
        "hold": 0,
        "pendingWithdrawal": 0
      }, {
        "asset": "ETH",
        "avail": 0,
        "hold": 0,
        "pendingWithdrawal": 0
      }, {
        "asset": "BTC",
        "avail": 0.42317058,
        "hold": 0,
        "pendingWithdrawal": 0
      }, {
        "asset": "BCH",
        "avail": 0,
        "hold": 0,
        "pendingWithdrawal": 0
      }
    ]
    

    HTTP 요청

    GET /balances

    결과값 설명

    { "asset": <Asset Name>, "avail": <Avail>, "hold": <Hold>, "pendingWithdrawal": <Pending Withdrawal> }, {

    설명
    Asset Name 자산 이름. 자산 목록 조회하기에서 전체 목록을 확인할 수 있습니다.
    Avail 거래 가능 금액(수량)
    Hold 미체결 금액(수량)
    Pending Withdrawal 출금 중인 금액(수량)

    자산 이름에 따라 잔액 조회하기

    결과:

    {
      "asset": "KRW",
      "avail": 9101080.53,
      "hold": 0,
      "pendingWithdrawal": 0
    }
    

    HTTP 요청

    GET /balances/<Asset Name>

    URL 파라미터

    파라미터 설명
    Asset Name 자산 이름. 자산 목록 조회하기에서 전체 목록을 확인할 수 있습니다.

    결과값 설명

    { "asset": <Asset Name>, "avail": <Avail>, "hold": <Hold>, "pendingWithdrawal": <Pending Withdrawal> }

    설명
    Asset Name 자산 이름. 자산 목록 조회하기에서 전체 목록을 확인할 수 있습니다.
    Avail 거래 가능 금액(수량)
    Hold 미체결 금액(수량)
    Pending Withdrawal 출금 중인 금액(수량)

    주문 조회하기

    결과:

    [
      {
        "id": "23712",
        "price": 101,
        "amount": 100,
        "tradingPairName": "CND-KRW",
        "side": "sell",
        "type": "limit",
        "createdAt": "2018-01-08T12:44:03.000Z"
      }, {
        "id": "23916",
        "price": 90,
        "amount": 30,
        "tradingPairName": "CND-KRW",
        "side": "buy",
        "type": "limit",
        "createdAt": "2018-01-09T10:43:10.000Z"
      }
    ]
    

    HTTP 요청

    GET /orders

    결과값 설명

    { "id": <ID>, "price": <Price>, "amount": <Amount>, "tradingPairName": <Trading Pair>, "side": <Side>, "type": <Type>, "createdAt": <Created At> }, {

    설명
    ID 주문 고유번호
    Price 주문 가격
    Amount 주문 수량
    Trading Pair 거래 쌍. 거래쌍 목록 조회하기에서 전체 목록을 확인할 수 있습니다.
    Side 주문 구분 (buy: 구매 또는 sell: 판매)
    Type 주문 종류 (limit: 지정가)
    Created At 주문 시각

    주문 ID로 주문 조회하기

    결과:

    {
      "id": "23712",
      "status": "placed",
      "side": "sell",
      "type": "limit",
      "price": 101,
      "amount": 100,
      "remaining": 100,
      "tradingPairName": "CND-KRW",
      "createdAt": "2018-01-08T12:44:03.000Z"
    }
    

    HTTP 요청

    /orders/<Order Id>

    결과값 설명

    { "id": <ID>, "status": <Status>, "side": <Side>, "type": <Type>, "price": <Price>, "amount": <Amount>, "remaining": <Remaining>, "tradingPairName": <Trading Pair>, "createdAt": <Created At> }

    설명
    ID 주문 고유번호
    Status 상태 placed: 주문됨, cancelled: 취소됨, completed: 체결됨, updated: 부분 체결됨
    Side 주문 구분 (buy: 구매 또는 sell: 판매)
    Type 주문 종류 (limit: 지정가)
    Price 주문 가격
    Amount 주문 수량
    Remaining 주문 잔량
    Trading Pair 거래 쌍. 거래쌍 목록 조회하기에서 전체 목록을 확인할 수 있습니다.
    Created At 주문 시각

    주문 등록하기

    결과:

    {
      "id": "98723",
      "price": 750000,
      "amount": 9,
      "tradingPairName": "ETH-KRW",
      "side": "buy",
      "type": "limit",
      "createdAt": "2018-01-09T10:43:10.000Z"
    }
    

    HTTP 요청

    POST /orders

    요청 본문 설명

    { "type": <Type>, "side": <Side>, "price": <Price>, "amount": <Amount>, "tradingPairName": <Trading Pair> }

    설명
    Type 주문 종류 (limit: 지정가)
    Side 주문 구분 (buy: 구매 또는 sell: 판매)
    Price 주문 가격
    Amount 주문 수량
    Trading Pair 거래 쌍. 거래쌍 목록 조회하기에서 전체 목록을 확인할 수 있습니다.

    ETH-KRW를 지정가로 100만원에 ETH 10개 매수 예제

    {
        "type": "limit",
        "side": "buy",
        "price": 1000000,
        "amount": 10,
        "tradingPairName": "ETH-KRW"
    }
    

    최소 주문수량

    거래 쌍 최소 주문 수량 거래 쌍 최소 주문 수량
    ETH-KRW 0.001 CND-BTC 1
    BTC-KRW 0.0001 SNT-BTC 1
    BCH-KRW 0.001 ZRX-BTC 1
    XLM-KRW 1 CND-KRW 1
    ZEC-KRW 0.001 SNT-KRW 1
    LTC-KRW 0.01 ZRX-KRW 1
    ETH-BTC 0.001 EOS-KRW 1
    BCH-BTC 0.0005 OMG-KRW 1
    XLM-BTC 1 QTUM-KRW 0.05
    ZEC-BTC 0.001 MOBI-KRW 1
    LTC-BTC 0.005 STEEM-KRW 1
    XLM-ETH 1 SBD-KRW 1
    ENG-KRW 0.1 ELF-KRW 1
    CVC-KRW 1 QASH-KRW 1
    REQ-BTC 1 XRP-KRW 1
    QASH-BTC 1

    결과값 설명

    { "id": <ID>, "price": <Price>, "amount": <Amount>, "tradingPairName": <Trading Pair>, "side": <Side>, "type": <Type>, "createdAt": <Created At> }

    설명
    ID 주문 고유번호
    Price 주문 가격
    Amount 주문 수량
    Trading Pair 거래 쌍. 거래쌍 목록 조회하기에서 전체 목록을 확인할 수 있습니다.
    Side 주문 구분 (buy: 구매 또는 sell: 판매)
    Type 주문 종류 (limit: 지정가)
    Created At 주문 시각

    주문 ID로 주문 취소하기

    결과:

    {
    }
    

    HTTP 요청

    DELETE /orders/<Order Id>

    URL 파라미터

    파라미터 설명
    Order Id 주문 고유번호

    사용자 거래 기록 조회하기

    결과:

    [
      {
        "id": 23152,
        "orderId": 23712,
        "baseAmount": 0.00968007,
        "quoteAmount": 99999.963135,
        "fee": 0,
        "price": 10330500,
        "timestamp": "2018-03-10T16:07:32.000Z",
        "side": "buy",
        "tradingPairName": "BTC-KRW"
      }, {
        "id": 23302,
        "orderId": 23916,
        "baseAmount": 0.00149051,
        "quoteAmount": 15399.94932,
        "fee": 0,
        "price": 10332000,
        "timestamp": "2018-03-10T16:03:54.000Z",
        "side": "buy",
        "tradingPairName": "BTC-KRW"
      }
    ]
    

    HTTP 요청

    GET /trades

    Query 파라미터

    파라미터 필수 여부 설명
    limit 선택 반환되는 항목의 갯수 (최대 100)
    pastmax 선택 이 ID보다 오래된 데이터를 제외함
    latestmin 선택 이 ID보다 새로운 최신 데이터를 가져옴
    after 선택 이 타임스탬프 이후의 데이터를 제외함 (ms 단위)
    before 선택 이 타임스탬프 이전의 데이터를 제외함 (ms 단위)

    결과값 설명

    { "id": <ID>, "orderId": <Order ID>, "baseAmount": <Base Amount>, "quoteAmount": <Quote Amount>, "fee": <Fee>, "price": <Price>, "timestamp": <Timestamp>, "side": <Side>, "tradingPairName": <Trading Pair> }, {

    설명
    ID 거래 고유번호
    Order ID 주문 고유번호
    Base Amount 거래 수량 (구매시 Fee 가 포함된 수량)
    Quote Amount 거래 수량 * 주문 가격 (판매시 Fee 가 포함된 금액)
    Fee 거래 수수료 수수료테이블 링크
    Price 주문 가격
    Timestamp 거래 체결 시간
    Side 거래 체결 종류 (buy 또는 sell)
    Trading Pair 거래 쌍. 거래쌍 목록 조회하기에서 전체 목록을 확인할 수 있습니다.

    인증이 필요하지 않은 API

    자산 목록 조회하기

    결과:

    [
      {
        "id": "KRW",
        "name": "대한민국 원"
      }, {
        "id": "ETH",
        "name": "이더리움"
      }, {
        "id": "BTC",
        "name": "비트코인"
      }
    ]
    

    GOPAX 지갑에서 취급하는 모든 자산의 목록을 조회할 수 있습니다.

    HTTP 요청

    GET /assets

    거래쌍 목록 조회하기

    결과:

    [
      {
        "name": "ETH-KRW",
        "baseAsset": "ETH",
        "quoteAsset": "KRW"
      }, {
        "name": "BTC-KRW",
        "baseAsset": "BTC",
        "quoteAsset": "KRW"
      }, {
        "name": "BCH-KRW",
        "baseAsset": "BCH",
        "quoteAsset": "KRW"
      }
    ]
    

    HTTP 요청

    GET /trading-pairs

    Ticker 조회하기

    결과:

    {
      "price": 10194500,
      "ask": 10195000,
      "bid": 10184500,
      "volume": 1752.05558316,
      "time": "2018-03-14T03:50:41.184Z"
    }
    

    HTTP 요청

    GET /trading-pairs/<Trading Pair>/ticker

    URL 파라미터

    파라미터 설명
    Trading Pair 거래 쌍. 거래쌍 목록 조회하기에서 전체 목록을 확인할 수 있습니다.

    Orderbook 조회하기

    결과:

    {
      "bid": [
        ["481172", 10163500, 0.0001]
      ],
      "ask": [
        ["481205", 10164000, 3.10024529]
      ]
    }
    

    HTTP 요청

    GET /trading-pairs/<Trading Pair>/book

    URL 파라미터

    파라미터 설명
    Trading Pair 거래 쌍. 거래쌍 목록 조회하기에서 전체 목록을 확인할 수 있습니다.

    Query 파라미터

    파라미터 필수 여부 설명
    level 선택 호가창의 상세정보 수준

    1 = 매수호가 및 매도호가
    2 = 매수 및 매도 주문 각 50개
    기타 = 호가창 전체

    결과값 설명

    { "bid": [ [<ID>, <가격>, <수량>] ], "ask": [ ["481205", 10164000, 3.10024529] ] }

    설명
    ID 호가에 부여되는 고유번호 (더이상 사용되지 않습니다)
    가격 호가에 해당하는 가격
    수량 호가에 해당하는 수량

    최근 체결 거래 조회하기

    결과:

    [
      {
        "time": "2018-03-14T04:01:17.000Z",
        "date": 1521000077,
        "id": 6436174,
        "price": 10163000,
        "amount": 0.38115097,
        "side": "sell"
      }, {
        "time": "2018-03-14T04:01:17.000Z",
        "date": 1521000077,
        "id": 6436173,
        "price": 10164500,
        "amount": 0.12818829,
        "side": "sell"
      }, {
        "time": "2018-03-14T04:01:11.000Z",
        "date": 1521000071,
        "id": 6436171,
        "price": 10163000,
        "amount": 0.098,
        "side": "sell"
      }
    ]
    

    HTTP 요청

    GET /trading-pairs/<Trading Pair>/trades

    URL 파라미터

    파라미터 설명
    Trading Pair 거래 쌍. 거래쌍 목록 조회하기에서 전체 목록을 확인할 수 있습니다.

    Query 파라미터

    파라미터 필수 여부 설명
    limit 선택 반환되는 항목의 갯수 (최대 100)
    pastmax 선택 이 ID보다 오래된 데이터를 제외함
    latestmin 선택 이 ID보다 새로운 최신 데이터를 가져옴
    after 선택 이 타임스탬프 이후의 데이터를 제외함 (ms 단위)
    before 선택 이 타임스탬프 이전의 데이터를 제외함 (ms 단위)

    결과값 설명

    { "time": <Time>, "id": <ID>, "price": <Price>, "amount": <Amount>, "side": <Side>, }, {

    설명
    Time 거래 체결 시각
    ID 거래 체결 고유번호
    Price 거래 체결 가격
    Amount 거래 체결 수량
    Side 거래 체결 종류 (buy 또는 sell)

    최근 24시간 통계 조회하기

    결과:

    {
      "open": 10297000,
      "high": 10362500,
      "low": 9901000,
      "close": 10089500,
      "volume": 1700.84866009,
      "time": "2018-03-14T05:02:37.337Z"
    }
    

    HTTP 요청

    GET /trading-pairs/<Trading Pair>/stats

    결과값 설명

    { "open": <Open>, "high": <High>, "low": <Low>, "close": <Close>, "volume": <Volume>, "time": <Time>, }

    설명
    Open 24시간 전의 가격
    High 24시간 동안의 최고가
    Low 24시간 동안의 최저가
    Close 현재가 (1분마다 갱신)
    Volume 24시간 동안의 거래량
    Time 최근 데이터 갱신 시각

    과거 기록 조회하기

    결과:

    [
      [
        1521004020000,
        10081000,
        10081000,
        10081000,
        10081000,
        0.0398393
      ],
      [
        1521004080000,
        10081000,
        10081000,
        10081000,
        10081000,
        0.01
      ]
    ]
    

    HTTP 요청

    GET /trading-pairs/<Trading Pair>/candles?start=<Start>&end=<End>&interval=<Interval>

    URL 파라미터

    파라미터 설명
    Trading Pair 거래 쌍. 거래쌍 목록 조회하기에서 전체 목록을 확인할 수 있습니다.

    Query 파라미터

    파라미터 필수 여부 설명
    Start 필수 시작 시점 Timestamp (ms 단위)
    End 필수 종료 시점 Timestamp (ms 단위)
    Interval 필수 희망하는 시간 간격 (분 단위, 1/5/30/1440)

    결과값 설명

    [ [ <Time>, <Low>, <High>, <Open>, <Close>, <Volume> ], [ 1521004080000, 10081000, 10081000, 10081000, 10081000, 0.01 ] ]

    설명
    Time 최근 데이터 갱신 시각
    Low 24시간 동안의 최저가
    High 24시간 동안의 최고가
    Open 24시간 전의 가격
    Close 현재가 (1분마다 갱신)
    Volume 24시간 동안의 거래량

    모든 거래쌍의 최근 24시간 통계 조회하기

    결과:

    [
      {
        "name": "ETH-KRW",
        "open": 780000,
        "high": 784000,
        "low": 756000,
        "close": 763500,
        "volume": 1602.93236136,
        "time": "2018-03-14T05:13:08.364Z"
      }, {
        "name": "BTC-KRW",
        "open": 10308000,
        "high": 10362500,
        "low": 9901000,
        "close": 10074000,
        "volume": 1687.88476801,
        "time": "2018-03-14T05:12:08.245Z"
      }, {
        "name": "BCH-KRW",
        "open": 1234000,
        "high": 1234000,
        "low": 1120000,
        "close": 1149500,
        "volume": 35.12077207,
        "time": "2018-03-14T04:40:06.535Z"
      }
    ]
    

    HTTP 요청

    GET /trading-pairs/stats

    결과값 설명

    { "name": <Trading Pair>, "open": <Open>, "high": <High>, "low": <Low>, "close": <Close>, "volume": <Volume>, "time": <Time> }, {

    설명
    Trading Pair 거래 쌍. 거래쌍 목록 조회하기에서 전체 목록을 확인할 수 있습니다.
    Open 24시간 전의 가격
    High 24시간 동안의 최고가
    Low 24시간 동안의 최저가
    Close 현재가 (1분마다 갱신)
    Volume 24시간 동안의 거래량
    Time 최근 데이터 갱신 시각

    Errors

    HTTP Status (응답 코드)

    오류 코드 설명
    400 잘못된 요청 - 요청 형식이 유효하지 않음
    401 권한 없음 - 잘못된 API 키
    403 금지됨 - 요청한 리소스에 대한 접근 권한이 없음
    404 찾을 수 없음
    429 요청 한도 초과 - API 호출 횟수 제한 초과
    500 내부 서버 오류 - 서버에 문제가 발생함

    GOPAX 오류

    오류 메시지 예제:

    {
      "errorCode": 201,
      "errorMessage": "Order server error: 201"
    }
    
    오류 코드 설명
    100, 106 자산 이름(Asset Name)이 올바르지 않음. 자산 목록 조회하기에서 전체 목록을 확인할 수 있습니다.
    103 주문 종류(Type)가 올바르지 않음.
    101, 104 거래 쌍(Trading Pair)이 올바르지 않음. 거래쌍 목록 조회하기에서 전체 목록을 확인할 수 있습니다.
    105 거래 쌍(Trading Pair)이 일시적으로 비활성화 되어있음. 거래쌍 목록 조회하기에서 전체 목록을 확인할 수 있습니다.
    107 주문 수량이 올바르지 않음.
    108 주문 가격이 올바르지 않음.
    201 주문을 위한 잔고가 부족.
    202 주문 고유번호가 일치하지 않음.
    203 주문 수량 X 주문 가격이 너무 큼.
    204 현재 매수 주문이 허용되지 않음. 공지사항을 확인하십시오.
    10155 API키가 올바르지 않음






    © Streami, Inc. 모든 권리 보유.