All4SMS API는 한국 전화번호로 SMS 메시지를 발송하고, 전송 상태를 확인하며, 계정 잔액을 관리할 수 있는 강력한 인터페이스를 제공합니다.
기본 URL: 모든 API 엔드포인트는 설치 URL에 상대적입니다 (예: https://api.all4sms.com/)
인증: 모든 요청에는 Authorization 헤더에 Bearer 토큰으로 API 키가 포함되어야 합니다.
형식: API는 JSON 형식만을 허용하고 반환합니다.
모든 API 요청에는 API 키가 포함된 Authorization 헤더가 필요합니다:
Authorization: Bearer YOUR_API_KEY
인증에 실패하면 API는 401 Unauthorized 응답을 반환합니다:
{
"success": false,
"error": "유효하지 않은 API 키"
}
하나 이상의 수신자에게 한국 전화번호로 SMS 메시지를 발송합니다. 모든 메시지는 70자로 제한되며, API는 메시지 큐잉, 전송 및 상태 추적을 자동으로 처리합니다.
| 매개변수 | 타입 | 필수 | 설명 |
|---|---|---|---|
| recipient | string | 필수 |
수신자 전화번호. 여러 형식 지원:
|
| message | string | 필수 | SMS 메시지 내용 (최대 70자). 한글, 이모지, 특수문자 모두 포함하여 70자로 제한 |
{
"recipient": "821012345678,821098765432",
"message": "안녕하세요! 테스트 메시지입니다 (70자 미만)"
}
{
"success": true,
"message": "SMS 전송 대기 중",
"data": {
"reference_code": "REF20230531123456789",
"message_id": 12345,
"group_id": 456789,
"sender": "821098765432",
"total_cost": 2,
"remaining_balance": 98,
"recipient_count": 2,
"sms_count": 2,
"status": "대기 중",
"message_length": 45
}
}
400 Bad Request - 메시지 길이 초과
{
"success": false,
"error": "메시지가 70자 제한을 초과했습니다 (현재: 85자)"
}
400 Bad Request - 수신자 수 초과
{
"success": false,
"error": "요청당 최대 30명의 수신자",
"max_recipients": 30
}
400 Bad Request - 잔액 부족
{
"success": false,
"error": "잔액 부족"
}
발송된 메시지의 현재 전송 상태를 확인합니다. 메시지 ID 또는 참조 코드로 상태를 확인할 수 있습니다.
| 매개변수 | 타입 | 필수 | 설명 |
|---|---|---|---|
| message_id | integer | 필수* | SMS 발송 엔드포인트에서 반환된 메시지 ID |
| reference_code | string | 필수* | message_id 대신 사용 가능, 발송 응답의 참조 코드 |
* message_id 또는 reference_code 중 하나는 반드시 제공되어야 합니다
GET /api/sms/status?message_id=12345
{
"success": true,
"data": [
{
"id": 12345,
"recipient": "821012345678",
"status": "전송 완료",
"delivery_time": "2023-05-31 12:34:56",
"error_code": null,
"error_message": null
},
{
"id": 12346,
"recipient": "821098765432",
"status": "전송 실패",
"delivery_time": null,
"error_code": "INVALID_NUMBER",
"error_message": "수신자 번호가 유효하지 않습니다"
}
]
}
| 상태 | 설명 |
|---|---|
대기 중 |
메시지가 전송 대기 중입니다(일반적으로 몇 초 내) |
전송 중 |
메시지가 통신사 네트워크로 전송되었습니다 |
전송 완료 |
메시지가 수신자 기기로 전달되었습니다 |
전송 실패 |
메시지 전송에 실패했습니다(자세한 내용은 error_code 확인) |
유효하지 않은 번호 |
수신자 번호가 유효하지 않거나 서비스 중이 아닙니다 |
현재 계정 잔액을 크레딧 단위로 확인합니다. 각 크레딧은 한 명의 수신자에게 한 개의 SMS 세그먼트를 나타냅니다.
GET /api/user/balance
{
"success": true,
"data": {
"credit_balance": 98,
"pending_charges": 2,
"effective_balance": 96,
"last_transaction": {
"date": "2023-05-30",
"amount": 100,
"type": "구매"
}
}
}
모든 에러 응답은 설명 메시지와 함께 일관된 JSON 형식을 따릅니다:
{
"success": false,
"error": "문제를 설명하는 에러 메시지",
"code": "ERROR_CODE",
"details": {
"field": "사용 가능한 경우 추가 에러 세부 정보"
}
}
| 코드 | 설명 | 일반적인 해결 방법 |
|---|---|---|
400 |
잘못된 요청 - 유효하지 않은 매개변수 또는 필수 필드 누락 | 요청 본문/매개변수 확인 |
401 |
인증 실패 - 유효하지 않거나 누락된 API 키 | API 키 확인 |
403 |
권한 없음 - 권한 부족 | 계정 권한 확인 |
404 |
찾을 수 없음 - 유효하지 않은 엔드포인트 | API 문서 확인 |
429 |
너무 많은 요청 - 요청 한도 초과 | 잠시 후 다시 시도 |
500 |
내부 서버 오류 - 서버에서 문제 발생 | 지원팀에 문의 |
API는 여러 형식의 한국 전화번호를 허용하고 자동으로 정규화합니다:
| 입력 형식 | 예시 | 정규화된 형식 |
|---|---|---|
| 국제 형식 | 821012345678 |
821012345678 |
| 국내 형식 (0 포함) | 01012345678 |
821012345678 |
| 국내 형식 (0 제외) | 1012345678 |
821012345678 |
| 하이픈 포함 | 010-1234-5678 |
821012345678 |
참고: 현재 이 서비스는 한국 전화번호(010 접두사)만 지원합니다. 한국 외의 국제 번호는 거부됩니다.
SMS 메시지는 사용된 문자 집합에 따라 다른 길이 제한을 가집니다:
| 문자 집합 | SMS당 문자 수 | 세그먼트당 문자 수 | 최대 세그먼트 | 인코딩 |
|---|---|---|---|---|
| GSM-7 (ASCII) | 160 | 153 (연결된 경우) | 100 | 7-bit |
| 유니코드 (한글) | 70 | 67 (연결된 경우) | 100 | 16-bit UCS-2 |
| 메시지 내용 | 문자 수 | 세그먼트 | 비용 |
|---|---|---|---|
| "Hello World" (11 ASCII) | 11 | 1 | 1 크레딧 |
| "안녕하세요" (5 한글) | 5 | 1 | 1 크레딧 |
| 160 ASCII 문자 | 160 | 1 | 1 크레딧 |
| 161 ASCII 문자 | 161 | 2 | 2 크레딧 |
| 70 한글 문자 | 70 | 1 | 1 크레딧 |
| 71 한글 문자 | 71 | 2 | 2 크레딧 |
API는 메시지에 유니코드 문자가 포함되어 있는지 자동으로 감지하고 그에 따라 세그먼트 수를 계산합니다. 혼합된 내용(ASCII + 유니코드)은 유니코드로 처리됩니다.