# 모든 엔드포인트, 모든 매개변수: 참고 문서

참고 · 2026-10-24 openapi.json에서 읽은 공개 REST 인터페이스 전체를 한 페이지에

*API 가이드 · 12분 · 고급 · 개발자 · 라우트 38개*

Stablecoin scanner ACHIVX의 공개 REST 인터페이스입니다. `https://stablescan.achivx.com` 아래의 라우트 38개를 `openapi.json`(API 1.4.0)에서 읽고 2026-10-24에 호출했으며, 모든 매개변수와 그 기본값 및 범위, 라우트별 `Cache-Control`, 그리고 응답을 설명하는 이 섹션의 페이지를 함께 정리했습니다. `chain`을 받는 모든 라우트에서 `chain`은 ID, 문자열 ID, 슬러그, CAIP-2 ID를 받으며, 지정하지 않을 때의 기본값은 베이스(Base)입니다. 유일하게 bearer 키를 쓰는 관심 목록(watchlist)은 의도적으로 제외했습니다. 키는 운영자가 발급하며 그 밖에는 키가 필요한 곳이 없습니다.

## 이 페이지의 표기 규칙

`chain`은 *전달하십시오*라는 뜻입니다. ID(`1`), 문자열(`"1"`), 슬러그(`ethereum`), CAIP-2(`eip155:1`) 모두 됩니다. 이것이 없으면 행에 달리 적혀 있지 않은 한 라우트는 베이스에 대해 답합니다. *strict*는 알 수 없는 매개변수를 `400 unknown_param`으로 거부하는 네 개 라우트를 표시하며, 나머지는 무시합니다. `max-age`는 2026-10-24에 전송된 `Cache-Control` 값입니다. 모든 라우트는 하나의 오류 형식 `{"error": {"code", "message", "request_id"}}`로 답합니다.

## 가용성 확인

