바이브 코더를 위한 SMS 게이트웨이 API

SMS8은 본인의 안드로이드를 기반으로 구축된 개발자용 SMS 게이트웨이입니다. Claude Code, Cursor, Windsurf 또는 curl에서 SMS, MMS, OTP, USSD를 발송할 수 있습니다. 키 하나, 베이스 URL 하나, JSON 입력과 JSON 출력.

REST · form-urlencoded JSON 응답 MCP 지원 A2P 10DLC 불필요 Twilio 불필요

샌드박스

여기서 바로 SMS 게이트웨이를 사용해 보세요. API 키를 붙여 넣고, 전화번호와 메시지를 입력한 뒤 발송 버튼을 누르세요. 사용자를 대신해 /services/send.php로 POST 요청을 보내고 실제 JSON 응답을 표시한 다음, 탭을 전환해 동일한 요청을 curl, PHP, JavaScript, Python 또는 Claude Code / Cursor 프롬프트로 가져갈 수 있습니다.

테스트 & 복사

실제 SMS 1건이 발송되며 크레딧 1개가 사용됩니다. API 키는 브라우저 밖으로 나가지 않습니다. 요청은 app.sms8.io로 직접 전송됩니다.

app.sms8.io/api.php에서 확인 · 브라우저에만 유지됩니다

기본 기기는 비워두세요. 2|0은 기기 2의 SIM 슬롯 0을 의미합니다.

준비됨

          

          

          

          

          

          

개요

SMS8 SMS 게이트웨이는 하나의 호스트에서 기능별로 단일 엔드포인트를 제공합니다. 경로 파라미터나 중첩 리소스가 없습니다. 모든 동작은 form-encoded 필드를 포함한 단일 POST입니다.

  • 베이스 URL: https://app.sms8.io/services/
  • 메서드: 모든 엔드포인트에서 POST
  • 본문: application/x-www-form-urlencoded
  • 응답: application/json
  • 인증: 본문의 key=YOUR_SMS8_API_KEY
바이브 코딩 단축키. Claude Code, Cursor 또는 Windsurf를 주로 사용한다면 curl을 건너뛰고 mcp.sms8.io에 있는 MCP 서버를 추가하세요. AI 어시스턴트가 대신 이러한 엔드포인트를 호출합니다. AI 도구 섹션을 참고하세요.

인증

모든 요청은 POST 본문에 API 키를 전송합니다. 키는 계정별이며 모든 엔드포인트에 대해 권한을 부여합니다. 대시보드의 API 페이지 app.sms8.io/api.php에서 키를 받을 수 있으며 언제든지 재생성할 수 있습니다. 이전 키는 즉시 무효화됩니다.

# 모든 요청에서
key=YOUR_SMS8_API_KEY
팁. mcp.sms8.io의 MCP 서버는 동일한 키를 Bearer 헤더(Authorization: Bearer YOUR_SMS8_API_KEY)로 받습니다. 헤더 기반 인증만 지원하는 도구에 유용합니다.

첫 SMS 보내기

페어링된 안드로이드의 기본 기기를 사용해 한 번호로 메시지를 보냅니다. YOUR_SMS8_API_KEY와 수신 번호를 교체하세요.

curl https://app.sms8.io/services/send.php \
  -d "key=YOUR_SMS8_API_KEY" \
  -d "number=+11234567890" \
  -d "message=SMS8에서 보내는 메시지"

응답 형식

모든 엔드포인트의 응답은 success 래퍼에 페이로드를 감쌉니다.

{
  "success": true,
  "data": {
    "messages": [
      {
        "ID": "1",
        "number": "+11234567890",
        "message": "Hello from SMS8",
        "deviceID": "1",
        "simSlot": "0",
        "status": "Pending",
        "type": "sms",
        "sentDate": "2026-05-24T10:30:00+00:00",
        "deliveredDate": null,
        "groupID": "…"
      }
    ]
  }
}

