# KAS API

## API 인증 키 <a href="#basics-api-key" id="basics-api-key"></a>

API 인증 키는 API 사용자가 KAS 회원 본인이 맞는지 증명하기 위해 사용합니다. KAS에서 API 인증은 HTTP Basic 인증 방식을 사용하며 인증 키는 **인증 ID(AccessKey ID)**&#xC640; **인증 비밀번호(Secret AccessKey)**&#xB85C; 구성됩니다.

```bash
//AccessKey ID와 Secret AccessKey 예시
AccessKey ID: `KASKP6ZDZJ9TDH4OE825GB01`
Secret AccessKey: `UDGCqEA2wibbsHFj4VL3vgpltaSh1HvlMRLBauEL`
```

API 인증 키는 KAS Console - Security - Credential 메뉴에서 발급받으며, 인증 비밀번호인 `Secret AccessKey`와 `Authorization`은 **최초 생성 시 한 번만** 확인할 수 있습니다. 따라서, 최초 생성 시 **반드시 Secret AccessKey와 Authorization을 안전한 곳에 복사 또는 다운로드**해 관리해야 합니다. 인증 키 생성시 확인할 수 있는 `Authorization` (예: `Basic S0FTS1A2WkRaSjh...`)은 Basic 인증 방식을 이용하여 `AccessKey ID`와 `Secret AccessKey`를 인코딩한 값이며 API 호출 시 호출 헤더에 사용합니다.

