개발자 API

대규모 인증 자동화

SNSPhone API를 사용하면 직접 만든 도구로 미국 논VoIP 번호를 주문하고, SMS 코드를 확인하며, 대여를 관리할 수 있어요. 두 가지 형식을 제공해요: JSON 형식의 REST API와 기존 스크립트용 일반 SMS 인증 형식이에요.

빠른 시작

기본 URL https://snsphone.com/api/v1. 콘솔의 API 페이지에서 키를 생성하고 Authorization: Bearer spk_...로 보내세요 (또는 key 필드로). 모든 번호는 미국 논VoIP 번호예요. 금액은 소수점 2자리까지의 USD 문자열이고, 시간은 ISO 8601 UTC 형식이에요. 키당 분당 300회 요청 가능해요. 2026-11-03 기준 가격이에요.

Python

import os, time, requests

API = "https://snsphone.com/api/v1"
H = {"Authorization": f"Bearer {os.environ['SNSPHONE_KEY']}"}

order = requests.post(f"{API}/orders", headers=H, data={"service": "google"}).json()["order"]
print("Use this US number:", order["phone"])

while True:
    o = requests.get(f"{API}/orders/{order['id']}", headers=H).json()["order"]
    if o["code"] or o["status"] in ("refunded", "canceled"):
        break
    time.sleep(4)
print("Code:", o["code"])

Node.js

const API = "https://snsphone.com/api/v1";
const H = { Authorization: `Bearer ${process.env.SNSPHONE_KEY}` };

const { order } = await fetch(`${API}/orders`, {
  method: "POST", headers: H, body: new URLSearchParams({ service: "discord" }),
}).then((r) => r.json());
console.log("Use this US number:", order.phone);

let o = order;
while (!o.code && !["refunded", "canceled"].includes(o.status)) {
  await new Promise((r) => setTimeout(r, 4000));
  ({ order: o } = await fetch(`${API}/orders/${order.id}`, { headers: H }).then((r) => r.json()));
}
console.log("Code:", o.code);

카탈로그

GET/services

각 서비스의 이름, 카테고리, 인증 가격, 대여 기간이 코드별로 나와 있어요. API 키가 필요하지 않아요.

공개, 키 불필요.

curl "https://snsphone.com/api/v1/services"
{"country":"us","services":[{"code":"whatsapp","name":"WhatsApp","category":"Messaging","verification":"0.90","rentals":[]},{"code":"telegram","name":"Telegram","verification":"0.45","rentals":[{"days":365,"period":"1 year","price":"37.44"}]}]}

GET/prices?service=telegram

USD로 표시된 가격이에요. 한 서비스 기준이며, 키는 필요 없어요.

공개, 키 불필요.

curl "https://snsphone.com/api/v1/prices?service=telegram"
{"country":"us","prices":[{"service":"telegram","type":"verification","days":null,"price":"0.45"},{"service":"telegram","type":"rental","days":365,"price":"37.44"}]}

GET/balance

USD 기준 크레딧 잔액.

API 키가 필요해요.

curl "https://snsphone.com/api/v1/balance" \
  -H "Authorization: Bearer $KEY"
{"balance":"25.00","currency":"USD"}

인증

POST/orders

인증을 구매해요 (201). 미국 번호와 20분 코드 대기 시간이 끝나는 시간을 반환해요.

API 키가 필요해요.

curl -X POST "https://snsphone.com/api/v1/orders" \
  -H "Authorization: Bearer $KEY" \
  -d "service=whatsapp"
{"order":{"id":"VR-7K2M9QX4PB","service":"whatsapp","country":"us","phone":"+14155550142","number":"4155550142","status":"waiting","code":null,"expires_at":"2026-11-03T12:20:00.000Z"},"window_minutes":20}

GET/orders/VR-7K2M9QX4PB

하나의 인증과 그 상태, 수신된 모든 코드를 확인하세요. 상태: waiting, received, finished, refunded, canceled.

API 키가 필요해요.

curl "https://snsphone.com/api/v1/orders/VR-7K2M9QX4PB" \
  -H "Authorization: Bearer $KEY"
{"order":{"id":"VR-7K2M9QX4PB","status":"received","code":"482913","sms":"Your WhatsApp code is 482913"}}