오류

실패 시 successfalse이며 본문에는 구조화된 error 객체가 포함됩니다.

{
  "success": false,
  "error": {
    "code": 401,
    "message": "Invalid API key"
  }
}
코드의미
400파라미터 누락 또는 형식 오류
401API 키 누락 또는 잘못된 키
402메시지 크레딧 부족
403이 계정 또는 요금제에서 허용되지 않은 동작
404리소스를 찾을 수 없음 (예: 알 수 없는 메시지 ID)
429요청 제한 도달, 속도를 줄이고 재시도
500서버 오류, 재시도하세요

SMS & MMS 발송

POST /services/send.php 단건, 배치, 목록 브로드캐스트, MMS

하나의 엔드포인트가 네 가지 발송 모드를 다룹니다. 단건 메시지, 배치(번호별로 다른 메시지), 연락처 목록 브로드캐스트, 그리고 첨부가 있는 MMS입니다. 어떤 필드를 보내느냐에 따라 모드가 결정됩니다.

필드타입설명
keystringAPI 키, 필수
numberstringE.164 형식 전화번호, 단건/일괄 모드용 콤마 구분 목록 가능
messagestring메시지 본문, number 또는 listID와 함께 필수
messagesJSON실제 배치 모드용 {number, message, type, attachments} 배열
listIDint이 목록의 모든 연락처에게 발송
devicesJSON|int단일 ID, JSON 배열, 또는 SIM이 지정된 "2|0" 형식
option0|1|2라우팅 참고: 지정 기기, 모든 기기, 또는 모든 SIM
useRandomDevice0|1선택된 기기에서 무작위로 하나 선택
prioritize0|1큐 우선 처리 (OTP, 응답 등)
typesms|mms기본값 sms
attachmentsstring콤마로 구분된 이미지 URL (MMS 전용)
scheduleunix ts이 시점에 미래 발송

한 번의 호출로 배치 발송

curl https://app.sms8.io/services/send.php \
  -d "key=YOUR_SMS8_API_KEY" \
  -d 'messages=[{"number":"+1...","message":"hi 1"},{"number":"+1...","message":"hi 2"}]' \
  -d "option=2"

연락처 목록에 브로드캐스트

curl https://app.sms8.io/services/send.php \
  -d "key=YOUR_SMS8_API_KEY" \
  -d "listID=1" \
  -d "message=오늘 밤 세일 종료"

메시지 조회

POST /services/read-messages.php ID, 그룹, 상태, 기기, 시간별 조회
필드타입설명
keystringAPI 키, 필수
idintID로 단일 메시지 조회
groupIdstring발송 시 반환된 그룹 ID, 배치에 유용
statusstringReceived, Sent, Pending, Failed
deviceIDint기기로 필터
simSlotint첫 번째 SIM은 0, 두 번째는 1
startTimestampunix ts이상 (시작 시각 포함)
endTimestampunix ts이하 (종료 시각 포함)
# 기기 8의 SIM 0에서 지난 24시간 동안 수신된 SMS
curl https://app.sms8.io/services/read-messages.php \
  -d "key=YOUR_SMS8_API_KEY" \
  -d "status=Received" \
  -d "deviceID=8" \
  -d "simSlot=0" \
  -d "startTimestamp=$(( $(date +%s) - 86400 ))"

재발송

POST /services/resend.php ID, 그룹, 상태별 재시도

read-messages와 동일한 필터 구조를 사용합니다. 단일 ID, 그룹 내 모든 메시지, 또는 지정한 시간 범위 내 특정 상태의 모든 메시지를 재시도할 수 있습니다.

연락처

POST /services/manage-contacts.php 추가, 재구독, 구독 취소
필드타입설명
keystringAPI 키, 필수
listIDint대상 연락처 목록, 필수
numberstring연락처 전화번호, 필수
namestring표시 이름 (추가 시에만)
resubscribe0|1이전에 구독 취소된 경우 재구독
unsubscribe0|1목록에서 제거