API 인증 키가 있으면 모든 KAS 서비스를 사용할 수 있으며 Wallet API를 호출해 만든 Klaytn 계정에 대한 모든 권한을 소유합니다. 모든 권한에는 Klaytn 계정의 자산(KLAY 등) 이동이나 [트랜잭션](https://ground-x.gitbook.io/kas-docs-dev/tutorial/wallet-transaction-api) 전송 및 실행 권한이 포함됩니다. 만약 API 인증 키에 타인이 접근한다면 Klaytn 계정 권한을 탈취당해 원치 않는 트랜잭션이 발생할 수 있습니다.

{% hint style="danger" %}
KAS/Klaytn 계정 보안을 위해 KAS API 인증 키(Secret Access Key)를 타인과 함부로 공유하지 말고 주의해 관리하십시오.
{% endhint %}

{% hint style="info" %}
인증 키는 KAS 콘솔 - Security - Credential 메뉴에서 생성할 수 있습니다. 인증 키는 최대 2개까지 생성 가능합니다. 인증 키를 교체하려면 기존 키를 삭제하고 새 인증 키를 만들어야 합니다.
{% endhint %}

아래는 인증 키를 사용해 KAS API를 호출하는 예시입니다. 인증 키를 API 호출 헤더에 입력해야 하며 입력하는 방식은 아래와 같이 크게 2가지가 있습니다.

{% tabs %}
{% tab title="curl" %}

```bash
//AccessKey ID와 Secret AccessKey로 API 호출 헤더를 구성한 예시
curl --location --request POST "https://wallet-api.klaytnapi.com/v2/account" \
-u ${your_accessKeyId}:${your_secretAccessKey} \
--header "x-chain-id: 1001" \
--header "x-krn: krn:1001:wallet:b73717b4-2bad-4cbe-9517-951ca5af3a15:account-pool:Ray Kim"

//Basic Authorization으로 API 호출 헤더를 구성한 예시
curl --location --request POST "https://wallet-api.klaytnapi.com/v2/account" \
--header "x-chain-id: 1001" \
--header "Authorization: Basic S0FTS0pEVjNBMkpWTlNVVkJTNUlJOU04OlR5cGEwclRrRk1xVUpaSFFOUjdibEIxOStaYVF6ejV1MmZMbXpsS1I="
```

{% endtab %}

{% tab title="javascript" %}

```javascript
// KAS API를 사용할 때에 사용할 chainId와 인증 키를 세팅
caver.initKASAPI(1001, `${your_accessKeyId}`, `${your_secretAccessKey}`)
```

{% endtab %}

{% tab title="java" %}

```java
CaverExtKAS caver = new CaverExtKAS();
caver.initKASAPI(1001, your_accessKeyId, your_secretAccessKey);
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
API 인증 키를 얻는 방법은 [다음](https://ground-x.gitbook.io/kas-docs-dev/console#basics-console-credential)을 확인하십시오.
{% endhint %}

이 문서 혹은 KAS에 관한 문의는 [개발자 포럼](https://forum.klaytn.com/c/kas/kasko/26)을 방문해 도움을 받으십시오.

## 페이지네이션 <a href="#basics-api-pagination" id="basics-api-pagination"></a>

KAS API를 호출해 데이터를 불러올 때 모든 데이터를 한 번에 가져오기 어려울 때가 있습니다. 예를 들어, 여러분의 애플리케이션이 수천 개의 클레이튼 계정을 관리할 때 [모든 계정 목록을 조회](https://ground-x.gitbook.io/kas-docs-dev/tutorial/wallet-account-api#tutorial-wallet-api-account-getlist)하려면 데이터를 한 번에 가져오기 어렵고 가져와도 데이터에 접근하기 불편합니다. 따라서, API를 여러 번 호출하여 지정된 개수만큼 데이터를 분할하여 불러오는데, 보통 데이터를 페이지 단위로 나눠 불러오기 때문에 이를 **페이지네이션(Pagination)**&#xC774;라고 합니다.

KAS는 커서(Cursor) 기반 페이지네이션을 사용합니다. 어떤 KAS API가 쿼리 파라미터를 받을 때 `size`는 API 응답으로 받을 데이터 개수, `cursor`는 다음번 API 호출 시 이어서 받고 싶은 데이터 위치(offset)입니다.

먼저 API를 호출할 때 `size`를 입력하고 원하는 개수만큼 데이터를 받습니다. 그리고 API 응답값에 포함된 `cursor`값을 API를 다시 호출할 때 쿼리 파라미터로 입력하면 방금 받은 데이터 이후의 데이터를 이어 받을 수 있습니다.

다음은 여러분의 KAS에서 생성했던 [클레이튼 계정 목록을 조회하는 API](https://ground-x.gitbook.io/kas-docs-dev/tutorial/wallet-account-api#tutorial-wallet-api-account-getlist)를 호출 시 페이지네이션을 사용해 계정 목록을 나누어 받는 예시를 소개합니다.

**쿼리 파라미터(Query Parameter)**

| 파라미터 이름        | 설명                                      | 예시                          | 필수    |
| -------------- | --------------------------------------- | --------------------------- | ----- |
| size           | 응답 아이템 개수(min=1, max=1000, default=100) | `size=100`                  | False |
| cursor         | 페이지네이션으로 다음 요청을 보낼 때 필요한 커서             | `cursor=J9Ag...VM6z`        | False |
| to-timestamp   | 검색 범위: 마지막 시간의 타임스탬프(초단위)               | `to-timestamp=15921809920`  | False |
| from-timestamp | 검색 범위: 시작 시간의 타임스탬프(초단위)                | `from-timestamp=1592360291` | False |

아래는 API 1회 호출 시 클레이튼 계정 정보를 5개씩 나누어 받는 예시입니다.

```bash
//API 호출
//size=5, to-timestamp=0, from-timestamp=0으로 계정 목록을 요청
curl --location --request GET "https://wallet-api.klaytnapi.com/v2/account?size=5&cursor=&to-timestamp=0&to-timestamp=0" \
--header "x-chain-id: 1001" \
--header "Authorization: Basic S0FTSzEyMVdVQ1RZUldXTkVIU1pQOVRHOmtvZFplUlVybThNZ1gyNUY2VGxVV0NZNDZPSGJHdkgxRklsRnVMK1c="
```

* `from-timestamp`, `to-timestamp`에 0을 입력하거나 값을 입력하지 않으면 모든 시간 범위를 포함합니다.
  * `from-timestamp=1599703700`, `to-timestamp=`은 Unix 타임스탬프 기준으로 "1599703700" 이후의 모든 데이터를 불러오는 요청입니다.
  * `from-timestamp=`, `to-timestamp=1599703700`은 Unix 타임스탬프 기준으로 "1599703700" 이전의 모든 데이터를 불러오는 요청입니다.

```javascript
//API 응답
{"cursor":"eyJBZGR...",
"items":[
  {"address":"0x34260b7096275Ae462D7e4A6680f80C60efAb4F9","chainId":1001,"createdAt":1599699464,"keyId":"krn:1001:wallet:68ec0e4b-0f61-4e6f-ae35-be865ab23187:account-pool:default:0x7432fd7d068cead43306aed3aa611b17413346c3ac737642e4bb2017afbafff1","krn":"krn:1001:wallet:68ec0e4b-0f61-4e6f-ae35-be865ab23187:account-pool:default","publicKey":"0x0425fe8fc3c1640343b4f53c070a34aa43965cb2f9cbc025924d6a77128773f873c100318cdfa6838d56f8f22b56e00d18cc81603acea337f422be60398124e276","updatedAt":1599699464},

  {"address":"0x408222F3c1bC86D8dcD2bE712AaE0237D4121add","chainId":1001,"createdAt":1599624601,"keyId":"krn:1001:wallet:68ec0e4b-0f61-4e6f-ae35-be865ab23187:account-pool:default:0x973b226e6c85383f743004449d330164f3413e0896294aee7bda16804c967167","krn":"krn:1001:wallet:68ec0e4b-0f61-4e6f-ae35-be865ab23187:account-pool:default","publicKey":"0x04e8769ff6c3182185b2cfa960d66a35be5d4a1d235b15e00da9c4e1427bed9cc8c7998932cabe379d01035556349a5cf89aa8b1e12b41dee778f6e52f0e425307","updatedAt":1599624601},

  {"address":"0xB6b2f59CBc670c9BF9d315a7cb4043043CD7050e","chainId":1001,"createdAt":1599624506,"keyId":"krn:1001:wallet:68ec0e4b-0f61-4e6f-ae35-be865ab23187:account-pool:default:0xd174851606b5763d10ce555fc388b633ec2b14d478d169824eefcaa7fc6814c6","krn":"krn:1001:wallet:68ec0e4b-0f61-4e6f-ae35-be865ab23187:account-pool:default","multiSigKeys":[{"publicKey":"0x04e8769ff6c3182185b2cfa960d66a35be5d4a1d235b15e00da9c4e1427bed9cc8c7998932cabe379d01035556349a5cf89aa8b1e12b41dee778f6e52f0e425307","weight":1}],"publicKey":"0x040e66b1d13c0c439cb9158c7f2e58b38aa8f79807ebd2e85e820323419d3948e7fa703187b7ace5ebaa72dd67692e8cd1d79b624a11ee8f2ef410eb03c249563b","threshold":1,"updatedAt":1599624615},

  {"address":"0x80f692366327b7e41Da457d6c18f19c1FEF323B9","chainId":1001,"createdAt":1599562386,"keyId":"krn:1001:wallet:68ec0e4b-0f61-4e6f-ae35-be865ab23187:account-pool:default:0xa1ad3cf3aaa6127f531bce1ff8d338dd9452bbba49514945a70a0099d9ac9a9e","krn":"krn:1001:wallet:68ec0e4b-0f61-4e6f-ae35-be865ab23187:account-pool:default","publicKey":"0x04214bf198bda41ac751fc8240c5a398e008983786d218828d65ede12aca12f60a49188ceb35712bc4b2f12219ba1877b514cd0af6b8d3dd54a6e6801ab2ef41a3","updatedAt":1599562386},

  {"address":"0x01605605C0452e1Df043eeB6367157B02C6b8aC0","chainId":1001,"createdAt":1599550406,"keyId":"krn:1001:wallet:68ec0e4b-0f61-4e6f-ae35-be865ab23187:account-pool:default:0x8e2d4eb20350f99fc0008a2361dcc8a136ef299603a028fb0e06041675acf11e","krn":"krn:1001:wallet:68ec0e4b-0f61-4e6f-ae35-be865ab23187:account-pool:default","publicKey":"0x0411f1667b88fb7742c7caf8c8434167cd5de7e8f7597b8705d8f60bb5d2af1bb45e5d1e1b9b037725fea363e3068a7a54b02a8b96a11f2934d7d86048512711a3","updatedAt":1599550406}
  ]
}
```

이제, API 응답으로 받은 `cursor`값을 사용해, 방금 받은 5개를 제외한 나머지 계정 정보들 중 3개만을 받습니다. 다음은 3개 계정 정보를 요청하는 API 호출 예시입니다.

```bash
//API 호출
//size=3, cursor=eyJBZGR..., to-timestamp=0, from-timestamp=0으로 계정 목록을 요청
curl --location --request GET "https://wallet-api.klaytnapi.com/v2/account?size=3&cursor=eyJBZGR...&to-timestamp=0&to-timestamp=0" \
--header "x-chain-id: 1001" \
--header "Authorization: Basic S0FTSzEyMVdVQ1RZUldXTkVIU1pQOVRHOmtvZFplUlVybThNZ1gyNUY2VGxVV0NZNDZPSGJHdkgxRklsRnVMK1c="
```

```javascript
//API 응답
{"cursor":"eyJBZGR...",
"items":[
  {"address":"0xddFCd7fB9B2988600aD7EfAeE85BE848E236FDf6","chainId":1001,"createdAt":1599208594,"keyId":"krn:1001:wallet:68ec0e4b-0f61-4e6f-ae35-be865ab23187:account-pool:default:0x4ef5082037adc03a330d6469ffdaaeef193b48afac378e24ae992632bcaacb87","krn":"krn:1001:wallet:68ec0e4b-0f61-4e6f-ae35-be865ab23187:account-pool:default","multiSigKeys":[{"publicKey":"0x0420eafec3c250b10245918844520912cd751c12c00d6e4623bc84b9810dda2edd670dcc6051a8cc4b332adc4f3a36aeb2f6d3cae5ccbb6e90aae76aa7c24ce6ba","weight":3},{"publicKey":"0x04ba8182c1c3f2c07e43ba7ef20f23f5af6823156c35e51780fe71e79d228c2882c35e111a3b05db5d151ebfe8453fcca2c9990088c96dfded7026ee9715454fba","weight":1}],"publicKey":"0x04ba8182c1c3f2c07e43ba7ef20f23f5af6823156c35e51780fe71e79d228c2882c35e111a3b05db5d151ebfe8453fcca2c9990088c96dfded7026ee9715454fba","threshold":4,"updatedAt":1599208600},

  {"address":"0xD299765ECF82dB95b2F6441Fcb3a237A9C33c4f0","chainId":1001,"createdAt":1599208593,"keyId":"krn:1001:wallet:68ec0e4b-0f61-4e6f-ae35-be865ab23187:account-pool:default:0xfbaa7735188691a29b56138f2a558a2b1078b6ca46a3a46c5245b68b24c54214","krn":"krn:1001:wallet:68ec0e4b-0f61-4e6f-ae35-be865ab23187:account-pool:default","publicKey":"0x0420eafec3c250b10245918844520912cd751c12c00d6e4623bc84b9810dda2edd670dcc6051a8cc4b332adc4f3a36aeb2f6d3cae5ccbb6e90aae76aa7c24ce6ba","updatedAt":1599208593},

  {"address":"0x72ef9D552A3AFa610Ec09B5fC24fef29EF6881a6","chainId":1001,"createdAt":1599208592,"keyId":"krn:1001:wallet:68ec0e4b-0f61-4e6f-ae35-be865ab23187:account-pool:default:0x8b513e031e15a504c2e18196624b72f51133462e1276b2738a46db3a8b91bbee","krn":"krn:1001:wallet:68ec0e4b-0f61-4e6f-ae35-be865ab23187:account-pool:default","publicKey":"0x047bcbd531e8598afdf749fe2475c8793c27681dd310074c346382f239a646d3778ab5f8ea4da7094551e3a8e548da560641445889311fa67563ab1416248582be","updatedAt":1599208592}
  ]
}
```

* `size`를 불러올 수 있는 전체 데이터 개수보다 적게 설정하면 `cursor`를 응답값으로 받습니다.
* 모든 데이터를 한 번에 다 받을 때 응답값의 `cursor`는 빈 값입니다.

위와 같이, 받고 싶은 데이터 개수만큼 `size` 값을 바꾸고 `cursor` 값을 직전 응답값에서 받은 값으로 갱신해 API를 다시 호출하는 방식으로 데이터를 나눠 받을 수 있습니다.

이 문서 혹은 KAS에 관한 문의는 [개발자 포럼](https://forum.klaytn.com/c/kas/kasko/26)을 방문해 도움을 받으십시오.

## KRN <a href="#basics-api-krn" id="basics-api-krn"></a>

KRN (KAS Resource Name)은 KAS 모든 리소스를 식별하기 위한 고유한 값입니다. KAS에서 리소스란 여러분이 실제로 사용하려는 KAS 서비스에서 사용하는 자원(Preset, 계정, 수수료 대납 계정 등)을 의미합니다. 따라서 KAS는 내부적으로 여러분이 어떤 KAS 리소스에 접근하려고 할 때 KRN을 사용합니다.

KAS를 사용할 때 가장 빈번하게 접근하는 KAS 리소스 중 하나는 [계정 저장소](https://ground-x.gitbook.io/kas-docs-dev/getting-started/account#getting-started-account-accountpool)입니다. 여러분의 클레이튼 계정은 계정 저장소에 저장되어 있는데, KAS API를 호출할 때 특정 저장소에 있는 클레이튼 계정만을 사용하려면 반드시 이 저장소의 KRN값을 API 호출 헤더에 사용하셔야 합니다.

![KRN 예시](https://2429714773-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIr4aIKYb50HSQjs0vM%2Fsync%2Fc416a9abea2b9908e9aa32ef564b5fce5c0cbc4d.png?generation=1629868865878978\&alt=media)

KRN 값은 아래 포맷으로 구성됩니다.

```bash
krn:{chain-id}:{service-name}:{account-id}:{resource-type}:{resource-id}
```

| 항목            | 값                     | 비고                                                                     |
| ------------- | --------------------- | ---------------------------------------------------------------------- |
| chain-id      | 이 리소스가 존재하는 체인 ID     | <p><code>8217</code>(클레이튼 메인넷) <br>또는 <code>1001</code>(클레이튼 테스트넷)</p> |
| service-name  | 이 리소스를 통해 제공되는 서비스 이름 | `node`, `th`, `wallet`, `anchor`                                       |
| account-id    | KAS 계정을 식별하는 ID       |                                                                        |
| resource-type | 리소스 타입                | 서비스별로 다른 리소스 타입 존재                                                     |
| resource-id   | 리소스를 식별하는 ID          |                                                                        |

```bash
//클레이튼 계정 저장소의 KRN 값 예시
krn:1001:wallet:6698d79e-78ee-439a-815d-f293ec6ae736:account-pool:RayKim
```

위 값은 KRN의 예시값입니다. `krn:1001`에서 `1001`은 체인 ID를 의미하며 여기서는 클레이튼 테스트넷인 Baobab을 의미합니다. 맨 마지막에 위치한 `RayKim`은 여러분이 만든 계정 저장소의 이름입니다. 여러분 자신만의 계정 저장소를 만들지 않고 KAS에서 기본 제공하는 계정 저장소에 클레이튼 계정을 만들 수도 있습니다. 이 때에는 계정 저장소 이름이 `default`가 됩니다.

여러분은 KAS API로 클레이튼에 트랜잭션을 보낼 수 있습니다. 이 때 특정 계정 저장소를 선택하고 이 저장소에 있는 계정으로 트랜잭션을 보낼 수 있습니다. 이렇게 특정 저장소의 특정 계정을 선택한 후 KAS API로 트랜잭션을 보내려면 이 저장소의 KRN값이 필요합니다.

```bash
curl --location --request POST "https://wallet-api.klaytnapi.com/v2/tx/value" \
-u ${your_accessKeyId}:${your_secretAccessKey} \
--header "x-chain-id: 1001" \
--header "x-krn: krn:1001:wallet:b73717b4-2bad-4cbe-9517-951ca5af3a15:account-pool:RayKim"
--header "Content-Type: application/json" \
--data-raw "{
  "from": "0x5bb85d4032354E88020595AFAFC081C24098202e",
  "value": "0x100",
  "to": "0x2F87Ba64de5526F7880F21481Effbf950f70005c",
  "memo": "memo",
  "nonce": 0,
  "gasLimit": 1000000,
  "submit": true
}"
```

위 API를 호출하면 `RayKim`이라는 계정 저장소에 있는 계정들 중에서 `0x5bb85d4032354E88020595AFAFC081C24098202e`라는 주소(EOA)를 가진 계정이 `0x100`만큼의 KLAY (단위:peb)를 `0x2F87Ba64de5526F7880F21481Effbf950f70005c`에게 전송합니다.

이 문서 혹은 KAS에 관한 문의는 [개발자 포럼](https://forum.klaytn.com/c/kas/kasko/26)을 방문해 도움을 받으십시오.

## 트랜잭션 전송 수수료 대납 <a href="#basics-api-fd" id="basics-api-fd"></a>

KAS에서 제공하는 트랜잭션 전송 수수료 대납 방식은 2가지입니다.

### UserFeePayer 사용

여러분의 수수료 대납 계정을 만들어서, 여러분의 다른 계정이 KAS로 Klaytn에 트랜잭션을 보낼 때 이 대납 계정으로 트랜잭션 수수료를 대신 납부하는 방식입니다. Klaytn에 트랜잭션을 전송하는 API를 호출할 때, `feePayer` 파라미터에 여러분이 준비한 대납 계정 주소를 입력합니다.

{% hint style="warning" %}
KAS에서 사용할 수수료 대납 계정은 반드시 KAS 콘솔에서 생성해야 합니다. KAS 콘솔에서 생성하지 않은 수수료 대납 계정은 KAS 콘솔에서 관리하지 않습니다.
{% endhint %}

{% hint style="info" %}
KAS 콘솔에서 수수료 대납 계정을 만드는 방법은 [다음](https://ground-x.gitbook.io/kas-docs-dev/getting-started/account#getting-started-account-createfp)을 확인하십시오.
{% endhint %}

### GlobalFeePayer 사용

KAS에서 여러분의 트랜잭션 수수료를 대신 납부하고, 추후 이 수수료만큼의 비용을 여러분 KAS 계정에 청구합니다. GlobalFeePayer란 KAS에서 제공하는 대납 계정이며 GlobalFeePayer를 사용하면 여러분이 트랜잭션 수수료 대납 계정과 수수료로 사용할 KLAY를 준비하지 않아도 수수료 대납 트랜잭션을 전송할 수 있습니다.

{% hint style="warning" %}
수수료 대납 방식 트랜잭션을 전송하는 API를 호출 시 `feePayer` 파라미터 자체를 입력하지 마십시오. KAS는 추후 여러분의 KAS 계정에 이 트랜잭션 전송 수수료 비용을 별도로 청구합니다.
{% endhint %}

{% hint style="info" %}
KAS 콘솔에서 수수료 대납 계정을 만드는 방법은 [다음](https://ground-x.gitbook.io/kas-docs-dev/getting-started/account#getting-started-account-createfp)을 확인하십시오.
{% endhint %}

이 문서 혹은 KAS에 관한 문의는 [개발자 포럼](https://forum.klaytn.com/c/kas/kasko/26)을 방문해 도움을 받으십시오.

## SDK <a href="#basics-api-sdk" id="basics-api-sdk"></a>

**KAS SDK(Software Development Kit)**&#xB294; 여러 개발 환경에서 KAS를 쉽게 사용하도록 제공되는 개발 도구입니다. KAS SDK는 [Caver](https://ko.docs.klaytn.com/bapp/sdk)의 확장 라이브러리이며 Caver와 마찬가지로 JavaScript와 Java 환경을 지원합니다. KAS SDK로 BApp을 개발하면 하나의 라이브러리를 통해 KAS 기능과 기존 Caver의 기능을 모두 사용할 수 있습니다.

[KAS SDK(caver-js extension)](https://github.com/ground-x/caver-js-ext-kas)와 [KAS SDK(caver-java extension)](https://github.com/ground-x/caver-java-ext-kas)는 각각 [caver-js](https://github.com/klaytn/caver-js)와 [caver-java](https://github.com/klaytn/caver-java)의 확장 라이브러리로 이를 사용해 기존의 caver-js/caver-java 기능을 사용함과 동시에 KAS의 Node API, TokenHistory API, Wallet API 그리고 Anchor API도 사용하실 수 있습니다.

KAS SDK에 관한 자세한 내용은 [다음](https://ground-x.gitbook.io/kas-docs-dev/sdk)을 확인하십시오.

## KAS API 에러 코드 <a href="#basics-api-error" id="basics-api-error"></a>

KAS API 에러코드는 아래 각 API Reference를 확인하십시오

* [Klaytn Node API Reference](https://refs.klaytnapi.com/ko/node/latest)
* [Token History API Reference](https://refs.klaytnapi.com/ko/tokenhistory/latest)
* [Wallet API Reference](https://refs.klaytnapi.com/ko/wallet/latest)
* [Anchor API Reference](https://refs.klaytnapi.com/ko/anchor/latest)

이 문서 혹은 KAS에 관한 문의는 [개발자 포럼](https://forum.klaytn.com/c/kas/kasko/26)을 방문해 도움을 받으십시오.
