베이시스 히스토리(1시간 단위)
단일 코인의 1시간 단위 베이시스 시계열로, 거래소별 값과 거래소 통합 집계(중앙값, 평균, OI 가중)를 제공합니다.
/api/sd/basis/history요청
쿼리 파라미터
| 이름 | 타입 | 필수 | 기본값 | 허용 값 | 설명 |
|---|---|---|---|---|---|
| coin | string | 필수 | — | — | 코인 심볼, 대소문자 구분 없음(예: `BTC`). 값이 없거나 형식이 잘못되면 400을 반환합니다. 예시: BTC |
| kind | string | 선택 | perp | perp, spot_perp | `perp`: 같은 거래소의 지수 가격 대비 마크 가격. `spot_perp`: 같은 거래소의 현물 가격 대비 무기한 선물 가격. |
| range | string | 선택 | 24h | 24h, 7d, 30d | 조회 기간, 1시간당 포인트 하나. |
| exchange | string | 선택 | — | — | 거래소 ID 하나. 기본값: 모든 거래소. 알 수 없는 ID는 400을 반환합니다. |
요청 예시
curl -s "https://www.coinboss.com/api/sd/basis/history?coin=BTC"응답 필드
필드 표는 실제 응답에서 생성되므로 엔드포인트가 반환하는 내용을 그대로 보여 줍니다. 경로에서 a[]는 배열 항목을, {*}는 코인이나 거래소처럼 동적 이름을 키로 갖는 객체를 뜻합니다.
| 필드 | 타입 | 단위 | 설명 |
|---|---|---|---|
| success | boolean | — | 요청이 성공하면 true입니다. 실패하면 본문은 `{ success: false, code, error, request_id }`입니다. |
| schema | string | — | 이 응답의 스키마 ID. 기존 필드의 의미나 타입이 바뀔 때만 변경됩니다. |
| now | number | ms | 응답이 생성된 서버 시각. |
| coin | string | — | 코인 심볼(대문자). |
| kind | string | — | `perp` 또는 `spot_perp`. |
| range | string | — | 적용된 조회 기간. |
| interval | string | — | 시리즈 포인트 간격. |
| exchange | string|null | — | 거래소 ID(소문자). |
| aggregate | array | — | 해당 섹션의 거래소 간 집계. |
| aggregate[] | object | — | 해당 섹션의 거래소 간 집계. |
| aggregate[].t | number | ms | 시간 버킷의 시작 시각. |
| aggregate[].median_pct | number | % | 거래소당 주 계약 하나를 대상으로 한 베이시스 중앙값. |
| aggregate[].mean_pct | number | % | 중앙값과 동일한 집합에 대한 단순 평균. |
| aggregate[].oi_weighted_pct | number | % | 미결제약정으로 가중한 베이시스. OI 가중치가 없는 행은 제외됩니다. |
| aggregate[].n_exchanges | number | — | 집계에 포함된 거래소. |
| series | array | — | 거래소당 시리즈 하나. |
| series[] | object | — | 거래소당 시리즈 하나. |
| series[].exchange | string | — | 거래소 ID(소문자). |
| series[].symbol | string | — | CoinBoss 저장 형식의 계약 심볼. |
| series[].primary | boolean | — | 중앙값과 평균에서 해당 거래소를 대표하는 계약이면 true. |
| series[].in_aggregate | boolean | — | 행이 포함 규칙을 통과했으면 true. |
| series[].points | array | — | `[hour start in ms, basis in %]` 쌍, 오래된 순. |
| series[].points[] | array | — | `[hour start in ms, basis in %]` 쌍, 오래된 순. |
| series[].points[][] | number | — | `[hour start in ms, basis in %]` 쌍, 오래된 순. |
| history | object | — | 요청한 기간 중 사용 가능한 범위. |
| history.requested_from | number | ms | 요청한 기간의 시작. |
| history.available_from | number | ms | 저장된 첫 시간. |
| history.available_to | number | ms | 저장된 마지막 시간. |
| history.n_hours | number | — | 기간 내 사용 가능한 시간 수. |
| history.expected_hours | number | — | 기간이 완전할 때 포함되는 시간 수. |
| history.complete | boolean | — | 요청한 기간의 모든 시간이 저장되어 있으면 true. |
| coverage | object | — | 수치에 포함된 것과 포함되지 않은 것. 다른 소스와 합계를 비교하기 전에 먼저 이 항목을 비교하십시오. |
| coverage.included_exchanges | array | — | 최신 데이터가 포함된 소스. |
| coverage.included_exchanges[] | string | — | 최신 데이터가 포함된 소스. |
| coverage.unavailable | array | — | 포함할 수 없었던 소스와 각각의 사유. 0으로 집계하는 일은 없습니다. |
| coverage.unavailable[] | object | — | 포함할 수 없었던 소스와 각각의 사유. 0으로 집계하는 일은 없습니다. |
| coverage.unavailable[].exchange | string | — | 거래소 ID(소문자). |
| coverage.unavailable[].reason | string | — | 기계 판독용 사유 코드. |
| coverage.unavailable[].detail | string | — | 사람이 읽을 수 있는 사유 설명. |
| coverage.stale_excluded | array | — | 마지막 갱신이 신선도 창을 벗어나 제외된 행. 이 표를 생성한 샘플에서는 비어 있음 |
| method | object | — | 이 응답에 사용된 산식을 필드당 한 항목씩 일반 텍스트로 기술한 내용. |
| method.series.points | string | — | `series.points`의 산식 설명, 일반 텍스트. |
| method.aggregate.median_pct | string | — | `aggregate.median_pct`의 산식 설명, 일반 텍스트. |
| method.aggregate.oi_weighted_pct | string | — | `aggregate.oi_weighted_pct`의 산식 설명, 일반 텍스트. |
| method.interval | string | — | `interval`의 산식 설명, 일반 텍스트. |
| meta | object | — | 이 응답의 데이터 경로와 신선도. |
| meta.schema | string | — | 이 응답의 스키마 ID. 기존 필드의 의미나 타입이 바뀔 때만 변경됩니다. |
| meta.source | array | — | 데이터를 수집한 업스트림 공개 엔드포인트. |
| meta.source[] | object | — | 데이터를 수집한 업스트림 공개 엔드포인트. |
| meta.source[].exchange | string | — | 거래소 ID(소문자). |
| meta.source[].endpoint | string | — | 수집기가 읽는 소스의 공개 엔드포인트(데이터 경로 표시용이며 클라이언트가 직접 호출하지 않음). |
| meta.observed_at | null | — | 소스가 데이터에 부여한 타임스탬프. |
| meta.received_at | number | ms | CoinBoss 수집기가 데이터를 수신한 시각. |
| meta.fetched_at | number | ms | 이 응답이 조립된 시각. |
| meta.window | string | — | 수치가 포괄하는 시간 구간. |
| meta.quality | string | — | FRESH, PARTIAL, STALE, BROKEN 또는 UNAVAILABLE. 데이터 타임스탬프와 커버리지로 판정합니다. |
| meta.is_stale | boolean | — | 데이터가 신선도 창보다 오래되었으면 true. |
| meta.cache_ttl_s | number | s | 이 응답의 캐시 수명. |
| meta.fallback | string | — | 수집기나 소스에 장애가 발생했을 때 엔드포인트가 반환하는 내용. |
2026-11-11 23:00 UTC에 실제 응답 3건으로 생성.
응답 예시
/api/sd/basis/history?coin=BTC · 2026-11-13 03:58:08 UTC에 수집한 실제 응답. 긴 배열과 맵은 표시를 위해 줄였습니다: series: 원래 항목 20개; aggregate: 원래 항목 25개; meta.source: 원래 항목 20개; series[].points: 원래 항목 25개; coverage.included_exchanges: 원래 항목 20개.
- "success"true
- "schema""coinboss.sd.basis/1"
- "now"1794542288014
- "coin""BTC"
- "kind""perp"
- "range""24h"
- "interval""1h"
- "exchange"null
- "aggregate"
- "series"
- "history"
- "requested_from"1794452400000
- "available_from"1794452400000
- "available_to"1794538800000
- "n_hours"25
- "expected_hours"24
- "complete"true
- "coverage"
- "included_exchanges"
- "unavailable"
- "stale_excluded"
- "method"
- "series.points""[hour_ts, (mark_price - index_price) / index_price * 100] from the first collector round after each full hour; hours where the two timestamps were more than 60 …"
- "aggregate.median_pct""median over one primary contract per exchange in that hour; excluded: |value| > 10, contracts with no trade in 24 h, exchanges whose index is not a comparable i…"
- "aggregate.oi_weighted_pct""sum(value * oi_usd) / sum(oi_usd) over all included contracts that have an OI snapshot for the same hour (oi_history / sd_contract_hourly, single-sided); null w…"
- "interval""fixed 1 h buckets, no interpolation; missing hours are simply absent"
- "meta"
- "schema""coinboss.sd.basis/1"
- "source"
- "observed_at"null
- "received_at"1794538827406
- "fetched_at"1794542288014
- "window""24h"
- "quality""FRESH"
- "is_stale"false
- "cache_ttl_s"300
- "fallback""history is served as stored; hours without a snapshot are absent, never interpolated"
검증된 샘플
프로브는 위 예시 외에도 아래 파라미터로 이 엔드포인트를 호출하고 매번 스키마를 검사합니다.
| 파라미터 | HTTP | 지연 시간 | 결과 |
|---|---|---|---|
| coin=ETH&kind=spot_perp | 200 | 41 ms | 통과 FRESH |
| coin=BTC&exchange=binance | 200 | 32 ms | 통과 FRESH |
| coin=BTC&range=1y | 400 | 1 ms | 통과 예상된 오류 반환 |
2026-11-13 03:58:08 UTC 점검
상세 정보
- 인증
- 없음. 공개 엔드포인트.
- 요청 한도
- IP당 분당 1200회
- 서버 캐시
- 5m
- 엣지 마이크로 캐시
- 10s
- 갱신 주기
- 수집기는 60초마다 한 차례 실행되며, 행은 180초 동안 최신으로 간주됩니다. 1시간 단위 스냅샷이 히스토리에 반영됩니다.
- 구간
- 24h / 7d / 30d, 1시간 버킷.
- 데이터 소스
- 파생상품 거래소 21곳이 공시한 마크 가격, 지수 가격, 최종 체결가와 같은 거래소의 현물 가격을 CoinBoss가 수집해 저장합니다(sd_px_latest, sd_px_hourly).
- 거래소 커버리지
- 거래소 21곳. 지수 가격이나 마크 가격을 공시하지 않는 거래소는 `coverage.unavailable`에 나열됩니다. 두 가격 레그의 시각 차이가 60초를 넘는 행은 `null`을 반환합니다. 집계에서 제외된 행은 사유와 함께 `coverage.excluded_from_aggregate`에 나열됩니다.
- 페이지네이션
- 페이지네이션 없음. `range`가 포인트 수를 결정합니다.
- 정렬
- 시간 오름차순.
- 단위
- All basis values in percent. Prices in the quote currency of the contract (USDT / USDC / USD). `oi_usd` single-sided.
- 산출 방식
- Each point is the snapshot taken in the first ten minutes of the hour. The OI weight of a historical hour is the open interest recorded in that hour; without it `oi_weighted_pct` is `null`.
- 타임스탬프
- 필드 설명에 별도 언급이 없는 한 Unix epoch 밀리초(UTC)
- 응답 형식
- json
- 안정성
- 안정
- 제공 시작
- 2026-11-11
실시간 상태
수집은 2026-11-11에 시작되었습니다. 응답은 `history.available_from`, `expected_hours` 대비 `n_hours`, `complete`를 보고합니다. 데이터가 없는 시간은 보간하지 않고 비워 둡니다.
최근 30일 가용성
점검 407회 중 100% 통과
오류
실패한 호출은 모든 엔드포인트에서 동일한 구조로 반환됩니다. 전체 목록은 오류 페이지에 있습니다. 오류 및 요청 한도 →
| 코드 | HTTP | 의미 | 대응 방법 |
|---|---|---|---|
| INVALID_PARAM | 400 | 필수 파라미터가 누락되었거나 허용되지 않는 값입니다. 문제가 된 파라미터를 알 수 있으면 `param`에 그 이름이 들어갑니다. | 그대로 재시도하지 말고 요청을 수정하십시오. |
| UNAUTHORIZED | 401 | `CB-API-KEY` 헤더를 보냈지만 알 수 없거나 폐기된 키입니다. 공개 데이터에는 키가 필요 없으므로 헤더를 빼거나 유효한 키를 사용하십시오. | 그대로 재시도하지 마십시오. |
| FORBIDDEN | 403 | 해당 경로는 공개 API에 포함되지 않습니다(내부용 또는 계정 전용). | 재시도하지 마십시오. |
| NOT_FOUND | 404 | 알 수 없는 경로이거나, 요청한 코인 / 거래소 / 펀드가 존재하지 않습니다. | 재시도하지 말고 경로와 식별자를 카탈로그와 대조해 확인하십시오. |
| RATE_LIMITED | 429 | 요청 수가 분당 한도를 초과했습니다. `Retry-After`가 대기해야 할 초를 알려 줍니다. | `Retry-After`만큼 기다린 뒤 백오프를 적용해 재시도하십시오. |
| INTERNAL | 500 | 예기치 않은 서버 오류입니다. 메시지는 의도적으로 일반적인 내용만 담습니다. 신고할 때 `request_id`를 인용하십시오. | 몇 초 뒤 한 번 재시도하고, 계속되면 요청 ID와 함께 신고하십시오. |
| UPSTREAM_FAILED | 503 | 이 엔드포인트의 데이터 소스가 제시간에 응답하지 않았습니다. 그 대신 만료된 수치나 대체 수치를 반환하는 일은 없습니다. | 백오프를 적용해 재시도하고 상태 페이지를 확인하십시오. |
| UNAVAILABLE | 501 / 503 | 데이터셋이 일시적으로 준비되지 않았거나(캐시 워밍 중) 엔드포인트에 아직 합법적인 공개 소스가 없습니다. | 나중에 재시도하십시오. 설계상 사용 불가인 엔드포인트는 카탈로그에 표시되어 있습니다. |
| REQUEST_FAILED | 200 | 일부 이전 엔드포인트는 HTTP 200에 `success: false`로 응답합니다. HTTP 상태만 보지 말고 항상 `success`를 확인하십시오. | 메시지에 따라 다릅니다. 실패한 요청으로 처리하십시오. |
직접 실행
/api/sd/basis/history부분string — Coin symbol, case-insensitive (for example `BTC`). Missing or malformed values return 400.
string · 기본값 perp — `perp`: mark price against the index price of the same exchange. `spot_perp`: perpetual price against the spot price of the same exchange.
string · 기본값 24h — Look-back range, one point per hour.
string — One exchange id. Default: all exchanges. An unknown id returns 400.
https://www.coinboss.com/api/sd/basis/history?coin=BTC이 카테고리의 다른 엔드포인트
- 선물 베이시스(전체 거래소) /api/sd/basis
- 베이시스 히스토리(1시간 단위) /api/sd/basis/history
- 베이시스 기준 코인 순위 /api/sd/basis/rank
- 선물-현물 베이시스 목록 /api/derivatives/basis
- Coinbase와 Kraken 간 BTC 일별 가격 스프레드 /api/p3/cb-kr-spread
- Coinbase 비트코인 프리미엄 지수 /api/p3/coinbase-premium
- 무기한 선물 프리미엄 지수 목록 /api/p3/premium-index
- 단일 코인의 프리미엄 지수 히스토리 /api/p3/premium-index/history
- 프리미엄 지수 캔들 /api/p3/premium-index/klines
- 법정화폐 환율 대비 USDT 장외 프리미엄 /api/usdt-premium
- 전체 선물-현물 베이시스 목록 /api/basis/list