본문으로 건너뛰기
116
국가
133개 서비스, 400개 통신사 회선, 15,400개 이상의 실시간 가격. 암호화폐만 사용, 신원 확인 전혀 없음.
번호 대여하기

개발자를 위한 SmsNoKYC: 스크립트로 다루는 SMS 인증

하나의 JSON 인터페이스로 전체 인증 흐름을 스크립트로 작성하세요. 116개국, 133개 서비스, 400개 통신 경로, 15,400개 이상의 실시간 가격이 몇 개의 엔드포인트 뒤에 있습니다: 번호 할당, 수신 코드 확인, 최대 90일 렌탈 보유, 암호화폐 결제. 여기에는 API 키가 존재하지 않습니다 — 시드 문구가 제시할 유일한 인증 수단입니다.

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

인증이 필요합니다. 세션은 쿠키를 기반으로 합니다. 시드 문구로 로그인하면 — 사이트를 통해서든 아래 문서화된 인증 엔드포인트를 직접 호출해서든 — 이후 모든 요청이 자동으로 그 세션을 이어받습니다.

스크립트, 파이프라인, 자율 에이전트를 위해 설계됨

기존 OTP 업체들은 첫 요청을 보내기 전에 계약 서명, 규제 준수 심사, 월 최소 사용량 약정을 요구합니다. SmsNoKYC는 순서를 뒤집습니다: 시드 문구를 발급받고, Bitcoin, Monero, Ethereum, Litecoin, TRON, USDT, SOL 등 8종의 암호화폐 중 하나로 $25부터 잔액을 충전한 뒤, 이미 사용 중인 HTTPS 클라이언트에서 바로 호출을 시작하세요. 요금은 15,400개 이상의 실시간 가격 포인트에 걸쳐 번호당 $0.01부터 종량제로 청구됩니다.

실무에서 이 엔드포인트는 CI 내부의 가입 플로우를 검증하고, 헤드리스 브라우저와 스크래퍼 플릿에 OTP 코드를 공급하며, 7~90일 전용 임대로 Telegram이나 WhatsApp 계정을 유지시키고, virtual·physical·premium 세 등급의 400개 통신사 회선을 명시적으로 제어하며 116개국에 걸쳐 인증을 분산시킵니다. AI 에이전트는 agents 페이지에 설명된 네이티브 MCP 서버를 통해 동일한 카탈로그에 접근하므로, 도구를 사용하는 모델이 별도의 연동 코드 없이 번호를 구매하고 코드를 읽을 수 있습니다.

인증

세션은 쿠키 기반입니다 — 발급하거나 교체할 베어러 키가 없습니다. 프로그래밍 방식 로그인은 세 단계로 이루어집니다:

  1. 시드 문구를 /auth-api.php로 POST
  2. 응답에 설정된 쿠키를 캡처하세요
  3. 이후의 모든 호출에 해당 쿠키를 첨부하세요
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

모든 엔드포인트는 하나의 URL 패턴을 따릅니다.

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

응답은 모든 경우에 JSON 형식으로 전달됩니다. POST 본문은 application/json 또는 application/x-www-form-urlencoded 중 어느 쪽으로도 보낼 수 있습니다.

요청 속도 제한

요청량은 다음 두 가지 규칙을 따릅니다.

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

속도 제한: 로그인은 15분당 5회 시도까지 허용됩니다. 다른 모든 엔드포인트는 현재 고정 한도가 없지만, 지속적인 남용은 상위 단계에서 제한될 수 있습니다. 호출 간격을 합리적으로 두세요.

오류 처리

모든 오류는 error 필드를 포함한 JSON 객체로 반환됩니다.

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

가장 자주 마주치게 될 애플리케이션 수준 오류:

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

국가 목록

GET /api.php?action=countries

현재 재고를 보유한 모든 국가를 나열합니다 — 최근 집계 기준 116개국. 공개 엔드포인트이며 세션이 필요하지 않습니다.

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}

특정 국가의 서비스 목록을 가져오며 실시간 가격과 재고가 포함됩니다. country 매개변수를 생략하면 가격 없이 133개 서비스 전체 카탈로그를 받습니다.

파라미터유형필수설명
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

단일 인증을 위해 번호를 예약합니다. 20분간 당신 소유로 유지되며, 그 시간 안에 메시지가 오지 않으면 요금이 자동으로 잔액에 환불됩니다.

파라미터유형필수설명
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

가장 최근 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 — 메시지 수신 대기 중. completed — 코드 수신 완료. cancelled — 사용자가 종료함. refunded — 무응답 시간 초과 후 자동으로 환불됨. 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

하나 이상의 전용 번호를 확보합니다. 각 번호는 7일에서 90일의 전체 기간 동안 오직 당신에게만 속하며, 어떤 서비스에서든 무제한 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 }

