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.
K-OTPSMSDemo
- The code arrives here.
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.