GET/orders?status=open

진행 중인 인증 목록(status=all로 최근 100건 조회 가능).

API 키가 필요해요.

curl "https://snsphone.com/api/v1/orders?status=open" \
  -H "Authorization: Bearer $KEY"
{"orders":[...]}

POST/orders/VR-7K2M9QX4PB/resend

첫 번째 코드 이후에 동일한 번호로 다른 코드를 요청할 수 있어요. 코드 대기 시간이 열려 있는 동안 추가 요금 없이 가능해요.

API 키가 필요해요.

curl -X POST "https://snsphone.com/api/v1/orders/VR-7K2M9QX4PB/resend" \
  -H "Authorization: Bearer $KEY"
{"order":{"status":"received","waiting_for_resend":true}}

POST/orders/VR-7K2M9QX4PB/finish

인증 코드를 받은 인증을 완료해요.

API 키가 필요해요.

curl -X POST "https://snsphone.com/api/v1/orders/VR-7K2M9QX4PB/finish" \
  -H "Authorization: Bearer $KEY"
{"order":{"status":"finished"}}

POST/orders/VR-7K2M9QX4PB/cancel

코드가 오기 전에 취소하세요. 전체 금액이 크레딧으로 돌아가요.

API 키가 필요해요.

curl -X POST "https://snsphone.com/api/v1/orders/VR-7K2M9QX4PB/cancel" \
  -H "Authorization: Bearer $KEY"
{"order":{"status":"canceled","refunded":"0.90"}}

대여

POST/rentals

서비스 하나와 기간 하나로 미국 번호를 대여해요(201). 서비스에 기간이 하나뿐이면 days는 생략해도 돼요.

API 키가 필요해요.

curl -X POST "https://snsphone.com/api/v1/rentals" \
  -H "Authorization: Bearer $KEY" \
  -d "service=telegram&days=365"
{"rental":{"id":"RN-4J8T2W6QHM","service":"telegram","phone":"+13125550198","days":365,"period":"1 year","price":"37.44","status":"active","ends_at":"2027-11-03T12:00:00.000Z","messages":[]}}

GET/rentals?status=active

활성 중인 대여 목록과 최신 메시지 확인 가능(status=all로 최근 100건 조회 가능).

API 키가 필요해요.

curl "https://snsphone.com/api/v1/rentals?status=active" \
  -H "Authorization: Bearer $KEY"
{"rentals":[...]}

GET/rentals/RN-4J8T2W6QHM

하나의 대여와 그 대여에서 수신된 모든 SMS를 확인하세요.

API 키가 필요해요.

curl "https://snsphone.com/api/v1/rentals/RN-4J8T2W6QHM" \
  -H "Authorization: Bearer $KEY"
{"rental":{"id":"RN-4J8T2W6QHM","status":"active","messages":[{"from":"Telegram","sms":"Telegram code: 57291","code":"57291","received_at":"2026-11-03T12:01:12.000Z"}]}}

POST/rentals/RN-4J8T2W6QHM/renew

같은 가격으로 한 번 더 기간을 연장해요.

API 키가 필요해요.

curl -X POST "https://snsphone.com/api/v1/rentals/RN-4J8T2W6QHM/renew" \
  -H "Authorization: Bearer $KEY"
{"rental":{"renewed":1,"ends_at":"2028-11-02T12:00:00.000Z"}}

POST/rentals/RN-4J8T2W6QHM/cancel

SMS가 도착하지 않은 처음 20분 동안 취소할 수 있어요. 결제한 금액은 모두 크레딧으로 돌아가요.

API 키가 필요해요.

curl -X POST "https://snsphone.com/api/v1/rentals/RN-4J8T2W6QHM/cancel" \
  -H "Authorization: Bearer $KEY"
{"rental":{"status":"canceled","refunded":"37.44"}}

SMS 활성화 형식

일반적인 활성화 형식을 지원하는 도구를 위한 거예요. 하나의 URL, 액션 필드, 일반 텍스트 응답으로 간단하게 사용할 수 있어요. 인증만 가능해요.