기기

POST /services/get-devices.php 페어링된 안드로이드 기기 목록

활성화된 모든 기기와 모델명, SIM 슬롯, 기본 기기 플래그를 반환합니다. 발송 호출에서 devices를 구성하기 전에 유용합니다.

USSD

POST /services/send-ussd-request.php 예: *150# 잔액 확인
POST /services/read-ussd-requests.php 전송한 USSD 요청 조회

페어링된 기기에서 통신사 USSD 코드를 실행하고 응답을 받아옵니다. 선불 요금 잔액 확인이나 통신사 메뉴에 유용합니다.

수신 웹훅

대시보드의 API 페이지에서 웹훅 URL을 설정하세요. SMS8은 수신된 모든 SMS를 HMAC-SHA256 서명과 함께 해당 URL로 POST합니다. 따라서 수신자는 페이로드가 SMS8에서 왔으며 변조되지 않았음을 검증할 수 있습니다.

AI 도구에서는 MCP의 create_webhook 도구를 통해 웹훅을 등록하세요. URL은 저장 전에 SSRF 차단 목록과 대조해 검증됩니다.

기기 & SIM 라우팅

모든 발송 엔드포인트는 동일한 라우팅 컨트롤을 사용합니다. 이를 조합해 여러 휴대폰과 SIM에 부하를 분산할 수 있습니다.

option동작
0devices에 지정한 ID를 그대로 사용합니다. SIM 슬롯은 "2|0" (기기 2, SIM 0) 형식을 사용합니다.
1활성화된 모든 기기를 사용하며 기기별 기본 SIM을 씁니다. 배치는 기기들에 분산됩니다.
2활성화된 모든 기기와 모든 SIM을 사용합니다. 듀얼 SIM 휴대폰에서 최대 처리량을 얻을 수 있습니다.

useRandomDevice=1로 설정하면 선택된 기기에서 무작위로 하나의 발신자를 고르며, OTP에 유용합니다.

예약 발송

schedule에 unix 타임스탬프를 전달하면 발송을 지연시킬 수 있습니다. 동일한 메시지를 여러 번호로 예약할 수도 있고, 배치를 미래 일정으로 예약할 수도 있습니다. 둘 다 가능합니다.

크레딧 잔액

/services/send.phpkey 필드만 포함해 호출하세요. 응답의 credits 필드는 남은 크레딧 또는 "Unlimited"를 반환합니다.

Claude Code, Cursor & Windsurf에서 사용하기

SMS8은 위 모든 REST 엔드포인트를 JSON-RPC 도구로 감싼 MCP 서버를 mcp.sms8.io에서 제공합니다. 동일한 API 키를 쓰며 별도의 계정이 필요 없습니다.

// ~/.config/claude/mcp-servers.json (Claude Code)
// ~/.cursor/mcp.json (Cursor)
// ~/.codeium/windsurf/mcp_config.json (Windsurf)
{
  "mcpServers": {
    "sms8": {
      "url": "https://mcp.sms8.io",
      "transport": "http",
      "headers": {
        "Authorization": "Bearer YOUR_SMS8_API_KEY"
      }
    }
  }
}
MCP 도구래핑하는 엔드포인트
send_sms/services/send.php
send_otpOTP 저장소 + /services/send.php
verify_otpOTP 저장소, 상수 시간 비교
get_messages/services/read-messages.php
list_devices/services/get-devices.php
create_webhook사용자 웹훅 URL (SSRF 검증)
setup_sms8계정 + 기기 핸드셰이크

PHP SDK

app.sms8.io/api.php 대시보드에서는 API 키가 미리 채워진 완전한 PHP 클래스를 렌더링합니다. sendSingleMessage, sendMessages, sendMessageToContactsList, getMessageByID, getMessagesByStatus, resendMessageByID, addContact, unsubscribeContact, getBalance, sendUssdRequest, getDevices 메서드를 포함합니다.

