본문으로 건너뛰기
100+
국가
1,000개 이상의 서비스. 암호화폐로 결제, KYC 불필요.
번호 구매

SMS 인증 API — SMSNoKYC

OTP 인증을 처음부터 끝까지 자동화하세요. 190개가 넘는 나라에서 가상 번호를 예약하고, 문자 코드를 몇 초 만에 읽고, 장기 전용 회선을 대여하고, 모든 주문을 하나의 REST 표면에서 다루세요 — API 키 없음, KYC 없음, 암호화폐로 결제.

예상 읽기 시간: 5분 REST · JSON · OpenAPI 3.0 OpenAPI 명세 →

인증이 필요합니다. 각 요청은 세션 쿠키에 기대므로 SMSNoKYC 계정에 로그인되어 있어야 합니다. 호출하기 전에 웹 인터페이스나 인증 엔드포인트로 세션을 세우세요.

개발자들이 SMSNoKYC API를 선택하는 이유

SMSNoKYC는 익명성, 글로벌 커버리지, 예측 가능한 가격이 필요한 개발자를 위한 가장 유연한 SMS 인증 API입니다. 기업 계약, 월 최소 사용량, KYC 설문지로 접근을 제한하는 기존 SMS-OTP 제공업체와 달리, SMSNoKYC는 모든 HTTPS 클라이언트에서 작동하고, 번호당 요금만 청구하며, Bitcoin, Monero, Ethereum, USDT, USDC, Solana, Litecoin, XRP, TRON, Toncoin을 포함한 20종 이상의 암호화폐를 허용합니다.

일반적인 사용 사례로는 대규모 QA를 위한 계정 가입 자동화, 헤드리스 에이전트 및 CI 봇의 일회용 비밀번호 검색, 지속적 통합에서 전화 필수 흐름 검증, 무중단 SMS 수신이 필요한 Telegram 또는 WhatsApp 계정을 위한 전용 장기 번호 대여, 가상·실물·프리미엄 통신사 등급을 명시적으로 제어하면서 190개 이상의 국가에 걸친 지리적 분산 인증 구동 등이 있습니다.

인증

API는 쿠키 기반 세션 인증을 사용합니다. 프로그래밍 방식으로 인증하려면:

  1. 시드 문구를 담아 /auth-api.php로 POST 요청을 전송하십시오
  2. 응답에서 세션 쿠키 저장
  3. 이후 모든 API 요청에 쿠키를 포함하십시오
POST /auth-api.php

시드 문구로 인증하여 세션을 설정하십시오.

파라미터유형필수설명
actionstring필수"login"이어야 합니다
seedstring필수16자리 액세스 시드 (예: AbC3-dEf4-gHj5-kLm6)
cURL
Python
JavaScript
# Login and save session cookie curl -X POST https://smsnokyc.com/auth-api.php \ -d "action=login&seed=AbC3-dEf4-gHj5-kLm6" \ -c cookies.txt
import requests session = requests.Session() resp = session.post("https://smsnokyc.com/auth-api.php", data={ "action": "login", "seed": "AbC3-dEf4-gHj5-kLm6" }) data = resp.json() print(data) # {"success": true, "user": {...}} # session object now holds the cookie for all future requests
const resp = await fetch("https://smsnokyc.com/auth-api.php", { method: "POST", credentials: "include", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: "action=login&seed=AbC3-dEf4-gHj5-kLm6" }); const data = await resp.json(); console.log(data); // {success: true, user: {...}}
성공 응답
{ "success": true, "user": { "id": 42, "prefix": "AbC3", "balance": "74.50" } }
오류 응답
{ "success": false, "error": "Invalid seed." }

기본 URL

모든 API 엔드포인트는 다음을 기준으로 합니다:

https://smsnokyc.com/api.php?action={action}

모든 응답은 JSON 형식입니다. POST 엔드포인트는 application/jsonapplication/x-www-form-urlencoded 요청 본문을 모두 허용합니다.

요청 속도 제한

API에는 다음과 같은 속도 제한이 적용됩니다:

엔드포인트한도유효 시간
인증5회 시도15분
기타 모든 엔드포인트고정 한도 없음

요청 횟수 제한: 인증은 15분당 5회로 제한됩니다. 다른 엔드포인트에는 현재 제한이 없지만 과도한 사용 시 스로틀링이 적용될 수 있습니다. 적절한 요청 간격을 유지해 주세요.

오류 처리

모든 오류는 <code>error</code> 필드가 포함된 JSON 객체를 반환합니다:

{ "error": "Description of what went wrong" }
HTTP 코드의미
200성공 (애플리케이션 수준 오류는 응답 본문 확인)
403유효하지 않은 CSRF 토큰
405잘못된 HTTP 메서드 (예: POST 전용 엔드포인트에 GET 사용)
429요청 속도 제한 초과

일반적인 애플리케이션 수준 오류:

오류원인
"Login required"세션이 만료되었거나 인증되지 않았습니다
"Insufficient balance"잔액 부족 — needhave 필드 포함
"Service not available for this country"선택한 국가에 재고 없음 또는 서비스 비활성
"Missing country or service"필수 파라미터가 제공되지 않았습니다

