ALL4SMS API 문서

목차

소개

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 발송

하나 이상의 수신자에게 한국 전화번호로 SMS 메시지를 발송합니다. 모든 메시지는 70자로 제한되며, API는 메시지 큐잉, 전송 및 상태 추적을 자동으로 처리합니다.

POST /api/sms/send

요청 본문

매개변수 타입 필수 설명
recipient string 필수 수신자 전화번호. 여러 형식 지원:
  • 단일 번호: "821012345678"
  • 여러 번호: "821012345678,821098765432"
  • 줄바꿈으로 구분: "821012345678\n821098765432"
허용 형식: 8210..., 010..., 10...
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 또는 참조 코드로 상태를 확인할 수 있습니다.

GET /api/sms/status

쿼리 매개변수

매개변수 타입 필수 설명
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

요청 예시

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": "사용 가능한 경우 추가 에러 세부 정보"
    }
}

일반적인 HTTP 상태 코드

코드 설명 일반적인 해결 방법
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 + 유니코드)은 유니코드로 처리됩니다.