Try it now

Send yourself a code. No SMS, no signup.

Walk through the real issue → verify flow on a simulated phone. Each step shows the request your app would make and the response it would get.

Demo: no SMS is sent. Your number never leaves this page.

Step 1

Request a code

A Korean mobile number (010-…) or an international number starting with +.

K-OTPSMSDemo
  1. The code arrives here.

Step 2

Enter the code

Request a code first.

The real API call

POST /v1/issuewaiting
# Step 1: issue a code# Server side: use an sk_ key and drop the Origin headercurl https://api.k-otp.dev/v1/issue \  -H "Authorization: Bearer pk_..." \  -H "Origin: https://your-app.example" \  -H "Idempotency-Key: signup-<uuid>" \  -H "Content-Type: application/json" \  -d '{    "phoneNumber": "01012345678",    "purpose": "signup"  }'# Response: waiting for the demo…{  "issueId": "…",  "expiresAt": "…",  "attemptsRemaining": 5,  "queuedAt": "…"}

Your number is masked here; a real request carries the full number. Install the SDK with npm i @k-otp/sdk; cURL works without it.

Ready to send real codes?

Create an account, copy your pk_ and sk_ keys, and go live in minutes.