국가 목록

GET /api.php?action=countries

가상 번호가 있는 모든 활성 국가를 반환합니다. 인증이 필요하지 않습니다.

cURL
Python
JavaScript
curl https://smsnokyc.com/api.php?action=countries
resp = session.get("https://smsnokyc.com/api.php", params={"action": "countries"}) countries = resp.json() for c in countries: print(c["code"], c["name"])
const resp = await fetch("https://smsnokyc.com/api.php?action=countries"); const countries = await resp.json();
응답
[ { "id": 1, "code": "us", "name": "USA" }, { "id": 2, "code": "gb", "name": "UK" }, { "id": 3, "code": "de", "name": "Germany" } ]

서비스 목록

GET /api.php?action=services&country={code}

특정 국가에서 이용 가능한 서비스를 가격 및 재고와 함께 반환합니다. 국가 코드 없이 호출 시 가격 정보 없이 모든 서비스를 반환합니다.

파라미터유형필수설명
countrystring선택 사항ISO 3166-1 alpha-2 국가 코드 (예: us, gb, de)
응답 (국가 포함)
[ { "id": 12, "name": "WhatsApp", "slug": "whatsapp", "icon_code": "WA", "icon_color": "#25d366", "category": "social", "price": "0.35", "stock": 847 } ]

통신사 목록

GET /api.php?action=operators&country={code}

특정 국가에서 이용 가능한 통신사(캐리어)를 반환합니다. 각 통신사에는 유형과 기본 서비스 가격에 적용되는 가격 배수가 있습니다.

파라미터유형필수설명
countrystring필수ISO 3166-1 alpha-2 국가 코드
응답
[ { "id": 5, "name": "T-Mobile", "type": "physical", "price_multiplier": "1.50", "icon_slug": "tmobile", "icon_domain": "t-mobile.com" } ]

통신사 유형: virtual — VoIP 번호, 가장 저렴, 일부 서비스에서 차단될 수 있음. physical — 실제 SIM 카드, 높은 성공률. premium — 가장 빠른 전송(~10초), 최고 성공률.

번호 구매 (SMS 인증)

POST /api.php?action=buy

1회용 SMS 인증을 위한 가상 번호를 구매하십시오. 번호는 20분간 활성화됩니다. SMS가 수신되지 않으면 잔액이 자동으로 환불됩니다.

파라미터유형필수설명
countrystring필수국가 코드 (예: us)
service_idinteger필수서비스 목록의 서비스 ID
operator_idinteger선택 사항통신사 목록의 통신사 ID. 기본 통신사 사용 시 생략하십시오.
cURL
Python
JavaScript
curl -X POST https://smsnokyc.com/api.php?action=buy \ -b cookies.txt \ -H "Content-Type: application/json" \ -d '{"country":"us","service_id":12,"operator_id":5}'
resp = session.post("https://smsnokyc.com/api.php?action=buy", json={ "country": "us", "service_id": 12, "operator_id": 5 }) order = resp.json() print(f"Order #{order['order_id']} — ${order['price']}")
const resp = await fetch("https://smsnokyc.com/api.php?action=buy", { method: "POST", credentials: "include", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ country: "us", service_id: 12, operator_id: 5 }) }); const order = await resp.json();
성공 응답
{ "success": true, "order_id": 1847, "price": 0.53, "balance": "73.97" }
오류: 잔액 부족
{ "error": "Insufficient balance", "need": 0.53, "have": "0.10" }

주문 목록

GET /api.php?action=orders

전화번호 및 SMS 코드를 포함한 최근 주문 50건을 반환합니다. 이 엔드포인트를 폴링하여 활성 주문의 수신 SMS 코드를 확인하세요.

응답
[ { "id": 1847, "price": "0.53", "status": "completed", "phone_number": "+12025551234", "sms_code": "847293", "created_at": "2026-04-09 14:32:00", "country_code": "us", "country_name": "USA", "service_name": "WhatsApp", "operator_name": "T-Mobile" } ]

주문 상태: active — SMS 대기 중. completed — SMS 수신 완료. cancelled — 사용자가 취소. refunded — 자동 환불 처리(시간 초과 전 SMS 미수신). expired — 시간 초과.

대여 가격 조회

GET /api.php?action=rental_price&country={code}&operator_id={id}&duration={days}

특정 통신사에서 지정 기간 동안 전용 번호를 대여하는 가격을 조회합니다.

파라미터유형필수설명
countrystring필수국가 코드
operator_idinteger필수통신사 ID
durationinteger필수대여 기간(일): 7, 14, 30 또는 90
응답
{ "price": "12.50", "duration": 30, "operator": "T-Mobile", "type": "physical", "country": "USA" }

번호 대여

POST /api.php?action=rental_buy

하나 이상의 전용 전화번호를 대여하십시오. 대여 기간 동안 번호는 귀하만 단독으로 사용하며 무제한 수신 SMS를 받을 수 있습니다.