https://snsphone.com/stubs/handler_api.php?api_key=KEY&action=ACTION
액션추가 필드응답의미
getBalance없음ACCESS_BALANCE:12.50USD 기준 크레딧 잔액.
getServicesList없음{"status":"success","services":[{"code":"whatsapp","name":"WhatsApp"}]}인증 가격이 포함된 서비스 코드(JSON).
getCountries없음{"us":{"name":"United States","dial":"1"}}미국만 가능. country는 us, 187 또는 생략 가능.
getPrices&service=whatsapp{"us":{"whatsapp":{"cost":0.9,"count":100}}}USD 기준 가격이에요. 서비스 필터는 선택 사항이에요.
getNumber&service=whatsapp&country=usACCESS_NUMBER:VR-7K2M9QX4PB:14155550142인증을 구매해요. ID와 앞에 1이 붙은 번호를 반환해요.
getStatus&id=VR-7K2M9QX4PBSTATUS_OK:482913STATUS_WAIT_CODE, STATUS_OK:<code>, STATUS_WAIT_RETRY:<last code> (다른 코드 요청됨), STATUS_CANCEL (취소 또는 환불됨).
setStatus&id=VR-7K2M9QX4PB&status=3ACCESS_RETRY_GETstatus=1 준비 완료(ACCESS_READY), 3 다른 코드(ACCESS_RETRY_GET), 6 완료(ACCESS_ACTIVATION), 8 코드 도착 전 전체 환불 취소(ACCESS_CANCEL).

오류

REST 오류는 {"error":{"code","message"}} 형식으로 반환되며 상태 코드가 함께 제공돼요. 활성화 형식은 일반 텍스트로 응답해요.

400필드가 없거나 잘못되었어요 (bad_json, bad_period).
401API 키가 없거나 잘못된 키예요 (no_key, bad_key).
402크레딧이 부족해요 (no_balance).
404알 수 없는 서비스, 주문, 대여 또는 엔드포인트이거나, 해당 서비스에서 제공하지 않는 제품이에요 (not_sold).
409지금은 불가능해요 (has_code, has_sms, too_late, not_ready, too_many_open, too_many_active, no_numbers).
4291분에 300개 이상의 요청을 보내면 (rate_limited)이에요.
BAD_KEYAPI 키가 없거나 잘못되었어요.
BAD_ACTION알 수 없는 작업이에요.
BAD_SERVICE알 수 없는 서비스 코드예요.
BAD_COUNTRY미국이 아니거나, 해당 서비스는 대여 전용으로 판매되고 있어요.
NO_BALANCE크레딧이 부족해요.
NO_NUMBERS지금은 사용 가능한 번호가 없어요. 잠시 후에 다시 시도해 주세요.
NO_ACTIVATION알 수 없는 ID이거나 본인 소유가 아니에요.
EARLY_CANCEL_DENIED이미 인증 코드가 도착해서 취소할 수 없어요.
NO_ACTIVATIONS인증 요청이 이미 20개 열려 있어요.
TOO_MANY_REQUESTS1분에 300개 이상의 요청이 들어왔어요.

API 질문

키, 제한 사항, 폴링에 대한 답변이에요.

SNSPhone에 SMS 인증 API가 있나요?

네. 서비스, 가격, 인증, 대여를 위한 /api/v1의 REST API와 JSON이 제공되고, 일반적인 SMS 활성화 형식은 /stubs/handler_api.php에서 사용할 수 있어요.

API 요청을 어떻게 인증하나요?

콘솔의 API 페이지에서 키를 생성하고 Authorization: Bearer spk_...로 보내거나 key 필드로 보내세요. 키는 해시로만 저장되며 한 번만 표시돼요.

API 요청 제한은 어떻게 되나요?

API 키당 분당 300회 요청 가능하며, 계정당 최대 20개의 열린 인증과 20개의 활성 대여가 가능해요.

API 주문은 웹사이트 주문보다 비싸나요?

아니요. API는 콘솔과 동일한 가격과 환불 규칙을 사용해요.

인증 코드가 도착했는지 어떻게 알 수 있나요?

GET /orders/{id}를 몇 초마다 폴링하세요. 상태가 waiting에서 received로 바뀌고, code 필드에 숫자가 들어가요.

논VoIP SMS 인증 API: REST로 미국 번호 제공 | SNSPhone