> 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/common/error-code.md).

# 오류 코드

#### **인증 에러 (401 Unauthorized)**

| 메시지                               | 원인                  | 해결 방법                                                |
| --------------------------------- | ------------------- | ---------------------------------------------------- |
| `Authorization header is missing` | Authorization 헤더 누락 | 요청 헤더에 Authorization 추가                              |
| `Invalid Authorization`           | 헤더 형식 오류            | `apiKey=..., ts=..., nonce=..., signature=...` 형식 확인 |
| `Invalid timestamp`               | 타임스탬프가 숫자가 아님       | Unix Timestamp (초 단위 정수) 사용                          |
| `Expired request`                 | 서버 시간과 5분 이상 차이     | 서버 시간 동기화(NTP) 확인                                    |
| `Replay detected`                 | 동일 nonce 재사용        | 요청마다 새로운 nonce 생성                                    |
| `Invalid API Key`                 | 존재하지 않는 API Key     | API Key 확인                                           |
| `Invalid User`                    | 유저 정보 없음            | 계정 상태 확인                                             |
| `Signature mismatch`              | 서명 불일치              | 서명 생성 로직 및 API Secret 확인                             |

#### **요청 에러 (400 Bad Request)**

| reason                              | 원인                      | 해결 방법                 |
| ----------------------------------- | ----------------------- | --------------------- |
| `발송 채널 정보(cid)가 필요합니다.`             | `cid` 누락                | 요청 본문에 `cid` 추가       |
| `발송할 템플릿 정보(tid)가 필요합니다.`           | `tid` 누락                | 요청 본문에 `tid` 추가       |
| `수신자(to) 정보가 필요합니다.`                | `to` 누락                 | 요청 본문에 `to` 추가        |
| `변수(variable) 정보가 필요합니다.`           | `variables` 누락          | 요청 본문에 `variables` 추가 |
| `변수(variable)는 배열 형식이어야 합니다.`       | `variables`가 객체(배열)가 아님 | JSON 객체 형태로 전달        |
| `발송 채널 정보가 없습니다.`                   | 채널이 존재하지 않거나 삭제됨        | 대시보드에서 채널 상태 확인       |
| `발송 채널 유형이 템플릿 유형과 일치하지 않습니다.`      | 채널 타입과 템플릿 타입 불일치       | 동일 타입의 채널-템플릿 조합 사용   |
| `템플릿 정보가 없습니다.`                     | 템플릿이 존재하지 않거나 삭제됨       | 대시보드에서 템플릿 상태 확인      |
| `발송에 필요한 포인트가 부족합니다.`               | 잔여 포인트 부족               | 포인트 충전                |
| `템플릿 상세 정보가 없습니다.`                  | 템플릿 상세 설정 미완료           | 대시보드에서 템플릿 설정 완료      |
| `템플릿 변수 '{변수명}'에 대한 값이 제공되지 않았습니다.` | 템플릿에 정의된 변수 값 누락        | `variables`에 해당 변수 추가 |
| `메시지 예약 생성에 실패했습니다.`                | 내부 큐 등록 실패              | 재시도 또는 고객센터 문의        |

#### **Rate Limit 에러 (429 Too Many Requests)**

| 메시지                   | 원인          | 해결 방법                                 |
| --------------------- | ----------- | ------------------------------------- |
| `Rate limit exceeded` | 1분 내 60회 초과 | `X-RateLimit-Reset` 헤더의 시간까지 대기 후 재시도 |

#### **서버 에러 (500 Internal Server Error)**

| 메시지                   | 원인           | 해결 방법          |
| --------------------- | ------------ | -------------- |
| `메시지 전송 중 오류가 발생했습니다` | 서버 내부 처리 오류  | 재시도 또는 고객센터 문의 |
| `예외가 발생했습니다.`         | 예기치 않은 서버 오류 | 고객센터 문의        |