$msg = sendSingleMessage("+11234567890", "SMS8에서 보내는 메시지");

$msg = sendSingleMessage("+11234567890", "기기 1에서 발송", 1);

$msg = sendSingleMessage("+11234567890", "SIM 0에서 발송", "1|0");

$msg = sendSingleMessage("+11234567890", "2분 뒤 발송", null, strtotime("+2 minutes"));

C# SDK

완전한 C# API 클래스도 대시보드에 미리 채워져 있습니다. PHP SDK와 동일한 인터페이스를 제공하며 .NET / Unity / Xamarin 프로젝트에 바로 사용할 수 있습니다.

SMS.API.SendSingleMessage("+11234567890", "SMS8에서 보내는 메시지");

var msg = SMS.API.SendSingleMessage("+11234567890", "기기 1에서 발송", "1");

var msgs = SMS.API.SendMessages(messages, SMS.API.Option.USE_ALL_SIMS);

curl 레시피

# OTP 스타일 메시지를 우선순위로 발송
curl https://app.sms8.io/services/send.php \
  -d "key=YOUR_SMS8_API_KEY" \
  -d "number=+11234567890" \
  -d "message=인증번호는 482910입니다" \
  -d "prioritize=1" \
  -d "devices=1"

# 메시지 크레딧 확인
curl https://app.sms8.io/services/send.php \
  -d "key=YOUR_SMS8_API_KEY"

# 연락처 추가, 이미 있으면 재구독
curl https://app.sms8.io/services/manage-contacts.php \
  -d "key=YOUR_SMS8_API_KEY" \
  -d "listID=1" \
  -d "number=+11234567890" \
  -d "name=Alex" \
  -d "resubscribe=1"

FAQ

SMS8 SMS 게이트웨이 API란 무엇인가요?

SMS와 MMS 발송, 연락처 관리, USSD 실행, 인박스 조회를 수행하는 HTTP API입니다. 모든 엔드포인트는 https://app.sms8.io/services/ 하위의 POST이며 key 파라미터로 인증합니다. 메시지는 페어링된 안드로이드 휴대폰을 통해 라우팅되므로 A2P 10DLC나 메시지당 비용이 없습니다.

Claude Code, Cursor, Windsurf에서 어떻게 사용하나요?

mcp.sms8.io의 MCP 서버를 AI 도구에 추가하고 SMS8 API 키를 Bearer 토큰으로 사용하세요. MCP는 동일한 REST 엔드포인트를 send_sms, send_otp, verify_otp 같은 JSON-RPC 도구로 감쌉니다. AI 도구 섹션을 참고하세요.

Twilio 번호 없이 발송할 수 있나요?

네. SMS8은 본인의 안드로이드 휴대폰과 SIM 카드를 게이트웨이로 사용합니다. Twilio 번호, A2P 10DLC 등록, 통신사 메시지당 비용이 필요 없습니다.

수신 SMS를 어떻게 받나요?

대시보드의 API 페이지에서 웹훅 URL을 설정하세요. SMS8은 수신된 모든 SMS를 HMAC 서명과 함께 해당 URL로 POST하므로 페이로드를 검증할 수 있습니다.

어떤 속도 제한이 적용되나요?

SMS 처리량은 페어링된 기기의 속도와 요금제의 월간 사용량에 따라 결정됩니다. OTP 흐름에는 24시간당 번호별 5회 한도와 구성 가능한 재발송 쿨다운이 추가로 적용됩니다.

API 키를 어떻게 교체하나요?

대시보드 app.sms8.io/api.php에서 재생성하세요. 이전 키는 즉시 무효화됩니다.

첫 통합을 만들어 보세요

무료로 가입하고 안드로이드를 페어링한 뒤 키를 받아 바로 출시하세요.

무료 계정 만들기   OTP 문서 읽기