| 라우트 | 매개변수 | max-age | 페이지 |
|---|---|---|---|
| `GET /health` | — | no-store | [서비스 상태](https://achivx.kr/academy/api/service-status-and-attestations/) |
| `GET /ready` | — | no-store; 데이터베이스가 응답하지 않으면 `503 not_ready` | [서비스 상태](https://achivx.kr/academy/api/service-status-and-attestations/) |

## 주소

| 라우트 | 매개변수 | max-age | 페이지 |
|---|---|---|---|
| `GET /v1/addresses/{address}` | `chain` | 60 | [개요](https://achivx.kr/academy/api/address-overview/) |
| `GET /v1/addresses/{address}/risk` | `chain`; `from`(송금하려는 주소, `new_counterparty` 추가) | 60; `time_budget`으로 잘린 뒤에는 10 | [위험](https://achivx.kr/academy/api/address-risk/) |
| `GET /v1/addresses/{address}/exposure` | `chain`; `hops`(정수, 기본값 3; 파싱할 수 없으면 기본값 유지) | 60; 잘린 뒤에는 10 | [노출](https://achivx.kr/academy/api/address-exposure/) |
| `GET /v1/addresses/{address}/balances` | `chain` | 30 | [잔액과 거래량](https://achivx.kr/academy/api/address-balances-and-volume/) |
| `GET /v1/addresses/{address}/volume` | `chain`; `days` 1–3650, 기본값 30 | 60 | [잔액과 거래량](https://achivx.kr/academy/api/address-balances-and-volume/) |
| `GET /v1/addresses/{address}/approvals` | `chain` | 60 | [승인과 휴리스틱](https://achivx.kr/academy/api/address-approvals-and-heuristics/) |
| `GET /v1/addresses/{address}/heuristics` | `chain` | 60 | [승인과 휴리스틱](https://achivx.kr/academy/api/address-approvals-and-heuristics/) |
| `GET /v1/addresses/{address}/graph` | `chain`; `token`(전달하십시오, 없으면 네트워크 기본 스테이블코인); `hops` 0–4, 기본값 1; `frontier`(상한, 기본값 500); `window` `1h`/`24h`/`7d`/`30d`/`90d`/`1y`/`all`, 기본값 `all` | 60; 무거운 빌드에서는 `Retry-After: 5`와 함께 `202 building` | [그래프와 탐색](https://achivx.kr/academy/api/address-graph-and-walk/) |
| `GET /v1/addresses/{address}/walk` | `chain`; `token`; `hops` 0–4, 기본값 2; `frontier_cap` 1–500, 기본값 500; `stop_at_attributed` true/false, 기본값 true; `stop_on_sanctioned` true/false, 기본값 false; `window`는 위와 같음 | 60 | [그래프와 탐색](https://achivx.kr/academy/api/address-graph-and-walk/) |

`{address}`는 네트워크 고유의 표기로 씁니다. 다른 종류의 체인 표기는 `address_respelled: true`로 답하며, 솔라나(Solana)에 대해 `0x…`/`T…` 주소를 물으면 예외적으로 `400 invalid_address`입니다. 무거운 조회 여섯 개 — 개요, `/risk`, `/exposure`, `/graph`, `/walk`, `/llms-full.txt` — 는 정해진 수의 슬롯을 공유하며 `503 busy`를 답할 수 있습니다.

## 전송과 거래

| 라우트 | 매개변수 | max-age | 페이지 |
|---|---|---|---|
| `GET /v1/transfers` *strict* | `chain`; `payer`; `recipient`; `token`(심볼 또는 컨트랙트); `tx`; `block`(≥ 1); `finality` `final`/`pending`; `dir` `older`/`newer`, 기본값 `older`; `limit` 1–200, 기본값 50; `cursor`; `offset`(레거시) | 15 | [피드](https://achivx.kr/academy/api/settlement-feed/) |
| `GET /v1/verify` *strict* | `tx`(필수; `chain`은 거부됨 — 모든 네트워크를 검색) | 15; 불완전하면 `no-store` | [거래 찾기](https://achivx.kr/academy/api/find-a-transaction/) |
| `GET /v1/sync/status` | `chain` | 5 | [동기화 상태](https://achivx.kr/academy/api/sync-status/) |

## 발행사 동결

| 라우트 | 매개변수 | max-age | 페이지 |
|---|---|---|---|
| `GET /v1/freezes` | `chain`; `tx`(필수) — 거래 하나가 발생시킨 기록 | 3600 | [기록 원장](https://achivx.kr/academy/api/freeze-acts-ledger/) |
| `GET /v1/freezes/acts` *strict* | `chain`(없으면 모든 네트워크; 있는데 비어 있으면 거부); `token`(정확한 심볼 또는 컨트랙트); `kind` `freeze`/`unfreeze`/`seize`; `address`(대상; `T…`/솔라나 주소는 해당 네트워크를 선택); `limit` 1–200, 기본값 50; `cursor` | 30 | [기록 원장](https://achivx.kr/academy/api/freeze-acts-ledger/) |
| `GET /v1/freezes/proposals` *strict* | `chain`(없으면 모든 체인); `status` `pending`/`executed`/`failed`/`revoked`/`superseded`/`stale`; `limit` 1–500, 기본값 100(범위 밖은 100으로 읽힘); `cursor`; `dir` `older`/`newer`; `tx`(제출 또는 실행 해시; `cursor`나 `dir`과 함께 쓸 수 없음) | 30 | [제안](https://achivx.kr/academy/api/freeze-proposals/) |
| `GET /v1/freezes/guide` | `chain` | 300 | [동결 권한](https://achivx.kr/academy/api/freeze-powers/) |
| `GET /v1/freezes/networks` | — | 60 | [동결 권한](https://achivx.kr/academy/api/freeze-powers/) |
| `GET /v1/tokens/{token}/freezes` | `{token}`은 [레지스트리](https://achivx.kr/academy/reference/glossary/#g-registry) 심볼, 정확히 일치(`USDT`는 `USDT0`을 제외) | 300 | [동결 권한](https://achivx.kr/academy/api/freeze-powers/) |

## 레지스트리와 검색

| 라우트 | 매개변수 | max-age | 페이지 |
|---|---|---|---|
| `GET /v1/networks` | — | 300(+ `stale-while-revalidate=60, stale-if-error=3600`) | [네트워크와 토큰](https://achivx.kr/academy/api/networks-and-tokens/) |
| `GET /v1/tokens` | `chain` | 300(동일) | [네트워크와 토큰](https://achivx.kr/academy/api/networks-and-tokens/) |
| `GET /v1/tokens/{address}/contract` | `chain`; `{address}`는 토큰 컨트랙트 | 3600 | [네트워크와 토큰](https://achivx.kr/academy/api/networks-and-tokens/) |
| `GET /v1/search` | `q`(필수, 2–64자) | 60 | [검색](https://achivx.kr/academy/api/search/) |
| `GET /v1/sanctions` | — | 300 | [서비스 상태](https://achivx.kr/academy/api/service-status-and-attestations/) |
| `GET /v1/methodology` | — | 300 | [시장 통계](https://achivx.kr/academy/api/market-stats/) |
| `GET /v1/subscriptions` | —([텔레그램 봇](https://achivx.kr/academy/guides/watchlists-and-alerts/)의 위치와 시작 페이로드) | 300 | [레시피: 동결 추적하기](https://achivx.kr/academy/api/recipe-follow-freezes/) |

## 시장 데이터와 순위

| 라우트 | 매개변수 | max-age | 페이지 |
|---|---|---|---|
| `GET /v1/stats/home` | `chain`(없으면 모든 네트워크); `window` `24h`/`7d`/`30d`, 기본값 `24h` | 60; 만들어지지 않은 보기에는 `503 snapshot_pending`(`Retry-After: 60`) | [시장 통계](https://achivx.kr/academy/api/market-stats/) |
| `GET /v1/stats/overview` | `chain`; `window` | 60 | [시장 통계](https://achivx.kr/academy/api/market-stats/) |
| `GET /v1/stats/slo` | `chain` | no-store | [서비스 상태](https://achivx.kr/academy/api/service-status-and-attestations/) |
| `GET /v1/tokens/{token}/addresses` | `{token}` 심볼; `window` `24h`/`7d`/`30d`, 기본값 `24h`; `per_chain` 1–50 | 3600 | [토큰 순위](https://achivx.kr/academy/api/token-rankings/) |
| `GET /v1/tokens/{token}/routes` | 위와 같음 | 3600 | [토큰 순위](https://achivx.kr/academy/api/token-rankings/) |

## 거래소

| 라우트 | 매개변수 | max-age | 페이지 |
|---|---|---|---|
| `GET /v1/entities` | — | 600 | [거래소](https://achivx.kr/academy/api/exchanges/) |
| `GET /v1/entities/{slug}` | `{slug}`는 `/v1/entities`가 나열하는 그대로; 그 외는 `404 not_found` | 600 | [거래소](https://achivx.kr/academy/api/exchanges/) |
| `GET /v1/entities/{slug}/addresses` *strict* | `chain`(필수); `group` `own`/`deposit`, 기본값 `own`; `page` ≥ 1, 기본값 1; `limit` 1–100, 기본값 100 | 600 | [거래소](https://achivx.kr/academy/api/exchanges/) |
| `GET /v1/entities/{slug}/daily` | — | 600 | [거래소](https://achivx.kr/academy/api/exchanges/) |

## 증명

| 라우트 | 매개변수 | max-age | 페이지 |
|---|---|---|---|
| `POST /v1/verify-attestation` | JSON 본문 `{"body": …, "attestation": …}`; 선택 사항 `public_key`(base64url 원시 Ed25519) | no-store; 서명하지 않는 [배포](https://achivx.kr/academy/reference/glossary/#g-deployment)에서는 `400 no_key` | [서비스 상태와 증명](https://achivx.kr/academy/api/service-status-and-attestations/) |

## 오류 코드

2026-10-24 기준 `Error` 스키마의 열거값은 38개입니다. `bad_request`, `busy`, `disabled`, `internal`, `invalid_address`, `invalid_block`, `invalid_body`, `invalid_chain`, `invalid_cursor`, `invalid_days`, `invalid_dir`, `invalid_finality`, `invalid_frontier_cap`, `invalid_group`, `invalid_hops`, `invalid_kind`, `invalid_limit`, `invalid_page`, `invalid_per_chain`, `invalid_public_key`, `invalid_query`, `invalid_rule`, `invalid_status`, `invalid_stop_at_attributed`, `invalid_stop_on_sanctioned`, `invalid_token`, `invalid_tx`, `invalid_window`, `method_not_allowed`, `no_key`, `not_found`, `not_ready`, `rate_limited`, `snapshot_pending`, `timeout`, `unauthorized`, `unknown_param`, `unknown_token`. 다섯 개 — `internal`, `method_not_allowed`, `not_found`, `rate_limited`, `timeout` — 는 어느 라우트에서나 나올 수 있습니다. `disabled`와 `unauthorized`는 이 섹션이 제외한 [관심 목록](https://achivx.kr/academy/guides/watchlists-and-alerts/) 인터페이스에 속합니다. 각 코드가 무엇을 요구하는지는 [코드에서의 오류와 한도](https://achivx.kr/academy/api/errors-and-limits-in-code/)에 있습니다.

## 헤더

모든 응답에 `Content-Type: application/json; charset=utf-8`, `Cache-Control`, `ETag`(`Access-Control-Expose-Headers: ETag`와 함께), `X-Request-Id`(보낸 경우 그대로 돌려주며, 엣지 캐시된 조회에서는 Cloudflare ray), `X-Robots-Tag: noindex`가 있습니다. 재전송된 응답에는 `Age`가 있습니다. 기다리라고 요구하는 거부 응답에는 `Retry-After`가 있습니다. CORS는 브라우저에서 `If-None-Match`, `X-Request-Id`, `Authorization`, `Content-Type`을 허용합니다.

## Stablecoin scanner ACHIVX에서

- 이 페이지가 읽은 명세: [/openapi.json](https://stablescan.achivx.com/openapi.json); 서술형 설명: [/agents.md](https://stablescan.achivx.com/agents.md) §2.
- 요청 한도와 스킬 스키마가 있는 카드: [/.well-known/agent-card.json](https://stablescan.achivx.com/.well-known/agent-card.json).

## 출처

- [REST 인터페이스의 OpenAPI 3.1 명세(API 1.4.0)](https://stablescan.achivx.com/openapi.json)
- [에이전트 매뉴얼 — agents.md(버전 2026-10-05)](https://stablescan.achivx.com/agents.md)
- [A2A 에이전트 카드(1.4.0) — 요청 한도와 스키마](https://stablescan.achivx.com/.well-known/agent-card.json)

## 더 알아보기

- [REST API는 어떻게 구성되어 있습니까?](https://achivx.kr/academy/for-agents/how-the-rest-api-is-organised/)
- [한도](https://achivx.kr/academy/reference/limits/)
- [용어집](https://achivx.kr/academy/reference/glossary/)

## 관련 질문

- [내 질문에는 어떤 엔드포인트가 답합니까?](https://achivx.kr/academy/api/which-endpoint-for-my-task/)
- [모든 호출이 따르는 규칙은 무엇입니까?](https://achivx.kr/academy/api/the-rules-every-call-follows/)
- [코드에서 오류, 요청 한도, 타임아웃은 어떻게 처리합니까?](https://achivx.kr/academy/api/errors-and-limits-in-code/)

참고 · 라우트 38개 · 2026-10-24 작성, openapi.json, agents.md 및 당일 실제 호출 기준. 응답 형태는 인용이며, 수치는 날짜 기준이고 인덱스에 따라 달라집니다.

---

출처: https://achivx.kr/academy/api/endpoint-reference/ · 영어 원문: https://achivx.com/academy/api/endpoint-reference.html