엔드투엔드 스크립트

아래 스크립트는 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는 어떤 작업을 제공하나요?

대시보드가 하는 모든 일을 스크립트도 할 수 있습니다: 116개국과 133개 서비스의 카탈로그를 가져오고, 400개 통신사 회선에 분산된 15,400개 이상의 실시간 가격 포인트를 조회하고, 일회성 OTP용 번호를 할당하고, 수신되는 즉시 코드를 읽고, 7·14·30·90일 전용 임대를 유지하고, 모든 주문을 감사할 수 있습니다. 이 모든 것은 HTTPS 상의 순수 JSON이며 암호화폐로 청구되고, 전체 흐름 어디에도 신원 확인 단계가 없습니다.

첫 요청 전에 생성해야 할 API 키가 있나요?

생성할 것도, 교체할 것도 없습니다. 시드 문구 자체가 인증 정보입니다: /auth-api.php에 한 번 POST하고, 서버가 반환하는 세션 쿠키를 보관한 뒤, 이후 모든 호출에 그 쿠키를 함께 보내세요. 키 대시보드도, OAuth 핸드셰이크도, 만료 일정도 없습니다 — 시드 하나가 세션 하나를 여는 것이 이 모델의 전부입니다.

API 자체 이용에는 비용이 얼마나 드나요?

이용에는 비용이 들지 않습니다 — 월 요금도, 등급도, 최소 호출량 제한도 없습니다. 번호 단위로만 지불하시면 됩니다: 1회성 인증 코드는 $0.01부터 시작해 보통 $0.20~$1 사이이며, 전용 렌탈은 7일 약정 $4.20부터 시작합니다. 잔액은 8개의 암호화폐로 충전할 수 있으며(최소 충전액 $25), SMS를 받지 못한 활성화는 사용자의 별도 조치 없이 자동으로 환불됩니다.

어떤 언어에서든, 또는 AI 에이전트에서든 연동할 수 있나요?

HTTPS를 지원하는 것이라면 무엇이든 사용할 수 있습니다: Python, Node.js, Go, Rust, PHP, Ruby, Java, C#, 또는 셸 스크립트 안의 순수 cURL까지도 가능합니다. 레퍼런스에는 cURL, Python, JavaScript로 작성된 실행 가능한 예제 코드가 포함되어 있으며, /openapi.json에서는 타입이 지정된 클라이언트를 생성할 수 있는 완전한 OpenAPI 3.0 문서를 제공합니다. 자율 에이전트도 기본적으로 지원됩니다 — 전용 MCP 서버를 통해 도구를 사용하는 모델이 스스로 번호를 구매하고 코드를 수집할 수 있으며, /agents 페이지에서 설정 방법을 안내합니다.

구매한 번호에 응답이 없으면 어떻게 되나요?

손해 볼 일은 없습니다. 모든 활성화는 20분의 수신 대기 시간을 가지며, 메시지 없이 종료되면 플랫폼이 자동으로 주문을 취소하고 전액을 잔액으로 환불합니다. 티켓도, 양식 작성도, 지원팀 대기도 필요 없습니다. 바로 다시 구매하되, 물리적 또는 프리미엄 등급으로 올리면 대개 도착률이 높아집니다.

제한이 걸리기 전까지 얼마나 자주 폴링할 수 있나요?

로그인에만 엄격한 상한이 있습니다: IP당 15분에 5회 시도로, 시드 추측을 막기 위한 조치입니다. 카탈로그, 구매, 주문, 렌탈 엔드포인트에는 현재 고정된 쿼터가 없습니다. 요청 빈도는 합리적으로 유지하세요 — 주문 엔드포인트를 3~5초마다 확인하면 모든 코드를 놓치지 않습니다 — 그리고 지속적인 트래픽은 초당 약 10요청 이하로 유지하세요. 더 큰 버스트는 엣지 레이어에서 지연될 수 있습니다.

배포하기

홈페이지에서 시드를 받고, $25 이상의 암호화폐를 충전하면 첫 인증 코드까지 다섯 번의 요청만 남습니다. 스크립트 대신 LLM으로 구축하시나요? SmsNoKYC MCP 서버로 모델을 연결하거나 AI 에이전트 통합 가이드를 따라가세요 — 116개국, 133개 서비스의 전체 카탈로그가 하나의 도구 호출이 됩니다.

레퍼런스에서 다루지 않는 부분은 헬프 센터에서 확인할 수 있으며, SMS 용어집은 전문 용어를 풀어 설명하고, 실시간 활동은 네트워크가 움직이는 모습을 보여줍니다. 로그인 후에는 앱 내 티켓을 통해 지원을 받으실 수 있습니다.