OTP Dashboard
← Back to OTP Service

Login

First time? Set your password

Forgot password?

OTP Dashboard

0
OTP Credits
0
OTPs Sent
0
Delivered
0
Failed

Quick Start

Your API key is ready. Two API calls to add OTP verification to your app:

1. POST /otp/send → sends a 6-digit code via SMS 2. POST /otp/verify → checks the code the user entered

See the Integration Guide for copy-paste code.

OTP Usage

0
Total Sent
0
✅ Delivered
0
❌ Failed
Delivery Rate

Recent Verifications

TimeRecipientStatus

Integration Guide

Copy and paste this into your project. That's the entire integration.

Step 1: Send OTP when user clicks "Login"

const res = await fetch('https://api.ekukhulenilabs.co.za/otp/send', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-Api-Key': 'YOUR_API_KEY' }, body: JSON.stringify({ channel: 'sms', recipient: userPhoneNumber, app_name: 'YourApp' }) }); const { otp_id } = await res.json(); // Save otp_id — you need it for step 2

Step 2: Verify the code the user enters

const res = await fetch('https://api.ekukhulenilabs.co.za/otp/verify', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-Api-Key': 'YOUR_API_KEY' }, body: JSON.stringify({ otp_id: otp_id, code: codeUserEntered }) }); const { verified } = await res.json(); if (verified) { // ✅ Log them in }

Your Frontend — just a text box

<input type="tel" placeholder="Phone number"> <button onclick="sendOTP()">Send Code</button> <input type="text" placeholder="Enter 6-digit code" maxlength="6"> <button onclick="verifyOTP()">Verify</button>

Works with any language — JavaScript, Python, PHP, Java, C#. It's just HTTP calls. We handle code generation, SMS delivery, 5-minute expiry, brute-force protection, and multi-provider failover.

API Key

Your API Key

Include this in every request as the X-Api-Key header.

⚠️ Keep it secret

Never expose your API key in frontend code or public repos. Use it server-side only.

Billing

0
OTP Credits Remaining

Top Up

MoMo: Send to 7817 0242, reference:
Bank: FNB Eswatini, Acc: 63130043093, Branch: 282064
WhatsApp: +268 7953 1182 with proof of payment

Pricing

100 OTPs
E85 / R85
500 OTPs
E400 / R400
1,000 OTPs
E700 / R700
2,000 OTPs
E1,400 / R1,400

Credits never expire. E0.85 per OTP.

API Documentation

Base URL

https://api.ekukhulenilabs.co.za

POST /otp/send

Send a 6-digit OTP via SMS. Costs 1 credit.

Headers: X-Api-Key: YOUR_KEY, Content-Type: application/json Body: { "channel": "sms", "recipient": "0761234567", "app_name": "MyApp" } Response: { "success": true, "otp_id": "abc123", "expires_in": 300 }

POST /otp/verify

Verify the code. Max 5 attempts. Expires in 5 minutes.

Body: { "otp_id": "abc123", "code": "482916" } Success: { "success": true, "verified": true } Wrong: { "success": true, "verified": false, "attempts_remaining": 4 }

GET /otp/balance

Response: { "sms_credits": 95 }

Error Codes

400 — Missing or invalid fields 401 — Invalid or missing API key 402 — Insufficient credits 404 — OTP not found or expired 410 — OTP already used 429 — Too many attempts (max 5)