API가 어떻게 작동하는지

API 엔드포인트

모든 API 요청은 다음 API 엔드포인트로 해야 합니다:

https://api.cryptohopper.com/v1/

지원되는 요청 메서드

GET GET을 사용하여 자원(예: 모든 트레이딩봇 목록, 현재 오더, 최근 거래 내역)을 가져옵니다. 이 방식은 안전하고 이중적입니다.

POST POST를 이용하여 리소스를 생성하세요. 예를 들어, 새로운 매수/매도 주문을 등록하거나 새로운 거래봇을 생성하세요.

PATCH PATCH를 이용해서 자원을 업데이트해 보세요. 예를 들어, 거래봇을 시작하거나 중지하거나, 개인 정보를 업데이트하는 데 사용할 수 있어요. 이 방법으로는 요청 본문에 수정하고 싶은 필드만 제공하면 돼요.

DELETE 자원을 삭제하려면 삭제를 사용하세요.

요청 파라미터

API에서 사용하는 네 가지 매개변수 유형이 있습니다: 경로, 쿼리 문자열, 헤더 및 요청 본문 매개변수입니다. 요청 본문 매개변수는 POST 및 PATCH 요청의 JSON 요청 본문에 게시된 데이터입니다. 헤더 매개변수는 당연히 헤더에 게시해야 하는 매개변수입니다. 헤더, 경로 및 쿼리 문자열 매개변수에 대한 자세한 내용은 아래에서 확인할 수 있습니다.

헤더 파라미터

우리 API에 대한 모든 요청은 헤더에 다음 값들을 포스팅하여 인증해야 합니다.

  • access-token - OAuth2 인증으로 받은 접근 토큰입니다.

경로 매개변수

이들은 엔드포인트의 URI에 제공되는 매개변수입니다. 예를 들어 GET Hopper 엔드포인트:

https://api.cryptohopper.com/v1/hopper/{hopper_id}

트레이딩봇을 고유 ID로 검색하려면 {hopper_id} 자리에 해당 ID 값을 넣어야 해. 예를 들어, ID가 37인 트레이딩봇을 가져오려면 다음 URL을 요청해야 해:

https://api.cryptohopper.com/v1/hopper/37

일부 엔드포인트는 여러 매개변수가 필요합니다. 예를 들어 이전 혹퍼에서 특정 주문을 반환하려면 다음 URL을 호출해야 합니다.

https://api.cryptohopper.com/v1/hopper/{hopperId}/order/{orderId}

그리고 호퍼와 주문 ID를 매개변수로 바꿔주면:

https://api.cryptohopper.com/v1/hopper/37/order/231

각 API 엔드포인트에서 필요한 매개변수의 자세한 목록은 API 참조 가이드를 참고하세요.

쿼리 문자열 매개변수

이러한 종류의 매개변수는 데이터 필터링 및/또는 페이징을 위한 GET 요청에 사용합니다. 이러한 매개변수는 경로에 명시되지 않고 URL 문자열에서 ‘&’ 문자로 구분된 값 세트로 지정됩니다.

예를 들어, 거래 로봇의 비트코인 매수 주문을 가져오려면, Hopper 주문 엔드포인트를 다음과 같이 호출할 수 있습니다.

https://api.cryptohopper.com/v1/hopper/37/order/?order_type=buy&coin=btc
        

API 참조를 보면, 이 경우 order_type 매개변수는 ‘buy’ 또는 ‘sell’ 값을 가질 수 있으며, coin 매개변수는 모든 소문자 암호화폐 코인 코드일 수 있습니다.

응답 형식

모든 응답은 JSON 객체 형식으로 제공됩니다. 따라서 모든 응답에서 볼 수 있는 MIME 종류는 application/json입니다. 각 요청 및 응답 본문의 구체적인 JSON 응답 형식은 API 참조 문서를 참고하세요.

HTTP 응답 코드

우리는 RFC 2616 및 RFC 6585 표준에서 정의된 응답 상태 코드를 활용합니다..

200 - OK 요청 성공. 클라이언트는 응답 본문과 헤더에 요청 결과를 받습니다.

201 – Created 요청이 승인되었으며 새로운 자원이 생성되었습니다.

202 – Accepted 요청이 처리를 위해 승인되었지만, 처리가 완료되지 않았습니다.

204 – No Content 서버가 요청을 성공적으로 처리했지만, 내용은 반환되지 않습니다.

304 – Not Modified 요청 헤더 If-Modified-Since 또는 If-None-Match에 명시된 버전 이후 자원이 수정되지 않았습니다. 클라이언트가 이전에 다운로드한 복사본을 가지고 있으므로 자원을 재전송할 필요가 없습니다.

HTTP 에러 코드

400 – Bad Request 서버가 클라이언트 에러로 요청을 처리할 수 없거나 거부합니다. 에러 정보는 메시지 본문에 반영됩니다.

401 – Unauthorized 요청에 사용자 인증이 필요하며, API 자격 증명이 잘못되었거나 누락되어 거부되었습니다.

403 – Forbidden 서버가 요청을 이해했지만, 접근 권한이 없거나 자격 증명이 취소되어 처리를 거부합니다.

404 – Not found 요청한 리소스를 찾을 수 없습니다. 이 오류는 일시적이거나 영구적인 문제 때문일 수 있습니다.

405 – Method Not Allowed 사용된 요청 방식은 요청된 API 엔드포인트에서 지원되지 않습니다.

429 – Too Many Request 요청이 너무 많습니다. 새 요청까지 몇 초를 기다려야 하는지는 오류 메시지에 나와 있습니다. 현재 한도는 요청 한도 섹션을 참고하세요.

500 – Internal Server Error 서버에서 에러가 발생하여 요청을 처리할 수 없습니다. 개발자들은 첫 경고로 일주일 동안 커피를 못 마십니다...

503 – Service Unavailable 저희 서버에 문제가 발생하여, 귀하의 요청을 처리할 수 없습니다.

오류 메시지

API가 에러 코드를 반환할 때마다, 에러 설명이 담긴 JSON 객체를 본문에 붙입니다. 에러 메시지는 다음과 같습니다.

{
            "status": 400,
            "error": 1,
            "message": "Missing required request parameters: [access_token]"
        }
        

요금 제한

API는 액세스 토큰 하나로 앱이 보낼 수 있는 요청 수를 제한합니다: 분당 30회, 그리고 초당 최대 1회입니다. 주문 생성이나 포지션 매도는 8초에 1회, 호퍼 백테스트는 2초에 1회로 제한됩니다.

한도를 넘으면 다음 요청까지 몇 초를 기다려야 하는지 알려 주는 메시지와 함께 429 오류가 반환됩니다.

요청 한도 및 오류