> For the complete documentation index, see [llms.txt](https://a-send.gitbook.io/api/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://a-send.gitbook.io/api/auth/summary.md).

# 개요

에이샌드 API는 **HMAC-SHA256** 기반의 서명 인증 방식을 사용합니다. 모든 API 요청에는 `Authorization` 헤더가 필수입니다.

### **Authorization 헤더 형식**

| 파라미터        | 타입      | 설명                          |
| ----------- | ------- | --------------------------- |
| `apiKey`    | string  | 발급받은 API Key                |
| `ts`        | integer | 현재 Unix Timestamp (초 단위)    |
| `nonce`     | string  | 요청마다 고유한 1회성 랜덤 문자열         |
| `signature` | string  | HMAC-SHA256 서명 (Base64 인코딩) |

### **인증 검증 순서**

서버는 요청을 수신하면 아래 순서로 검증을 수행합니다.

```
1. 타임스탬프 검증  ── 서버 시간과 ±5분 이내인지 확인
        │
2. Nonce 중복 검사  ── 동일 nonce 재사용 여부 확인 (재생 공격 방지)
        │
3. Rate Limit 검사  ── API Key 기준 요청 빈도 제한
        │
4. 서명 검증       ── 서버에서 동일 방식으로 서명을 생성하여 비교
```

### **인증 실패 응답**

| 상황                  | HTTP 코드 | 메시지                               |
| ------------------- | ------- | --------------------------------- |
| Authorization 헤더 누락 | `401`   | `Authorization header is missing` |
| 헤더 형식 오류            | `401`   | `Invalid Authorization`           |
| 타임스탬프 형식 오류         | `401`   | `Invalid timestamp`               |
| 타임스탬프 만료 (±5분 초과)   | `401`   | `Expired request`                 |
| Nonce 재사용           | `401`   | `Replay detected`                 |
| API Key 불일치         | `401`   | `Invalid API Key`                 |
| 서명 불일치              | `401`   | `Signature mismatch`              |
| Rate Limit 초과       | `429`   | `Rate limit exceeded`             |
