데이터 품질 매트릭스
거래소 × 데이터 계열 매트릭스로, FRESH / PARTIAL / STALE / BROKEN / UNAVAILABLE 등급, 소스 및 수집 타임스탬프, 지연, 커버리지, 공백별 사유를 제공합니다.
/api/meta/quality요청
쿼리 파라미터
| 이름 | 타입 | 필수 | 기본값 | 허용 값 | 설명 |
|---|---|---|---|---|---|
| exchange | string | 선택 | — | — | 이 거래소만 반환(소문자 ID, 예: `binance`). |
| family | string | 선택 | — | — | 이 데이터 계열만 반환(예: `oi`, `funding`, `liquidation`). |
요청 예시
curl -s "https://www.coinboss.com/api/meta/quality"응답 필드
필드 표는 실제 응답에서 생성되므로 엔드포인트가 반환하는 내용을 그대로 보여 줍니다. 경로에서 a[]는 배열 항목을, {*}는 코인이나 거래소처럼 동적 이름을 키로 갖는 객체를 뜻합니다.
| 필드 | 타입 | 단위 | 설명 |
|---|---|---|---|
| success | boolean | — | 요청이 성공하면 true입니다. 실패하면 본문은 `{ success: false, code, error, request_id }`입니다. |
| schema | string | — | 이 응답의 스키마 ID(`coinboss.meta.quality/1`). |
| now | number | ms | 응답이 생성된 서버 시각. |
| families | array | — | 거래소별로 판정하는 데이터 계열(시세, 미결제약정, 펀딩, 청산, 오더북, 옵션 등). |
| families[] | object | — | 계열 하나: `id`, `scope`, `title`, `what`, `table`, `cadence`, `fresh_within_s`. |
| families[].id | string | — | 식별자. |
| families[].scope | string | — | `matrix`에서 거래소별로 판정하는 계열이면 `exchange`. |
| families[].title | string | — | 계열의 표시 제목. |
| families[].what | string | — | 계열이 다루는 데이터에 대한 짧은 설명. |
| families[].table | string | — | 계열을 판정하는 데 쓰이는 내부 데이터셋의 이름. 참고용입니다. |
| families[].cadence | string | — | 계열의 수집 일정에 대한 일반 텍스트 설명. 명시되지 않았으면 null. |
| families[].fresh_within_s | number | s | 신선도 창: 이보다 최신인 데이터는 최신으로 간주됩니다. |
| exchanges | array | — | 거래소. |
| exchanges[] | string | — | 거래소. |
| matrix | object | — | 행과 열을 키로 하는 매트릭스. 동적 키: aster,backpack,binance,bingx,bitfinex,bitget |
| matrix.{*} | object | — | 행과 열을 키로 하는 매트릭스. 동적 키: ticker,oi,funding,funding_settle,liquidation,ls |
| matrix.{*}.{*} | object | — | 행과 열을 키로 하는 매트릭스. |
| matrix.{*}.{*}.status | string | — | 상태. |
| matrix.{*}.{*}.lag_s | number|null | s | 현재 시각에서 해당 거래소(첫 번째 키)와 계열(두 번째 키)의 저장된 최신 데이터 타임스탬프를 뺀 값. 그 거래소에서 해당 계열을 사용할 수 없으면 null. |
| matrix.{*}.{*}.source_at | number|null | ms | 타임스탬프. |
| matrix.{*}.{*}.fetched_at | number|null | ms | CoinBoss가 소스에서 데이터를 가져온 시각. |
| matrix.{*}.{*}.fresh_within_s | number|null | s | 신선도 창: 이보다 최신인 데이터는 최신으로 간주됩니다. |
| matrix.{*}.{*}.coverage | object|null | — | 포함된 항목과 누락된 항목. |
| matrix.{*}.{*}.coverage.rows | number | — | 결과 행. 없을 수 있음 |
| matrix.{*}.{*}.coverage.rows_fresh | number | — | 신선도 창 안에서 갱신된 행. 없을 수 있음 |
| matrix.{*}.{*}.coverage.rows_usable | number | — | 사용 가능 창 안에 있는 행. 없을 수 있음 |
| matrix.{*}.{*}.coverage.rows_orphan | number | — | 계약이 더 이상 상장되어 있지 않은 행. 없을 수 있음 |
| matrix.{*}.{*}.coverage.rows_invalid | number | — | 유효성 검사에서 거부된 행. 없을 수 있음 |
| matrix.{*}.{*}.reason | string|null | — | 사유 코드. |
| matrix.{*}.{*}.coverage.rows_no_liveness | number | count | 실제 거래가 이루어지고 있다는 증거가 없는 계약(상장 폐지 또는 거래량 없음)의 펀딩 행. 신선도 집계에서 제외됩니다. 없을 수 있음 |
| matrix.{*}.{*}.coverage.rows_unknown_interval | number | count | 최근 갱신되었지만 정산 주기를 알 수 없어 8시간으로 환산할 수 없는 펀딩 행. 없을 수 있음 |
| matrix.{*}.{*}.coverage.symbols | number | — | 심볼. 없을 수 있음 |
| matrix.{*}.{*}.coverage.events_1h | number | count | 최근 1시간 동안 해당 거래소에서 저장된 청산 주문. 최소 주문 규모는 거래소마다 다릅니다. 없을 수 있음 |
| matrix.{*}.{*}.coverage.events_24h | number | count | 최근 24시간 동안 해당 거래소에서 저장된 청산 주문. 최소 주문 규모는 거래소마다 다릅니다. 없을 수 있음 |
| matrix.{*}.{*}.via | string | — | 수집 경로. 없을 수 있음 |
| matrix.{*}.{*}.coverage.books | number | count | 추적 대상 오더북 수. 없을 수 있음 |
| matrix.{*}.{*}.coverage.books_fresh | number | count | 신선도 창 안에 갱신된 오더북 수. 없을 수 있음 |
| matrix.{*}.{*}.coverage.books_reaching_2pct | number | count | 중간가 기준 ±2 % 범위를 포괄할 만큼 깊이가 충분한 오더북 수. 없을 수 있음 |
| matrix.{*}.{*}.coverage.contracts | number | — | 계약별 행. 없을 수 있음 |
| matrix.{*}.{*}.coverage.contracts_fresh | number | count | 신선도 창 안에 갱신된 계약 수. 없을 수 있음 |
| matrix.{*}.{*}.coverage.with_mark_and_index | number | count | 마크 가격과 지수 가격이 모두 있는 계약 수. 없을 수 있음 |
| matrix.{*}.{*}.coverage.delivery_contracts | number | count | 만기 선물(만기일이 정해진) 계약 수. 없을 수 있음 |
| matrix.{*}.{*}.note | string | — | 비고. 없을 수 있음 |
| matrix.{*}.{*}.coverage.coins | number | — | 코인. 없을 수 있음 |
| matrix.{*}.{*}.coverage.rows_without_oi | number | count | USD 기준 미결제약정 값이 없는 코인 마진, USDC 마진 또는 만기 선물 계약 행. 없을 수 있음 |
| matrix.{*}.{*}.coverage.with_mark_iv | number | count | 마크 내재 변동성이 있는 옵션 계약 수. 없을 수 있음 |
| matrix.{*}.{*}.coverage.with_greeks | number | count | 그릭스가 있는 옵션 계약 수. 없을 수 있음 |
| datasets | array | — | 거래소별이 아닌 데이터셋(예: 현물 ETF, CME 일별 데이터)의 품질 점검으로, 각각 상태, 지연, 커버리지, 사유를 포함합니다. |
| datasets[] | object | — | 단일 거래소에 속하지 않는 시장 전체 데이터셋 하나(옵션, 현물 ETF, CME, 오더북, 베이시스). |
| datasets[].family | string | — | 데이터셋 ID, 예: `etf` 또는 `cme`. |
| datasets[].id | string | — | 식별자. |
| datasets[].title | string | — | 데이터셋의 표시 이름. |
| datasets[].source | string | — | 값의 출처. |
| datasets[].endpoint | string | — | 해당 데이터셋을 제공하는 공개 엔드포인트. |
| datasets[].status | string | — | 상태. |
| datasets[].lag_s | number | s | 응답이 생성된 시점 기준 최신 데이터 포인트의 경과 시간. |
| datasets[].source_at | number | ms | 타임스탬프. |
| datasets[].fetched_at | number | ms | CoinBoss가 소스에서 데이터를 가져온 시각. |
| datasets[].fresh_within_s | number | s | 신선도 창: 이보다 최신인 데이터는 최신으로 간주됩니다. |
| datasets[].coverage | object | — | 포함된 항목과 누락된 항목. |
| datasets[].coverage.funds_total | number | count | 추적 대상 펀드 수. 없을 수 있음 |
| datasets[].coverage.funds_covered | number | count | 사용 가능한 공시가 있는 펀드 수. 없을 수 있음 |
| datasets[].coverage.funds_unavailable | number | count | 발행사가 기계 판독 가능한 공시를 게시하지 않는 펀드 수. 없을 수 있음 |
| datasets[].coverage.funds_failing | number | count | 마지막 수집 회차에서 공시를 읽지 못한 펀드 수. 없을 수 있음 |
| datasets[].coverage.as_of | string | — | 커버되는 펀드 중 가장 최근 공시일(YYYY-MM-DD). 없을 수 있음 |
| datasets[].coverage.as_of_min | string | — | 커버되는 펀드 중 가장 오래된 공시일(YYYY-MM-DD). 없을 수 있음 |
| datasets[].reason | string|null | — | 사유 코드. |
| datasets[].coverage.contracts | number | — | 계약별 행. 없을 수 있음 |
| datasets[].coverage.report_date | string | — | 최신 CFTC Commitments of Traders 보고서의 날짜(YYYY-MM-DD). 없을 수 있음 |
| datasets[].coverage.products | number | count | 커버되는 CME 상품 수. 없을 수 있음 |
| datasets[].coverage.trade_date | string | — | 최신 CME 일별 보고서의 거래일(YYYY-MM-DD). 없을 수 있음 |
| summary | object | — | 요약 블록. 동적 키: FRESH,PARTIAL,STALE,BROKEN,UNAVAILABLE |
| summary.{*} | number | — | 요약 블록. |
| by_family | object | — | 계열별로 각 상태에 해당하는 거래소 수. 바깥쪽 키는 계열 ID입니다. 동적 키: ticker,oi,funding,funding_settle,liquidation,ls |
| by_family.{*} | object | — | 계열 하나의 상태별 개수, 키는 상태(`FRESH`, `PARTIAL`, `STALE`, `BROKEN`, `UNAVAILABLE`). 동적 키: FRESH,PARTIAL,STALE,BROKEN,UNAVAILABLE |
| by_family.{*}.{*} | number | count | 해당 계열에서 해당 상태인 거래소 수. |
| alerts | array | — | 미해결 상태이거나 최근 7일 내에 해결된 데이터 품질 순찰 경보, 미해결 경보가 먼저. 요청 파라미터로 필터링됩니다. |
| alerts[] | object | — | 경보 하나: `level`, `exchange`, `family`, `code`, `detail`, 발생 / 마지막 관측 / 해결 시각, `hits`, `open`. |
| alerts[].level | string | — | 레벨. |
| alerts[].exchange | string | — | 거래소 ID, 소문자(예: `binance`). |
| alerts[].family | string | — | 경보의 대상 데이터 계열. |
| alerts[].code | string | — | 코드. |
| alerts[].detail | string | — | 상세. |
| alerts[].opened_at | number | ms | 타임스탬프. |
| alerts[].last_seen_at | number | ms | 타임스탬프. |
| alerts[].resolved_at | number|null | ms | 타임스탬프. |
| alerts[].hits | number | count | 경보 발생 이후 해당 조건을 관측한 순찰 실행 횟수(5분마다 한 번 실행). |
| alerts[].open | boolean | — | 해당 기간의 시가. |
| monitor | object | — | 모니터링 자체의 상태: 마지막 순찰 실행의 시각과 경과 시간, `patrol_ok`, 수집기 하트비트 이후 경과 시간. |
| monitor.patrol_last_run_at | number | ms | 타임스탬프. |
| monitor.patrol_age_s | number | s | 이벤트 후 경과한 초. |
| monitor.patrol_ok | boolean | — | 순찰이 최근 15분 이내에 실행되었으면 true. false이면 `alerts` 목록이 최신이 아닐 수 있지만 매트릭스는 실시간으로 유지됩니다. |
| monitor.collector_heartbeat_age_s | number | s | 이벤트 후 경과한 초. |
| errors | null | — | 품질 점검 자체가 실패한 계열에 대해 계열 ID를 오류 코드에 대응시킨 맵. 모든 점검이 실행되었으면 null. |
| legend | object | — | 각 셀 상태의 일반 텍스트 정의. 동적 키: FRESH,PARTIAL,STALE,BROKEN,UNAVAILABLE |
| legend.{*} | string | — | 키가 가리키는 상태(`FRESH`, `PARTIAL`, `STALE`, `BROKEN`, `UNAVAILABLE`)의 정의. |
| method | object | — | 산식 / 산출 방식 참고 사항. |
| method.status | string | — | 상태. |
| method.lag_s | string | — | `lag_s`의 계산 방식에 대한 일반 텍스트 설명. |
| method.source_at | string | — | 날짜-시간 문자열. |
| method.fetched_at | string | — | 날짜-시간 문자열. |
| meta | object | — | 이 응답의 엔벨로프: 스키마 ID, 생성 시스템, 타임스탬프, 캐시 수명, 신선도. |
| meta.schema | string | — | 이 응답의 스키마 ID. 최상위 `schema`와 같은 값입니다. |
| meta.source | array | — | 값의 출처. |
| meta.source[] | object | — | 값의 출처. |
| meta.source[].system | string | — | 데이터를 생성한 시스템. 개발자 센터 엔드포인트에서는 항상 `coinboss`입니다. |
| meta.source[].component | string | — | 데이터의 바탕이 되는 구성 요소: 엔드포인트 프로브와 데이터 품질 순찰. |
| meta.observed_at | null | — | 타임스탬프. |
| meta.received_at | number | ms | 타임스탬프. |
| meta.fetched_at | number | ms | CoinBoss가 소스에서 데이터를 가져온 시각. |
| meta.window | string | — | 구간. |
| meta.cache_ttl_s | number | s | 이 응답의 서버 측 캐시 수명. |
| meta.quality | string | — | 평상시에는 `FRESH`. 품질 순찰이 15분 이내에 실행되지 않았으면 `PARTIAL`(경보 목록만 영향을 받습니다). |
| meta.is_stale | boolean | — | 행이 신선도 창보다 오래되면 true. 만료된 행은 합계에 사용하지 않습니다. |
| meta.fallback | string | — | 입력 데이터가 만료되었거나 없을 때 이 엔드포인트가 무엇을 반환하는지에 대한 일반 텍스트 설명. |
2026-11-11 23:01 UTC에 실제 응답 3건으로 생성.
응답 예시
/api/meta/quality · 2026-11-13 03:53:46 UTC에 수집한 실제 응답. 긴 배열과 맵은 표시를 위해 줄였습니다: alerts: 원래 항목 11개; legend: 원래 항목 5개; matrix: 원래 항목 30개; summary: 원래 항목 5개; datasets: 원래 항목 12개; families: 원래 항목 12개.
- "success"true
- "schema""coinboss.meta.quality/1"
- "now"1794542026126
- "families"
- "exchanges"
- "aster"
- "backpack"
- "binance"
- "bingx"
- "bitfinex"
- "bitget"
- "bitstamp"
- "bitunix"
- "matrix"
- "aster"
- "backpack"
- "datasets"
- "summary"
- "FRESH"161
- "PARTIAL"7
- "by_family"
- "ticker"
- "oi"
- "alerts"
- "monitor"
- "patrol_last_run_at"1794541745827
- "patrol_age_s"281
- "patrol_ok"true
- "collector_heartbeat_age_s"36
- "errors"null
- "legend"
- "FRESH""newest stored data point is inside the fresh window for this family"
- "PARTIAL""some contracts / rows are outside the fresh window or miss a required field"
- "method"
- "status""judged from data timestamps in CoinBoss storage every request (30 s in-process cache); a running collector process is not treated as evidence"
- "lag_s""now − newest stored data timestamp for the exchange / family"
- "source_at""newest stored data timestamp (exchange timestamp when the exchange provides one, otherwise collector receive time)"
- "fetched_at""last successful upstream call recorded by the collector health log; null for WebSocket feeds and collectors that do not log per-call health"
- "meta"
- "schema""coinboss.meta.quality/1"
- "source"
- "observed_at"null
- "received_at"1794542026978
- "fetched_at"1794542026126
- "window""latest"
- "cache_ttl_s"20
- "quality""FRESH"
- "is_stale"false
- "fallback""matrix is always computed from storage; when the 5-minute patrol itself stops (monitor.patrol_ok=false) only the alerts list may be outdated"
검증된 샘플
프로브는 위 예시 외에도 아래 파라미터로 이 엔드포인트를 호출하고 매번 스키마를 검사합니다.
| 파라미터 | HTTP | 지연 시간 | 결과 |
|---|---|---|---|
| exchange=binance | 200 | 1 ms | 통과 FRESH |
| family=funding | 200 | 1 ms | 통과 FRESH |
2026-11-13 03:29:27 UTC 점검
상세 정보
- 인증
- 없음. 공개 엔드포인트.
- 요청 한도
- IP당 분당 1200회
- 서버 캐시
- 20s
- 엣지 마이크로 캐시
- 10s
- 갱신 주기
- 요청 시 모든 거래소 × 데이터 계열 쌍의 최신 데이터 타임스탬프로 평가합니다.
- 데이터 소스
- CoinBoss 원본 테이블(최신 행 타임스탬프), 수집기 상태 로그. 프로세스가 실행 중이라는 사실만으로 데이터를 정상으로 판정하는 일은 없습니다.
- 타임스탬프
- 필드 설명에 별도 언급이 없는 한 Unix epoch 밀리초(UTC)
- 응답 형식
- json
- 안정성
- 안정
- 제공 시작
- 2026-11-11
실시간 상태
최근 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/meta/quality사용 가능string — Return only this exchange (lower-case id, for example `binance`).
string — Return only this data family (for example `oi`, `funding`, `liquidation`).
https://www.coinboss.com/api/meta/quality이 카테고리의 다른 엔드포인트
- 데이터 품질 매트릭스(수집기 관점) /api/sd/quality
- API 카탈로그 /api/meta/catalog
- 변경 내역 및 버전 관리 정책 /api/meta/changelog
- 엔드포인트 문서 /api/meta/endpoint
- OpenAPI 문서 /api/meta/openapi
- 데이터 품질 매트릭스 /api/meta/quality
- 서비스 상태 /api/meta/status
- 플랫폼에 등록된 코인 심볼인지 확인 /api/coin-exists
- 코인 심볼과 로컬 호스팅 아이콘 경로의 매핑 /api/coin-icons
- 코인 페이지 통합 요약 /api/content/coin
- 사이트 전체 섹션 요약 /api/content/summary
- 법정화폐 환율 표 /api/currency/fx
- 거래소 ID와 로컬 호스팅 아이콘 경로의 매핑 /api/exchange-icons
- 활성 상태 확인 /api/health
- 리서치 페이지 통계 /api/research/stats