파라미터유형필수설명
countrystring필수국가 코드
operator_idinteger필수통신사 ID
durationinteger필수7일, 14일, 30일 또는 90
qtyinteger선택 사항대여할 번호 수 (1~10, 기본값: 1)
성공 응답
{ "success": true, "order_ids": [1848, 1849], "total": 25.00, "qty": 2, "unit_price": 12.50, "duration": 30, "balance": "49.50" }

사용자 정보 조회

GET /api.php?action=user

현재 사용자의 계정 정보와 잔액을 반환합니다. 인증 상태와 사용 가능한 자금을 확인할 때 사용하세요.

인증됨
{ "logged_in": true, "id": 42, "prefix": "AbC3", "balance": "74.50" }
인증되지 않음
{ "logged_in": false }

전체 워크플로우 예시

인증, 서비스 검색, 번호 구매, SMS 코드 폴링까지 수행하는 전체 Python 예제입니다.

Python
import requests, time BASE = "https://smsnokyc.com" SEED = "AbC3-dEf4-gHj5-kLm6" s = requests.Session() # 1. Authenticate s.post(f"{BASE}/auth-api.php", data={"action": "login", "seed": SEED}) # 2. Check balance user = s.get(f"{BASE}/api.php?action=user").json() print(f"Balance: ${user['balance']}") # 3. Get services for USA services = s.get(f"{BASE}/api.php?action=services&country=us").json() whatsapp = next(svc for svc in services if svc["name"] == "WhatsApp") print(f"WhatsApp: ${whatsapp['price']} ({whatsapp['stock']} in stock)") # 4. Buy a number order = s.post(f"{BASE}/api.php?action=buy", json={ "country": "us", "service_id": whatsapp["id"] }).json() print(f"Order #{order['order_id']} created") # 5. Poll for SMS code for _ in range(60): orders = s.get(f"{BASE}/api.php?action=orders").json() my_order = next(o for o in orders if o["id"] == order["order_id"]) if my_order["sms_code"]: print(f"SMS code: {my_order['sms_code']}") print(f"Phone: {my_order['phone_number']}") break print("Waiting for SMS...") time.sleep(5) else: print("Timeout — balance will be refunded automatically")

자주 묻는 질문

SMSNoKYC 인증 API는 무엇을 위한 것인가요?

사이트와 같은 목록을 당신 자신의 코드에 엽니다. 190개가 넘는 나라의 가상 번호를 일회성 OTP 인증과 7~90일 대여에 쓸 수 있습니다. 단순한 JSON REST 인터페이스로 앱을 둘러보고, 실시간 가격을 읽고, 번호를 예약하고, 수신 코드를 가져오고, 실패한 활성화를 환불할 수 있습니다 — KYC 없음, 청구는 암호화폐로만.

API 키나 OAuth 토큰이 필요한가요?

아니요. 인증은 세션 쿠키입니다. 16자 접근 문구를 한 번 POST로 /auth-api.php에 보내고, 이후 반환된 쿠키를 매 호출마다 실어 보내면 됩니다. 발급·교체·폐기할 것이 없습니다 — 세션마다 한 번 로그인하면 쿠키가 살아 있는 동안 로그인 상태가 유지됩니다.

API 요금은 얼마인가요?

API 호출은 무료입니다 — 월 요금도, 구독도, 최소 물량도 없습니다. 번호 단위로만 지불합니다. 일회성 활성화는 0.05달러부터, 전용 대여는 7일에 몇 달러부터. 모두 선불 잔액에서 빠지며, 문자를 한 번도 받지 못한 활성화는 저절로 환불됩니다.

어떤 언어와 프레임워크가 호출할 수 있나요?

HTTPS 요청을 보낼 수 있는 것이면 무엇이든 됩니다 — Python(requests, httpx), Node.js(fetch, axios), Go, PHP, Ruby, Java, C#, Bash의 cURL 등. 문서에는 cURL, Python, JavaScript로 바로 복사해 쓰는 예제가 있고, /openapi.json의 완전한 OpenAPI 3.0 파일로 원하는 언어의 타입 지정 클라이언트를 생성할 수 있습니다.

인증 코드가 끝내 오지 않으면 어떻게 되나요?

각 활성화에는 20분의 창이 있습니다. 창이 닫히기 전에 아무것도 오지 않으면 주문은 저절로 취소되고 전액이 잔액으로 돌아옵니다 — 티켓도, 수동 재시도도 없습니다. 환불된 잔액은 곧바로 다른 번호에 쓸 수 있고, 더 나은 성공률을 위해 다른 사업자 등급(가상·실물·프리미엄)에 돌릴 수도 있습니다.

API에 속도 제한이 있나요?

문구 추측을 막기 위해 로그인은 IP당 15분에 5회로 제한됩니다. 나머지 — 목록, 구매, 주문, 대여 — 는 지금은 엄격한 상한이 없지만 합리적인 간격을 유지하세요. /api.php?action=orders를 3~5초마다 조회하면 문자를 읽기에 차고 넘치며, 초당 약 10요청을 넘는 지속적인 폭주는 WAF 계층에서 제한될 수 있습니다.